系統維護

出自 Arch Linux 中文维基

要持續使用 Arch Linux,需要進行系統日常維護,每個用戶都應該及時維護系統。

檢查錯誤[編輯 | 編輯原始碼]

systemd 服務問題[編輯 | 編輯原始碼]

檢查是否有 systemd 服務失敗:

$ systemctl --failed

更多信息請參考使用單元

日誌文件[編輯 | 編輯原始碼]

檢查 /var/log 日誌文件中是否存在錯誤,檢查 systemd 日誌中的高優先級錯誤:

 # journalctl -p 3 -b
注意: 也有重要的錯誤信息的優先級不是 3。

Xorg 的相關錯誤可以查看 Xorg 的故障和修復

備份[編輯 | 編輯原始碼]

把重要數據的備份作為日常維護任務。隨着時間推移,人為的或機械的處理錯誤會導致破壞;存儲數據的介質也必然在某個時刻失效。

其它備份方案可以參考同步和備份程序頁面系統恢復分類包含其它相關文章。

建議通過計時事件自動備份。

配置文件[編輯 | 編輯原始碼]

在編輯任何配置文件前,先保留備份。這樣出問題時可以直接還原。vimemacs 編輯器會自動備份。在更大的範圍內,可以使用配置管理器

對於點文件(即主文件夾內的配置文件),請參考 dotfiles#Tracking dotfiles directly with Git

安裝的軟件包[編輯 | 編輯原始碼]

維護一個所有安裝軟件包的列表,這樣在不得已進行系統重裝時,可以很快恢復到初始環境。

詳情參考備份和恢復已安裝軟件包

pacman 數據庫[編輯 | 編輯原始碼]

參考 pacman/Tips and tricks#Back up the pacman database.

加密元數據[編輯 | 編輯原始碼]

參閱 Data-at-rest encryption#Backup for disk encryption scenarios.

系統和用戶數據[編輯 | 編輯原始碼]

參考 System backup

更新系統[編輯 | 編輯原始碼]

建議日常進行系統完整更新,這樣既能享受到最新的問題修復和安全更新,還可以避免一次更新太多的軟件包,手動處理是分批進行的。從社區尋求幫助時,其他人會假定系統進行了完整更新。

手頭上保留 Arch 安裝盤或其它 Linux 「Live」 環境,這樣有問題時可以進行修正。如果在生產環境使用 Arch,無法接受任何的停機,那麼在更新前請在非關鍵系統上測試新配置文件和軟件包,沒有問題的時候再部署到生產環境。

如果軟件包來自 AUR,請注意更新完整。

升級前的準備[編輯 | 編輯原始碼]

建議升級前訪問 Arch Linux 主頁查看最新消息,或訂閱 RSSarch-announce 郵件列表。如果升級需要不尋常的用戶操作介入時(無法簡單地按照 pacman 的輸出信息處理),以上信息總會給出合適的方法。

在更新內核X.Orgsystemdglibc 等重要軟件之前,查看論壇看是否有被報告的出錯等問題。

有時候系統更新會出現問題,需要用戶立即進行一些手動調整。因此,請不要在重要任務前進行系統更新;而是留出足夠的時間用於應付可能的問題。

提示:可以使用 pacman 鈎子如 informantAUR 來避免在閱讀最新 Arch 新聞前全面更新系統。

避免某些 pacman 命令[編輯 | 編輯原始碼]

避免部分更新,不要運行 pacman -Sy 而是運行 pacman -Syu

一般情況下,避免使用 pacman 的 --force 選項,尤其要避免 pacman -Syu --force 這種可能更新多個軟件包的指令。--force 忽略文件衝突,可能導致文件丟失!如果系統按正常維護,Arch 開發者會給出明確的指導,在 Arch 主頁會有通知。

避免使用 -d 選項,pacman -Rdd package 會在刪除軟件包時跳過依賴關係檢查。如果刪除了系統必要的依賴關係,可能導致系統損壞。

不支持部分升級[編輯 | 編輯原始碼]

Arch Linux 是滾動發行版,新 版本將不斷被推送到源。開發者和信任用戶會按照需要重新構建源中的所有軟件包。如果有本地安裝的版本(例如 AUR 軟件包),需要在它們的依賴關係升級了soname時重新編譯。

