다른 배포판에서 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