同步操作将从 Moe/TMOE 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
章節 | 簡介 | 檔案 |
---|---|---|
序章前篇 | * | lite.md |
序章後篇:歷史與發展 | 瞭解不同版本之間的區別,並對序章前篇的內容進行拓展 | readme.md |
第一章 | * | 1.md |
第二章 | * | 2.md |
第三章 | * | 3.md |
請注意:由於 edition 2022 在設計以及開發過程中發生了變更,所以本文件描述的內容可能與實際情況不一樣。
比如: “toml 配置檔案” 可能會變成 “sqlite3 資料庫”;
tmoe 可能會適配某個特殊的發行版 -> 可能不會。
中文 | English
準確來說,我們接下來要討論的是版次(edition),而不是版本(version)。
考慮到天萌幾乎每年都會有一個幅度比較大的更新,因此將其混為一談,倒也沒什麼不妥。
沒什麼人用的版本 QaQ
版本 | 生命週期 |
---|---|
2019 | 2020-03-22 之前 |
在這個版本中,我帶來了兩個小夥伴:"debian" 和 "debian-i"
一開口就是兩個“老古董”了。 此處指的是"debian"命令,而非"debian"發行版。
在該版本中,天萌只支援 debian 系列的發行版。
作用 | 命令 |
---|---|
啟動預設的容器 | debian |
啟動天萌工具箱/管理器 | debian-i |
在 2022 版本中,它們成為了可選(非必須)的命令。
版本 | 生命週期 |
---|---|
2020 | 2020-03 下旬 ~ 2020-10 上旬 |
開發者在此期間,為本專案加入了大量的新功能,幾乎每週都有一些新功能。
開發者已經成為了無情的加功能機器了。
注:後來有蠻多功能都被砍掉了。
版本 | 生命週期 |
---|---|
2021 | 2020-10 中旬 ~ |
如果說 2020 版加強的是 gnu/linux 環境的生態的話,那麼 2021 版加強的就是容器本身的生態了。
在 2021 年 1 月份的時候,開發者上線了一個里程碑式的新功能: Weekly builds。
您可以直接下載包含 GUI 的映象,並且每週都能下載到最新版。
理論上對所有支援的發行版都能做到自動構建,但是呢!
這得要付出大量的時間、精力和資金去維護。
開發者當初僅測試了三百次左右的自動構建任務,就花掉了半個月的時間。
您可能不知道的冷知識:
在自動構建過程中,最經常出錯的發行版是 fedora-rawhide
2021-guide
注:2021 版的用法與 2022 版不太相同。
本次更新可以說是天萌自開發以來變化最大的一次,也是難度最大的一次。
開發者將使用神奇且強大的 rust 來重寫一些功能,有些功能可能需要理解深層次的實現原理才能搞定。
本次更新將完全不相容舊版本,對於舊版本,您需要使用天萌內建的版本遷移工具進行操作。
偷偷透露 2022 版可能會實現的功能。
在不同平臺間同步配置。
save 儲存 |
load 讀取 |
settings 設定 |
載入存檔 1,儲存到存檔 4, 相當於將 存檔 1 複製到 存檔 4。
savedata | time |
---|---|
1: linux(current) | 2021-10-21 12:25 |
2: wsl | empty |
3: mac | empty |
4: bsd | empty |
5: nix | empty |
6: guix | empty |
7: redox | empty |
8: 路由器(openwrt) | empty |
9: 路由器(entware) | empty |
10: 手錶(android) | empty |
99.. | * |
注: 2022 版的 tmoe & tmm 不支援 MacOS, 但是 tome & zsh-i 可能會適配 MacOS。
同時,2022 版還有可能會適配 nixos 等非標準的 linux 發行版。
比如說 :
zh-HK: 菠蘿
zh-SG: 黃梨
zh-TW: 鳳梨
2022 版將最佳化 zh-TW 和 zh-HK,但可能不會最佳化 zh-SG
抱歉了,新加坡的朋友們。
注:在 2021 版中,繁體在大部分情況下都會自動回撥為簡體。
真的非常抱歉,2022 版就不會這樣子啦!
由於新版尚未釋出,因此開發者將結合舊版存在的兩個特性,並與新版進行對比,帶您一睹為快。
介紹 | 2019~2020 版 | 2021 版 | 2022 版 |
---|---|---|---|
配置檔案的地位 | 低 | 中等(注 1) | 佔據主導地位(注 2) |
錯誤處理機制 | 隨便糊的 | 只比隨便糊好一點點 | 精心設計,詳見第 2 章 |
對注 1 和注 2 的內容進行分析,詳見(注 3)
在 2021 版中,基本上絕大多數重要的功能都可以透過配置檔案進行修改。
比如說 startvnc
和 容器的基礎配置。
此前的版本雖然也行,但是並沒有像該版本一樣突出了重點。
開發者在細節方面做了很多工作,目的是讓配置檔案變得更直觀、更全面。
而此前的版本更強調在 TUI 裡進行修改,您基本上不需要了解配置原理。
2022 版將擴充套件配置檔案的覆蓋範圍。
從儲存基本程式配置,到資料索引,再到一些特殊的資料內容。
開發者感覺自己拿配置檔案做了資料庫應該做的事情。
新版的很多功能都將取消掉動態獲取的方式,而是轉為以配置檔案為主導的靜態獲取方式。
在此前的版本中,為了保證獲取到的連結始終都為最新的,開發者使用了動態獲取的方式。
簡單來說,就是先爬取網站資料,再對資料進行分析,最後提取出資料。
動態獲取存在很多弊端,比如說分析可能會出錯,連結可能會失效,維護起來可能會不開心 (ಥ﹏ಥ)。
錘桌!!!(好孩子不要學)
從表面上來看,使用配置檔案來靜態獲取的方式與動態獲取沒什麼不同,都需要先儲存資料,再分析資料,最後提取資料。
但是呢?重點在分析上。
第三方網站的資料可能經常發生改動,開發者自己寫的資料結構也可能經常改動。
區別在於:第三方網站的資料發生改動是難以預測的,而自己寫的資料結構在自己的掌控範圍內。
在這種情況下,資料分析工作的內容就截然不同了。
其實在 2021 版中就引入了(注 2)中的靜態獲取的相關概念,只不過 2022 版覆蓋的範圍更廣,範圍從Weekly builds 擴充套件到基礎容器。
在 2021 版本的 Weekly builds 中,您每次獲取資源前,都會自動更新相應版本的索引資訊。
一方面是為了檢測源伺服器是否正常連線,另一方面是為了保證獲取到資訊是最新的。
2022 版將不再是這種完全自動化更新的策略了,您可以自定義更新週期,也可以不更新。
但是長時間不更新的話,可是會出問題的。
在天萌管理器中,容器按更新頻率可以分為六類,分別是每日、每週、每半月、每月、每年和不定時。
“每年?應該不是我吧?”
一個叫做 “riscv64” 的小可愛在空無一人的小角落裡探頭探腦地自問道。
在您完成上面的閱讀之後,不妨去思考一下,在天萌的 2022 版中,超過一週時間沒有更新索引資料會發生什麼事。
經常有人拿某知名專案和天萌做對比。
實際上,天萌的設計思路並不會比它差啊!
舉個例子:
在 2020 年 8~9 月份,天萌開發者對於某問題設計並完成了新的解決方案,而那個知名專案到 2021 年才實現了與天萌類似的做法。
天萌現階段不需要比別人做得更好,只需要做好自己就可以了。
開發者現在已經在規劃新版本了哦!相信未來一定會變得更好的。
您可能不知道的冷知識:
在 2021 年 2 月至 9 月份,天萌在德國地區的所歡迎程度,遠超過美國和中國。
詳見 序章前篇
對於 2021 及其之前的版本(以下簡稱:舊版),看一下 ~/.local/share/tmoe-linux/MANAGER_DEPENDENCIES.txt 或者是 /usr/local/etc/tmoe-linux/TOOL_DEPENDENCIES.txt。
txt 檔案裡面包含了安裝過程中需要的一些依賴資訊。
有些功能在沒有相關依賴的情況下是不能執行的。
舉個例子:
比如說您要執行 zsh,所以您裝了 zsh。
您想要某個外掛正常執行,所以您裝了個某個外掛的相關依賴。
在沒有外部依賴的情況下,有兩種解決方法,一是自己手動實現,二是不啟用相關功能。
舊版的依賴確實很多,關於這點我要向所有天萌的使用者道歉。
新版就不會這樣子了。
比如說:git
依賴
開發者可以呼叫 git2-rs
來手動實現一個簡化版的 git
的客戶端,這樣子就不需要安裝原系統的 git 了。
當然更簡單的做法是直接靜態編譯原版的git
。
後期注:為了不引入 openssl-dev
作為編譯時依賴,故 2022 版可能不會包含用 rust 實現的 git 客戶端。
2021 及其之前的版本需要 curl
您如果在安裝過程中,遇到了系統沒有 curl 的問題,那就看舊版的 readme 吧!
請注意:2022 版的 tmm/tmoe 的可執行檔案的本體不是指令碼,而是編譯好的二進位制檔案。
對於不同架構 & 不同平臺來說,所需的二進位制檔案是不一樣的。
因此 2022 版將保留指令碼安裝的方式。
當您使用指令碼來安裝時,大致的流程為:
注:使用支援 mermaid 的 markdown 編輯器 可以渲染出流程圖。
在執行指令碼前,您可以設定三個臨時環境變數,也可以跳過。
# 臨時的快取目錄。 若未設定,則預設值為 $TMPDIR/tmp/tmm
# 第一次安裝 tmm 時,tome 的二進位制檔案會快取到臨時目錄。
TMM_TMP=~/.cache/tmm
# 當該變數的值為有效字串(語言-區域)時,會跳過語言選擇介面。
# 當您從 github 的 beta 分支安裝時,預設為 en-US
# 當您從 gitee 的 2 分支安裝時,預設為 zh-CN
TMM_LANG=zh-CN
# 可選值為"jscdn", "cfcdn", "gitee", "us", "lu", "sg", "github", "kr", "jp"
# 下載快取檔案時,首選的映象站/節點。
# 當 TMM_MIRROR 和 TMM_LANG 的值都為空時,預設為 github
# 當 TMM_LANG 的值為 zh-CN 時, 預設為 gitee
# us 為美國節點,sg為 新加坡節點,kr為韓國節點, lu 為盧森堡節點
TMM_MIRROR=gitee
export TMM_TMP TMM_MIRROR TMM_LANG
還有一個永久的變數 TMOE_HOME
用於設定 tmoe 系列軟體的資料檔案所在的目錄
該變數需要寫入當前使用者的預設 shell 的配置檔案
default shell | file |
---|---|
zsh | ~/.zshenv |
bash | ~/.profile |
2022 版 tmoe 預設是為當前使用者安裝,而不是為所有使用者安裝.
因此請不要將其寫入到 /etc/profile 或 /etc/zsh/zshenv (全域性配置)
對於 Linux 使用者, 該變數保持預設即可.
TMOE_HOME="${HOME}/.local/share/tmoe"
對於 Mac OS 使用者,您可以將該值修改為 "${HOME}/Library/Application Support/tmoe"
僅限 2022 及以上的版本
由於開發者還在咕咕咕,所以您得要等好久咯!
章節 | 簡介 | 檔案 |
---|---|---|
上一章 | 一些簡短的說明,方便您快速上手 | lite.md |
下一章 | 結合本章第 2 節,進一步揭開 2022 版的面紗 | 1.md |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。