也就是說,部分升級是不被支持的。不要使用:

  • pacman -Sy package
  • 或等價命令,如 pacman -Sy 之後再 pacman -S package
  • pacman -Syuw,它和 pacman -Sy 有一樣的風險,因為它會更新 pacman 同步數據庫而不安裝新版本軟件包。

在安裝軟件包前請更新源並升級(總是使用 pacman -Syu)。請注意如果 pacman -Syu 因為某個錯誤而沒有完成升級,最後導致的系統狀態和運行 pacman -Sy 是一樣的。錯誤必須被處理,升級更新要儘快完成。同理請特別注意 IgnorePkgIgnoreGroup 的使用。如果系統安裝了自行編譯的軟件包(如從 AUR 包),在其依賴出現 soname 衝突時用戶必須重新編譯。

如果進行了部分升級,二進制包因為找不到鏈接庫而損壞,不要通過簡單的符號鏈接進行修正。庫升級 soname 是因為它們不再向前兼容。只要 pacman 可以運行,使用更新的源進行 pacman -Syu 就能修復這些問題。

注意更新時的提醒[編輯 | 編輯原始碼]

當升級系統時, 請一定要注意 pacman 輸出的注意信息。 如果有需要用戶手動操作的,請一定要立即搞定。 如果不明白 pacman 輸出的信息, 請去論壇搜索或者看 Arch Linux 首頁的新聞。

處理配置文件更新[編輯 | 編輯原始碼]

pacman 可能會創建 .pacnew.pacsave 文件,這時 pacman 會通知用戶,而用戶需要主動處理這些文件。詳細的操作說明請參考 Pacnew 和 Pacsave 文件

同樣,注意所有你可能會複製或創建的配置文件。如果軟件包提供了一個空配置文件,這個文件被複製到主目錄,請注意查看示例文件是否有更新。

在更新後重啟程序和系統[編輯 | 編輯原始碼]

升級通常不立即應用於運行中的程序。 您必須重新啟動程序才能完全應用升級。

軟件包 archlinux-contrib 提供了一個稱為 checkservices 的腳本,它運行 pacdiff 來合併 .pacnew 文件,然後檢查正在運行且使用過期庫的進程,並提示用戶是否想要重啟它們。

內核很難在重啟前更新。升級內核後重啟系統永遠是最安全的選擇,如果不方便重啟可以通過內核熱補丁在不重啟系統的情況下應用更新。

回退有問題的更新[編輯 | 編輯原始碼]

如果軟件包可能導致問題,軟件包維護者會在更新時給出提示信息。在更新後遇到問題,請先確認 /var/log/pacman.log 中有沒有提醒信息。

提示:可以使用 wat-gitAUR 等工具搜索 pacman 日誌。

然後看看 https://archlinux.org/ 中有沒有新聞,然後再到論壇上查找類似的問題,如果都沒有找到,可到 論壇IRC中發帖求助。

降級軟件包是最後的解決方案。

檢查孤立和未使用軟件包[編輯 | 編輯原始碼]

更新系統後,可能有些軟件包不再需要,或者不再屬於官方軟件倉庫。

pacman -Qtd 命令查找之前作為依賴安裝,現在不再需要的軟件包。如果孤立的包還是需要的,可用修改 安裝原因。如果不再需要,可用將其刪除。

除此之外,有些軟件包可能已經不再屬於遠程倉庫,但是依然還安裝在本地,用 pacman -Qm 命令查找所有這些軟件包。注意此命令會包含手動安裝的軟件,例如 AUR 中的軟件。可以使用 ancient-packagesAUR 來排除尚存在於 AUR 中的軟件包。

使用包管理器安裝軟件[編輯 | 編輯原始碼]

軟件包管理器 pacman 可以比你更好地記錄安裝的文件。如果你手動地安裝軟件,時間一長,就可能忘記安裝了什麼、到底安裝在哪裡、安裝導致的哪些衝突、是否安裝在了錯誤的地方等等問題。

  • 使用 pacman 安裝軟件包中介紹的方法安裝官方軟件包。
  • 如果找不到需要的軟件包,看看 AUR 中有沒有提供軟件包打包腳本。
  • 如果都沒有找到,請學習創建軟件包

要清理自己安裝的文件,可以參考查找不屬於任何軟件包的文件

選擇開源驅動[編輯 | 編輯原始碼]

