このようなものがすでに存在していたら申し訳ありませんが、私の調査ではそのような証拠は見つかりませんでした。
私が欲しいのは、自分で書ける「モニター」タイプのスクリプトで、apt-get で 1 つ以上の (「複数」に重点を置く) パッケージをインストールする前に「アクティブ化」し、完了したら「非アクティブ化」するものです。インストールされたものはすべて「ログ」に記録され、インストールに満足できない場合は、1 つのコマンドですべてのインストールの痕跡がすべて削除されます。
私がこれをやりたいのは、プログラマーであり、新しい言語のプログラミング環境を設定するとバグだらけになる可能性があるからです(または、自分のユーザーエラーでいっぱいになることもあります)。たとえば、go lang では問題がありましたが、ruby/rails ではむしろ苦労しませんでした。
現在、apt-get purge と autoremove はシステムからパッケージをクリーンアップするのに非常に効果的であると理解していますが、私のアイデアは、多数のパッケージを連続してインストールする場合にも依然として有用であると考えています。
質問:スピードと論理性を優先しながら、これを最も効果的に達成するにはどうすればよいでしょうか。
私が見つけた実装方法はすべて(一見悪いように思えるかもしれませんが)、
--inotifywait: システム全体での使用は考えられません。「人気のある」ディレクトリにのみ適用できますが、ファイルが漏れてしまう可能性があります。
--diff: ほぼ上記と同じです。
--git: git を使用して、ロールバックできる「画像」を保存します。上記と同じ問題ですが、程度は低いです (私の意見です。そうでない場合は訂正してください)
-- インストールされたパッケージ名をログに記録する (何らかの方法で)/ インストールされたパッケージの数を単純に数え、/var/cache/apt に移動して apt-get remove などを使用します。ここで何かが漏れてしまうことはありますか (通常)?
私は自分の研究と併せて、思いついた順にアイデアをリストアップしました。ご覧のとおり、アイデアはより合理的な解決策へと進化しました。
つまり、私は基本的にアドバイスを求めてここに来ています。なぜなら、私は bash スクリプトを書くことに全く慣れていますが、これまでその必要に迫られたことがなかったので、より賢明なアドバイスを求めているからです。そして、正直に言うと、これは楽しみのためであり、また学習のためでもあります。
ありがとう!
答え1
同じような目標を持つ皆さんへ
結局、/var/log/apt/history.log を 2 つのテキスト ファイルに保存しました。1 つはインストール「セッション」の前、もう 1 つはインストール「セッション」の後です。また、拡張を可能にするために、diff の出力を、新しくインストールされたパッケージのパッケージ名だけを含むファイルに保存しました (これにより、大量の削除ではなく、(Y/n) 削除オプションを使用して各パッケージを循環する対話型コマンド ライン オプションが可能になります)。
他の人に正しい方向を教えるには、sed/grep、diff、cut、tail、xargs、および出力をファイルに送信するための > と >> の使用法を学びます。また、基本的な bash スクリプトも学びます。