RPMパッケージマネージャがインストールしていないファイルを探す

RPMパッケージマネージャがインストールしていないファイルを探す

調べる方法はありますか?みんな特定システムのファイルいいえRPMを介してインストールしますか?私はファイルシステム上のすべてのファイルを繰り返すスクリプトのようなものを使ってそれを強制することができることを知っていますが、rpmquery -fRPMベースのシステム(特に私が自宅のFedora)でこれを行う標準的な方法があるかどうか疑問に思います。 )。 Fedora用なので、これを利用したりyum知っdnfておけばいいようです。

これを行う標準的な方法がない場合は、これを実行できる既存のスクリプトを知っている人はいますか?私は必要がなければ、車輪を再発明したくありません。

ポリスチレンこれに似た質問がありますしかし、GentooとPortageに関するものなので、完全には関係ありません。

答え1

パーティーに少し遅れましたが、誰かがこれが役に立つと思います。

find /usr/ -exec /bin/sh -c 'rpm -qf -- "$1" >/dev/null 2>&1 || echo "$1"' find_sh {} \;

このコマンドはファイルシステムをクロールしてrpm -qf実行します。rpm -qfファイルに対応するパッケージを印刷します。幸いにも1が見つかった場合は0が返され、それ以外の場合は1が返されます。

あなたが勇敢であれば、出力をにバインドすることができますが、| xargs rm -f個人的にはそれほど勇敢ではありません。/usr実際には何にも属さない多くのものがあることがわかりました。

答え2

すべてhttps://superuser.com/questions/555918/how-do-i-list-all-the-files-not-owned-by-any-package-in-a-rpm-based-system、次のコマンドは要件の確実な基準です。

comm -13 <(rpm -qla | sort) <(find / -type f | sort)

findコマンドを興味のあるディレクトリにフィルタリングしてさらにカスタマイズします(/例:代わりにディレクトリのリストを指定したり、、などのフォルダを除く/{usr,bin})。/proc/dev/home/tmp

答え3

私が知っている限り、ある種の専用コマンドを使用することは不可能であり、いくつかのスクリプトを介してのみ達成できます。TL;DR - 下部リンクを参照してください。これは、rpmベースのシステムや他のバイナリベースのパッケージマネージャには適していません。これらのパッケージマネージャは、通常、ユーザーがパッケージマネージャの「背後にある」システムにこっそり入るすべてを理解するのではなく、自分がインストールしたものを追跡するように設計された状態ベースのシステムです。

rpmファイルではないファイルについてはどこに線を引くべきですか?一時ファイル(/ tmp、/ var / tmpなど)、キャッシュ(/ var / cacheなど)、またはユーザー生成ファイル(/ homeまたは/ srvまたは他のカスタムマウントポイント)はどうですか?

ソースベースの展開では、ユースケースで制限する場合に機能を提供するのが妥当である可能性があります。FHSサードパーティ製ソフトウェアの場合は、/usr/local または /opt ではなく、/usr、/bin、/lib などの「システム」パッケージで使用されるディレクトリです。


リクエストしたアクションを実行するスクリプトレットについては、次のような質問をご覧ください。

関連情報