如何在 Arch Linux 上負責任地自動執行更新?

如何在 Arch Linux 上負責任地自動執行更新?

我是 Arch Linux 的新手,仍在適應它的一些範例。我從另一個發行版中繼承了很多習慣,該發行版更加結構化並且在某些方面是可預測的。

我想對一些系統做的一件事是啟用 cron 作業來自動更新所有系統軟體包。這似乎很容易,但我也希望系統提供一些有意義的回饋,告訴我事情進展如何,但不要太冗長,以至於我最終會忽略它,直到我發現系統出現問題。

  • 的完整輸出pacman是不必要的。我不在乎下載花了多長時間,也不關心它是在更新 53 的 46 上。
  • 大多數情況下,我並不在乎成功。
  • 我確實關心錯誤。如果更新運行失敗,我想了解它,並且應該修補任何特定的錯誤訊息。
  • 我確實關心安裝過程中發出的“通知”。例如今天的 systemd 更新說:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    或者檔案系統產生了這個:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    最後一個類別實際上促使我提出這個問題,因為看起來這些在整個軟體包集中非常不一致。其中一些似乎是由 生成的post_upgrade(),其他是由 生成的install(),等等。訊息的格式差異很大:有時整個區塊以某種方式以縮排為前綴,其他時候只有一個裸露的回顯字串。

我想了解可能需要我對系統進行幹預但又不被打擾的事情。是否有一種工具可以智慧地管理這些數據並簡化系統管理?有什麼方法可以將軟體包產生的輸出與安裝它們的 pacman 進程分開?或者我自己寫某種解析器來過濾掉安裝日誌中的良性內容?

1 在您跳過這有多愚蠢之前,請注意,我很聰明,不會在生產伺服器上執行此操作,並且如果沒有基於快照的完整系統備份,可以在發生災難時輕鬆恢復。

答案1

我想向您和任何其他可能遇到此問題的人澄清。你想做的是不是可能的。 Arch 毫不掩飾它所期望的事實管理您的系統。該責任的一部分是在更新周期中存在。

現在,有腳步您可以負責任地實現更新流程的自動化,但它永遠不會達到自動化的-Syu。您只需要在那裡進行升級。

例如,您可以做的是設定一個cron作業來下載任何需要安裝的軟體包(但不要安裝它們)。以下是pacman文件的摘錄:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

然後,您可以設定一個cron作業來運行sudo pacman -Syuw。我不太熟悉cron它的調度能力。但是,如果它只能在滿足特定條件(例如,命令返回特定值)後運行作業,那麼根據需要觸發新套件的下載將是相當簡單的。

checkupdates | wc -l例如,我會想像對 進行檢查。如果它傳回任何大於零的數字,您就可以觸發下載。不過,這並不能取代-Syu您在場並準備好處理升級時運行 an 。

對於問題的最後一部分,即在哪裡獲取升級期間發生的情況的輸出,您正在尋找/var/log/pacman.log.它包括您可能感興趣的所有錯誤訊息。


一個工具這是為了讓pacman不熟悉的用戶更友善。如果我沒記錯的話,如果有需要手動幹預的更新,它還會提供有關新聞項目的通知。

從短期來看,這個工具可能會讓您的生活變得更簡單,但它永遠無法取代明智而勤奮地遵循郵件清單。

答案2

有一個舊腳本做得非常好;它被稱為安全包裝

編輯:這個腳本仍然可以在 github 上找到: https://github.com/bencahill/binfiles/blob/master/safepac

它有什麼作用以及如何運作?

我通常更新 Arch 的方式是看新聞然後做pacman -Syu,或者只是做pacman -Syu,如果出了什麼問題,再看新聞。現在這個腳本什麼都不做:它從 RSS 來源獲取最新的新聞條目,執行一些sed魔法,並比較所有具有可用新聞更新的套件的名稱。它匹配新聞中的“package-name”和“package-name-”,如果包名稱出現在新聞中的某個位置,它將忽略該包,只更新所有其他包。這樣,任何可能出錯的事情都將被推遲,直到有時間手動檢查問題為止,而非關鍵更新將自動完成!

通常,一旦您處理了可能不順利的更新,您將不希望safepac仍然忽略某個軟體包,因為它仍然在新聞中。這就是忽略清單的用途。因此,每次手動更新時,您都可以使用 將相應的新聞條目新增至忽略清單中,其中safepac -Ia xxxxxx是新聞條目的編號。您也可以使用該開關指定要在其解析中包含的最新新聞的數量-n。該腳本還足夠智能,可以跳過不存在的條目。如果您遇到名稱非常短的軟體包的問題,這些軟體包可能會任意出現在新聞中(例如“yes”),您可以將它們添加到白名單中,這樣safepac -Wa即使它們出現在新聞中,它們也將始終被安裝。

請注意,您需要一個有效的郵件設置,因為此腳本也會向您發送摘要郵件(帶有完整日誌?)以及更新的重要部分:

解析pacman輸出以尋找這些單字並將其新增至摘要:
“note”“pacnew”“error”“important”“warning”“exists”。

該腳本很舊,但想法很好,並且可能仍然可以在較小的更新(如果有)下使用。

答案3

我用我自己的直到yaourt由 cron運行。

相關內容