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

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

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

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

答え1

rpmレベルでは実際にはわかりません。使用するパッケージマネージャによっては、一部の情報が保存される場合があります。

これは、ユーザーがrun installコマンドを使用している場合にのみ機能しますsudo。もし彼がルートになれば、誰がそのようなことをしたのかは決して分からないでしょう。

ヤム

yum history

トランザクションのリストとコマンドを開始したユーザーを提供します。

地下刑務所

dnf history

取引リストを提供しますが、デフォルトではユーザーはリストしません。しかし、以下を実行できます。

dnf history info <ID>

これにより、コマンドを開始したユーザーが表示されます。

チップ

これを知る方法はありません。

答え2

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

まあ、最初の質問は難しい質問です。私が知っている限り、それは実際には可能ではなく、インストールによって大きく異なります。さまざまなディストリビューション、デスクトップ環境、インストーラオプションがあるため、1つの標準Linuxインストールはありません。ただし、1 つの方法は、設定とともにインストールされているパッケージ グループがあるかどうかを確認し、次を使用して (おそらくユーザー インストールによって) 別のパッケージをインポートすることです。次のコマンド:comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base | sort)ここでbaseはプリインストールされたグループの1つです。

質問の2番目の部分:次のコマンドを使用してpackagesに関する情報を取得できますpacman -Si <yourpackage>。出力を依存関係に減らすには、次の点を確認してください。このスレッド

答え3

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

関連情報