私はArch Linuxの新人で、まだそのパラダイムのいくつかに慣れています。私は、かなり構造化されており、いくつかの点で予測可能だった別のディストリビューションからの多くの習慣を持っています。
いくつかのシステムで私がやりたいことの1つは、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()
によって生成されるようです。それらはstdoutに書き込まれることもあれば、stderrに書き込まれることもあります。メッセージの形式は大きく異なります。ブロック全体が何らかの方法でインデントされて接頭辞が付けられている場合もあれば、エコーされた文字列だけがある場合もあります。
システムへの介入が必要になる可能性があるが、それ以外の場合は気にしないことについて知りたい。このデータをインテリジェントに管理し、システム管理を簡素化するツールはありますか?パッケージによって生成された出力を、それらをインストールするpacmanプロセスとは別に取得する方法はありますか?それとも私は自分でインストールログから無害なものを除外するパーサーのようなものを書くのですか?
allこれがどれほど愚かであるかを説明する前に、私は実稼働サーバーでこれを実行しないほど賢く、スナップショットベースのシステム全体のバックアップなしでは、大災害の発生時に簡単に回復できることに注意してください。
このスレッドで発生する可能性のあるあなたと他の人の両方に対して明確にしたいと思います。あなたがしたいことは不可能です。 Archは、youがシステムを管理することを期待しているという事実を明かしません。その責任の一部は、更新サイクルに存在しています。
これで、責任を持って自動化できる更新プロセスのステップがありますが、自動化された-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
の実行に代わるものではありません。
質問の最後の部分である、アップグレード中に何が起こったかの出力を取得するには、/var/log/pacman.log
を探します。興味のあるすべてのエラー情報が含まれています。
ツール があります。これは、慣れていないユーザーにとってpacman
を少しフレンドリーにすることを目的としています。私が間違っていない場合は、手動による介入を必要とする更新が必要な場合に、ニュース項目に関する通知も提供されます。
このツールは、短期的にはあなたの人生を少し単純にするかもしれませんが、それは、メーリングリストをフォローすることに慎重かつ熱心に取って代わるものでは決してありません。
本当に良い仕事をする古いスクリプトがあります。 safepac と呼ばれます。
編集:このスクリプトは引き続きgithubから入手できます: https://github.com/bencahill/binfiles/blob/master/safepac
それは何をし、どのように機能しますか?
Archを通常更新する方法は、ニュースを読んでから
pacman -Syu
を実行するか、単にpacman -Syu
を実行して、問題が発生した場合はニュースを読むことです。このスクリプトは他に何もしません。RSSフィードから最新のニュースエントリを取得し、sed
マジックを実行して、ニュースに利用可能な更新があるすべてのパッケージの名前を比較します。ニュースの「package-name」と「package-name-」に一致します。パッケージ名がニュースのどこかに表示された場合、パッケージは無視され、他のすべてのパッケージのみが更新されます。この方法では、問題が発生する可能性のあるものはすべて、問題を手動で検査する時間まで延期されますが、重要でない更新は自動的に行われます。通常、スムーズではない可能性のある更新に対処した後は、特定のパッケージがまだニュースにあるため、
safepac
に特定のパッケージを無視させたくないでしょう。これが無視リストの目的です。したがって、手動で更新するたびに、safepac -Ia xxx
を使用してそれぞれのニュースエントリを無視リストに追加できます。ここで、xxx
はニュースエントリの番号です。-n
スイッチを使用して、解析に含める最新ニュースの数を指定することもできます。スクリプトは、存在しないエントリをスキップするのにも十分なほどスマートです。ニュースに任意に表示される可能性のある非常に短い名前(「yes」など)を持つパッケージで問題が発生した場合は、safepac -Wa
を使用してそれらをホワイトリストに追加し、それらがニュース。
このスクリプトはダイジェストメール(完全なログ付き?)と、更新の重要な部分も送信するため、有効なメール設定が必要です。
pacman
出力を解析してこれらの単語を探し、ダイジェストに追加します。
「注意」「pacnew」「エラー」「重要」「警告」「存在」。
スクリプトは古いですが、アイデアは良好であり、マイナーアップデートがある場合でもおそらく動作します。