Arch Linuxで責任を持って自動的にアップデートを実行するにはどうすればよいですか?


15

私は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()。時には、標準出力に書き込まれることもあれば、標準エラー出力に書き込まれることもあります。メッセージの形式は大きく異なります。ブロック全体が何らかの方法でインデントされている場合もあれば、エコーされた文字列だけが存在する場合もあります。

システムへの介入を必要とするかもしれないが、それ以外のことは気にしないものについて知りたい。このデータをインテリジェントに管理し、システム管理を簡素化するツールはありますか?パッケージによって生成された出力を、それらをインストールするpacmanプロセスとは別に取得する方法はありますか?それとも、インストールログから無害なものを除外する何らかの種類のパーサーを自分で作成するのですか?

¹これがどれほど愚かであるかを飛び越える前に、私は実稼働サーバーでこれを行わず、大惨事の場合に回復を容易にするスナップショットベースのシステム全体のバックアップなしでこれを行うのに十分賢いことに注意してください。


最初に行うことはyaourt、質問と概念モデルの両方からタグを削除することです:公式リポジトリでこれを実行しようとすると、AURからランダムパッケージをミックスに追加するのが難しくなります...
ジェイソンライアン14年

ああ、これは愚かな考えではありません。しかし、それはArchの働きに大きく反します。1日に1回使用checkupdatesおよび-Syuingすることは非常に簡単な作業です。私はあなたの提案が伴うすべての仕事に実際の利益を見ていません。
jasonwryan

@jasonwryan私はそれを拡張するつもりでしたが、実際には同じワークフローに収めたいAURパッケージがいくつかあります。現在、私はyaourtを広範囲に使用していますが、パッケージ管理操作のドライランサポートがないという事実を非常に見逃しています!:/
カレブ14年

2
ArchのDNAがあなたの手を汚しています。これは、実行することを意図した方法ではありません。...あなたはそこに着くかもしれないが、ここでは説明している場合には、がpyrrhic勝利することとなり、ちょうど彼らがために完全に準備ができていないであることを崖の端に初心者の全体の多くをリードする
jasonwryan

2
私は昨年これを試してしばらく過ごしましたが、システムを定期的に殺すことなくアップグレードを達成する唯一の方法は、新しいイメージ(Archではベーステストポイントであり、信頼性が高いと思われる)を構築してから設定を移植することであるという結論に達しました管理ツール。更新は少し落ち着いているかもしれませんが、6か月間に3〜4回あり、手動での介入なしでシステムに負荷がかかります。
マット14年

回答:


11

私はあなたとこのスレッドで起こるかもしれない他の人の両方のために明確にしたいです。何がやりたいことはあるではない可能。アーチは、それが期待しているという事実の秘密行うものではありませんあなたは、あなたのシステムを管理することを。その責任の一部は、更新サイクルにあります。

現在、責任を持って自動化できる更新プロセスの手順がありますが、自動化されることはありません-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ます。誤解しない限り、手動による介入を必要とする更新が必要な場合は、ニュース項目に関する通知も提供します。

このツールは、短期的にはあなたの生活を少し簡単にするかもしれませんが、メーリングリストを賢明かつ熱心にフォローする代わりになることは決してありません。


2
実際、手動の介入が必要な公式パッケージに関する通知については、arch-dev-publicおよびarch-generalに従うことをお勧めします。
HalosGhost 14年

また、@ jasonwryanは完全に正しいです。これを行うことはpacman可能かもしれません。を使用してyaourt実行することはできません。
HalosGhost 14年

yaourt実際には、これよりもわずかに優れた仕事をしますがpacman、あなたが言っているように、デフォルト設定はaurヘルパーにすぎないため、長期的にはほぼ確実に破壊されます。ただし、これは非常に構成可能であり、ソースツリーを非常に効果的に維持するために作成できます。両方yaourtpacmanだけラップalpmとにかく。
mikeserv 14年

または、yaourtラップpacmanといくつかの追加alpm機能とpacmanラップと言う方が正しいと思いますalpm。ただし、いずれにしても、yaourtは拡張されpacmanます。
mikeserv 14年

ここで述べたように-Syuw潜在的に非常に危険です。更新が適用されない場合、部分的な更新を生成する機能があり、ソフトウェアは後ででインストールされ-Sます。
-Sparhawk

1

本当に良い仕事をする古いスクリプトがあります。safepacと呼ばれます

編集:このスクリプトは、GitHubで引き続き利用できます:https : //github.com/bencahill/binfiles/blob/master/safepac

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

私が通常Archを更新する方法は、ニュースを読んでからを実行pacman -Syuするか、単に行うだけpacman -Syuで、何か問題が発生した場合はニュースを読むことです。これで、このスクリプトは他に何もしません。RSSフィードから最新のニュースエントリを取得し、いくつかのsed魔法を実行し、ニュースで利用可能な更新があるすべてのパッケージの名前を比較します。ニュースの「package-name」および「package-name-」に一致し、パッケージ名がニュースのどこかに表示される場合、パッケージを無視し、他のすべてを更新します。このようにして、問題が発生する可能性のあるものはすべて、手作業で問題を検査する時間まで延期されますが、重要でない更新は自動的に行われます!

通常、スムーズでない可能性のある更新を処理した後はsafepac、特定のパッケージがまだニュースであるため、無視する必要はありません。それがignorelistの目的です。したがって、手動で更新するたびに、それぞれのニュースエントリを無視リストに追加できます。ここで、はニュースエントリの番号です。また、スイッチでの解析に含める最新ニュースの数を指定することもできます。また、このスクリプトは、存在しないエントリをスキップするのに十分スマートです。ニュースに任意に表示される可能性のある非常に短い名前(「yes」など)を持つパッケージで問題が発生した場合は、ニュースに表示されても常にインストールされるようにホワイトリストに追加できます。safepac -Ia xxxxxx-nsafepac -Wa

このスクリプトはダイジェストメールも送信するため(完全なログを使用しますか?)、更新の顕著な部分が含まれているため、動作するメールのセットアップが必要です。

pacman出力を解析してこれらの単語を探し、ダイジェストに追加します。
「note」、「pacnew」、「error」、「important」、「warning」、「exists」。

スクリプトは古いですが、アイデアは優れており、おそらくマイナーアップデートがある場合でも引き続き動作します。


考えられる問題の1つは、メジャー(または最新の)更新がニュースで伝えられていないことですが、自分で追跡する必要があります。適切なケース、python2からpython3への更新
Lesto

それでも、あなたはcheckupdates(パックマン-utilsの)を使用し、パッケージのリストを取得し、その後、リモートでホワイトリストにそれら、良いあなたがプールを持っている場合、その後多分地元のレポのようなセットアップ何かに優れている可能性が
Lesto

-2

私はcronで実行するために独自のuntilityを使用していyaourtます。


1
Yaourt は事実上死んでいます。これは見事に悪い考えです。
ジェイソンライアン

yaourtは長年自分で使用しました。それは良いツールでしたが、「ラップ」するためにビルドされたものは形を変えており、今ではいくつかのことをかなり間違っています。この時点では非常に問題が多いため、ツールの作成者は、ツール自体を使用しなくなったとさえ言っています。AURヘルパーが必要な場合は、アクティブにメンテナンスされているものを試してみることをお勧めします。私はyay自分自身に切り替えて、とても幸せです。
カレブ

そのユーティリティyayは私にとっても同様に機能します。
vadzim
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.