特定のディレクトリにファイルを含むパッケージを一覧表示するには?

特定のディレクトリにファイルを含むパッケージを一覧表示するには?

他のディストリビューションからCentOSに切り替えているのに慣れていませんyum。インストールされているパッケージのうち、ディレクトリにファイルがあるかどうかを知る方法があるかどうかを知りたいです。

たとえば、任意のパッケージに/usr/share/applications

提供されている内容を見ると、インストールされているパッケージを表示するyum方法(インストール済みパッケージの一覧)があることがわかりますが、提供されていても-qパッケージ名だけはわかりません。ただし、個々のパッケージの内容を一覧表示するオプションは表示されません。

可能ですか?どうすればいいですか?

答え1

を使用してこれを行う方法はありませんが、必要なタスクのほとんどを実行するコマンドを作成yumできます。rpmこのオプションを活用して--queryformat使用する必要があります[..]--queryformat

メモ:これらの機能はすべてRPMのマニュアルで説明されています。最大RPM:Red Hat Package Managerを限界まで引き上げる

$ rpm -qa --queryformat '[%{NAME}: %{FILENAMES}\n]' | \
    sed 's#\(/.*/\).*$#\1#' | sort -u | grep '/usr/sbin' | head -10
abrt-addon-ccpp: /usr/sbin/
abrt-addon-pstoreoops: /usr/sbin/
abrt-addon-vmcore: /usr/sbin/
abrt-dbus: /usr/sbin/
abrt: /usr/sbin/
alsa-utils: /usr/sbin/
aoetools: /usr/sbin/
at: /usr/sbin/
authconfig: /usr/sbin/
avahi-autoipd: /usr/sbin/
...

詳細

上記のコードは、--queryformatシンボルごとにマクロ配列を繰り返し、埋め込みパッケージ名()と完全なインストールパスを印刷します。%{FILENAMES}[...]%{NAME}

はい
$ rpm -q --queryformat '[%{NAME}: %{FILENAMES}\n]' fatrace
fatrace: /usr/sbin/fatrace
fatrace: /usr/sbin/power-usage-report
fatrace: /usr/share/doc/fatrace-0.5
fatrace: /usr/share/doc/fatrace-0.5/COPYING
fatrace: /usr/share/doc/fatrace-0.5/NEWS
fatrace: /usr/share/man/man1/fatrace.1.gz

このタイプの出力では、上記のパスから末尾のファイル名を削除するだけです。このためにsed。最後に、特定のディレクトリでファイルを含むパッケージを見つけるsort -uために使用します。grep ...これをより簡単にするには、次のようにします。

grep $(pwd)
はい
$ pwd
/usr/sbin

$ rpm -qa --queryformat '[%{NAME}: %{FILENAMES}\n]' | \
    sed 's#\(/.*/\).*$#\1#' | sort -u | grep $(pwd)

パッケージ名のみを含むリスト

一意のリストからパッケージ名のみを取得するには、次のようにします。

$ rpm -qa --queryformat '[%{NAME}: %{FILENAMES}\n]' | \
    sed 's#\(/.*/\).*$#\1#' | sort -u | grep $(pwd) | \
    awk -F: '{print $1}' | head -10
abrt-addon-ccpp
abrt-addon-pstoreoops
abrt-addon-vmcore
abrt-dbus
abrt
alsa-utils
aoetools
at
authconfig
avahi-autoipd

引用する

答え2

/usr/share/applicationsにファイルがあるパッケージを知りたいです。

を実行してディレクトリツリー全体を作成できますrpm -qf <absoluteFilePath>。完全なディレクトリツリーを作成するには、このfindコマンドを使用して出力をフィルタリングできます。

たとえば、

[root@xxx01 ~]# find /usr/share/applications -type f -exec rpm -qf {} \; | grep -v "is not owned by any package" | sort | uniq 
firefox-31.1.0-5.el6_5.x86_64 
savui-1.0.14-13.i386 
shared-mime-info-0.70-4.el6.x86_64 
[root@xxx01 ~]#

ただし、個々のパッケージの内容を一覧表示するオプションは表示されません。

これは少し異なるオプションですrpm。たとえば、firefoxパッケージのファイルを一覧表示します。

[root@xxx01 ~]# rpm -ql firefox
/usr/bin/firefox
/usr/lib64/firefox
/usr/lib64/firefox/LICENSE
/usr/lib64/firefox/application.ini
/usr/lib64/firefox/browser/blocklist.xml
/usr/lib64/firefox/browser/chrome
/usr/lib64/firefox/browser/chrome.manifest
/usr/lib64/firefox/browser/chrome/icons
/usr/lib64/firefox/browser/chrome/icons/default
/usr/lib64/firefox/browser/chrome/icons/default/default16.png
/usr/lib64/firefox/browser/chrome/icons/default/default32.png
/usr/lib64/firefox/browser/chrome/icons/default/default48.png
/usr/lib64/firefox/browser/components
/usr/lib64/firefox/browser/components/components.manifest
/usr/lib64/firefox/browser/components/libbrowsercomps.so
/usr/lib64/firefox/browser/defaults/preferences
/usr/lib64/firefox/browser/extensions
/usr/lib64/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
/usr/lib64/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
/usr/lib64/firefox/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
/usr/lib64/firefox/browser/icons
/usr/lib64/firefox/browser/icons/mozicon128.png
... snip ...

答え3

slmの答えはほぼ正確で、おそらく昔ながらです。私が持っている最高のスクリプトは次のとおりです。

rpm -qa --queryformat '[%{=NAME}: %{FILENAMES}\n]' | grep ' /var' |  cut -d: -f 1 | uniq

内容は上記とほぼ同じで、「=」もNAMEをイテレータにします。

答え4

どんなバッグなのか見てください供給使用できる特定のファイルまたはディレクトリは次のとおりですyum provides <file>

$ yum provides /usr/share/applications/*
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * fedora: mirrors.ircam.fr
 * rpmfusion-free-rawhide: mirrors.coreix.net
 * rpmfusion-nonfree-rawhide: mirrors.coreix.net
 * updates: ftp.uni-koeln.de
abrt-gui-2.3.0-3.fc21.x86_64 : abrt's gui
Repo        : fedora
Matched from:
Filename    : /usr/share/applications/abrt-applet.desktop



alacarte-3.11.91-2.fc21.noarch : Menu editor for the GNOME desktop
Repo        : fedora
Matched from:
Filename    : /usr/share/applications/alacarte.desktop

これは継続して行われます。パイプを通して読んでくださいless

パッケージのファイルを一覧表示するには、次のようにします。rpm -ql <package>

$ rpm -ql less
/etc/profile.d/less.csh
/etc/profile.d/less.sh
/usr/bin/less
/usr/bin/lessecho
/usr/bin/lesskey
/usr/bin/lesspipe.sh
/usr/share/licenses/less
/usr/share/licenses/less/LICENSE
/usr/share/man/man1/less.1.gz
/usr/share/man/man1/lessecho.1.gz
/usr/share/man/man1/lesskey.1.gz

関連情報