儘可能地選擇開源驅動。避免私有驅動。大多數時候,開源驅動比私有驅動更加穩定可靠。開源驅動的問題修改起來比較容易快速,但同時私有驅動提供更多的特性和性能,不過也可能帶來穩定性的代價。為了避免這個兩難選擇,可以選擇已知的有很好的開源驅動支持的硬件。關於硬件和開源 Linux 驅動的信息可以在這裡找到:linux-drivers.org

謹慎使用非官方或測試不足的軟件包[編輯 | 編輯原始碼]

在使用 AUR 或非官方軟件倉庫中的軟件包時應有預防措施。大部分軟件包都是由用戶提供的,並不能提供和官方軟件倉庫相同的質量。謹慎使用 AUR 助手,它們簡化了 AUR 中的軟件包的安裝過程。在編譯和安裝 AUR 中的軟件包之前,務必檢查軟件包的 PKGBUILD 確保其中不含有錯誤或惡意的代碼。

為簡化維護,請限制第三方軟件包的使用。周期性地檢查真正在使用的包,並移除實際上沒有使用的包(或安裝官方維護的版本)。pacman 維護提供了清理軟件的方法。在系統升級後,可使用 rebuild-detector 來尋找可能需要重新構建的第三方包。

更新鏡像列表[編輯 | 編輯原始碼]

鏡像的質量會隨着時間而變化,有些鏡像會下線或者同步和下載出問題,所以請注意更新 pacman 的鏡像列表,詳情參考鏡像

清理文件系統[編輯 | 編輯原始碼]

檢查磁盤空間的使用狀況,刪除占用空間較大的無用文件:

軟件包緩存[編輯 | 編輯原始碼]

/var/cache/pacman/pkg/ 刪除不需要的 .pkg 可以減少空間占用。詳情參考清理軟件包緩存

不需要的軟件包[編輯 | 編輯原始碼]

從系統裡面刪除不需要的軟件包可以減少空間占用和維護難度。詳情參考刪除孤立軟件包

舊配置文件[編輯 | 編輯原始碼]

舊的配置文件可能和新軟件版本不兼容,所以請定期清理和更新配置文件,尤其是主目錄和 ~/.config。在重新安裝或共享 /home 時,注意下面文件夾:

  • ~/.config/ -- 軟件保存配置文件的地方
  • ~/.cache/ -- 程序緩存大小可能持續增加
  • ~/.local/share/ -- 可能有舊文件

參考 XDG Base Directory support

為了幫助清理 home 目錄,建議維護一份不需要的文件列表並定期清理,例如使用 rmshit.py

rmlint 也可以用來查找不需要的重複文件、空文件和損壞的軟鏈接。

破損的軟鏈接[編輯 | 編輯原始碼]

系統中可能存在老的,損壞的軟鏈接,應該刪除它們。方法可以參考 這裡這裡。但是不應該盲目刪除所有損壞的軟鏈接,因為其中一些是有用處的[1]

下面命令可以列出所有有問題的軟鏈接,可以檢查並刪除列表中的文件。

  # find / -xtype l -print

技巧[編輯 | 編輯原始碼]

使用經過驗證的軟件包[編輯 | 編輯原始碼]

Arch 的滾動發行讓用戶可以使用最新的功能和上游更新,但是這也增加了系統維護的難度。為了增加穩定性,可以儘量使用經過驗證的穩定版本。這些軟件包不太容易在升級時遇到問題。選用具有活躍開發社區的軟件,選用用戶能力更出眾的軟件,這樣在出問題時更容易獲得幫助。

避免使用測試倉庫,這些軟件包都是實驗性質,不適合安裝到穩定系統。因此對於 AUR 中的包以及部分 community 中的包需要謹慎,這些開發中的包是直接從上游開發版分支中獲取到的,通常會在包的名字上注有:dev、devel、svn、cvs、git、hg、或是 darcs 的信息。

安裝內核的長期支持版本[編輯 | 編輯原始碼]

linux-lts 是 Arch 官方提供的 Linux kernel 的長期支持版本。內核上游開發者針對此版本提供了長期支持,包括安全補丁和功能 backport。適用於需要長期支持的用戶,也可以將此內核作為新內核升級的後備內核。

需要編輯 bootloader 的啟動加載項,啟動到 vmlinuz-linux-ltsinitramfs-linux-lts.img

參閱[編輯 | 編輯原始碼]