Arch Linuxで自動的にアップデートを責任を持って実行する方法は?

Arch Linuxで自動的にアップデートを責任を持って実行する方法は?

私はArch Linuxに初めて触れ、まだいくつかのパラダイムに慣れています。私はもう少し構造化され、いくつかの点で予測可能な他のディストリビューションから多くの習慣を継承しました。

いくつかのシステムで私がやりたいことの1つは、cronジョブを有効にしてすべてのシステムパッケージを自動的に更新することです。これは簡単に見えますが、システムが状況がどのように進行しているかについての意味のあるフィードバックを提供したいと思います。しかし、システムに問題があることに気づくまで、最終的に無視されるほど冗長ではありません。

  • 完全な出力pacmanは必要ありません。ダウンロードするのにどれくらいの時間がかかったのか、アップデート46のうち53だったかは問題ではありません。
  • ほとんど私は成功に興味がありません。
  • 私はエラーに興味があります。アップデートの実行に失敗し、特定のエラーメッセージをパッチする必要があるかどうかを知りたいです。
  • 私はインストールプロセスで作られた「通知」に興味があります。たとえば、今日の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()。時にはstdoutに書き込まれ、時にはstderrに書き込まれます。メッセージの形式は非常に多様です。ブロック全体の前に何らかの方法でインデントが付く場合もあり、単純なエコー文字列だけがある場合もあります。

邪魔されずにシステムに介入すべき事項について学びたいです。このデータをインテリジェントに管理し、システム管理を簡素化するためのツールはありますか?パッケージをインストールするパックマンプロセスからパッケージによって生成された出力を分離する方法はありますか?それとも、インストールログから無害なコンテンツをフィルタリングするために一種のパーサーを直接作成する必要がありますか?

1これがどれほど愚かなのかを超えた前に、私は本番サーバーでこれを実行しないほどスマートで、災害時にスナップショットに基づいてシステム全体のバックアップなしで簡単に回復できることに注意してください。

答え1

あなたとこの問題を引き起こす可能性がある他の誰にとっても、この点を明確にしたいと思います。あなたがしたいことはいいえ可能。アーチは自分が期待する事実を秘密にしません。あなたシステムを管理してください。その責任の一部は更新サイクル中に存在します。

あるスピードアップデートプロセスは責任を持って自動化できますが、決して自動化されません-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たとえば。 0より大きい数値を返すと、ダウンロードをトリガーできます。ただし、これは-Syuあなたが存在し、それを処理する準備ができているときにアップグレードを実行することを置き換えません。

アップグレード中に発生した結果をどこで取得できるかに関する質問の最後の部分には、興味がある可能性がある/var/log/pacman.logエラーメッセージが含まれています。


持つツールpacman見知らぬユーザーにもっと親しみやすくするためです。私の記憶が正しい場合は、手動介入が必要なアップデートがある場合は、ニュースアイテムに関する通知も提供されます。

このツールは短期的にはあなたの人生をより簡単にすることができますが、メーリングリストを賢くて勤勉に従うことを決して置き換えることはできません。

答え2

本当に良いことをする古いスクリプトがあります。安全な包装

編集:スクリプトはgithubで引き続き使用できます。 https://github.com/bencahill/binfiles/blob/master/safepac

それは何をし、どのように機能しますか?

私が通常アーチを更新する方法は、ニュースを見てから更新するかpacman -Syu、単にしpacman -Syuてから問題が発生したらニュースを見ることです。今、このスクリプトは何もしません。 RSSフィードから最新のニュースアイテムを入手し、いくつかのsed魔法を実行し、すべてのパッケージの名前を利用可能なニュースアップデートと比較します。ニュースの「パッケージ名」と「パッケージ名-」と一致し、パッケージ名がニュースのどこかに表示された場合は、そのパッケージを無視して他のすべてのパッケージのみを更新します。これにより、問題を手動で確認するまでに間違っている可能性があるすべての作業が延期され、重要でない更新が自動的に行われます。

safepac正しく進行していないアップデートを処理した後も、まだニュースにあるため、パッケージを無視したくない場合がよくあります。これが無視リストの目的です。したがって、手動で更新するたびに、次を使用してそのニュース項目を無視リストに追加できます。safepac -Ia xxxxxxニュース項目の番号です。このスイッチを使用して、解析に含める最新のニュースの数を指定することもできます-n。また、スクリプトは存在しない項目をスキップするのと同じくらい賢いです。ニュースにランダムに表示される可能性がある非常に短い名前(「はい」など)を持つパッケージに問題がある場合は、そのパッケージをホワイトリストに追加して、ニュースに表示されても常にインストールできるようにsafepac -Waすることができます。

このスクリプトは要約メール(フルログを含む)と更新の重要な部分も送信するため、有効なメール設定が必要です。

出力を解析して、pacman次の単語を見つけてサマリーに追加します。
"note" "pacnew" "error" "important" "warning" "exists".

スクリプトは古いですが、アイデアは良く、おそらくマイナーなアップデート(存在する場合)でも機能し続けます。

答え3

私は私を使う~までyaourtクローンとして実行します。

関連情報