Linux でシステム パッケージと手動でインストールされたパッケージを区別する方法はありますか?

Linux でシステム パッケージと手動でインストールされたパッケージを区別する方法はありますか?

パッケージがプリインストールされているか、ユーザーによってインストールされたかを判断できるスクリプトを作成しようとしています。

また、パッケージ「X」の依存関係が以下にあることを知る方法はありますか?

答え1

実際に知ることはできないレベルですrpm。使用するパッケージ マネージャーによっては、そこに何らかの情報が保存されている可能性があります。

これは、ユーザーが でインストール コマンドを実行した場合にのみ機能することに注意してくださいsudo。ユーザーが root になった場合、誰が実行したかはわかりません。

おいしい

yum history

トランザクションのリストと、コマンドを開始したユーザーが表示されます。

ダウン

dnf history

トランザクションのリストが表示されますが、デフォルトではユーザーは表示されません。ただし、次のコマンドを実行できます。

dnf history info <ID>

そして、コマンドを起動したユーザーが表示されます

ジッパー

私の知る限り、これを知る方法はありません。

答え2

タグが不明瞭なので、どのパッケージ マネージャーを使用しているかはわかりません。ただし、arch-linux タグを使用しているので、pacman について回答します。

最初の質問は難しいですね。私の知る限りでは不可能で、インストール方法に大きく依存します。Linux にはさまざまなディストリビューション、デスクトップ環境、インストーラー オプションなどがあるため、標準的な Linux インストール方法というものはありません。ただし、1 つの方法としては、セットアップでインストールされているパッケージ グループを調べ、次のコマンドを使用してその他のパッケージ (ユーザーがインストールする可能性が高いもの) を取得することです。comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base | sort)ここで、base は確実にプリインストールされているグループの 1 つです。

質問の2番目の部分について:パッケージに関する情報を取得するにはpacman -Si <yourpackage>、以下を使用します。依存関係のみの出力を取得したい場合は、以下を参照してください。このスレッド

答え3

ディストリビューションのウェブサイトで、インストール時にディストリビューションに含まれているパッケージを確認してください。これらはプリインストールされています。その他はすべてインストール後に追加されたものです。

関連情報