찾고있는 파일을 제공하는 rpm 패키지를 어떻게 찾습니까?


207

예를 들어, 패키지 mod_files.sh와 함께 제공 되는 파일을 찾고 php-devel있습니다. 패키지 와 함께 파일을 yum설치 한다고 생각 했지만 파일이 파일 시스템에 설치되지 않은 것으로 보입니다.mod_files.shphp-devel x86_64 5.1.6-23.2.el5_3

어떤 파일이 특정 파일을 설치하는지 어떻게 알 수 있습니까? 필자가 찾고있는 파일을 포함 할 수있는 패키지를 이미 로컬로 다운로드하지 않은 곳을 찾고 있습니다.

CentOS 5를 사용하고 있습니다.


7
superuser.com ___?
Grzegorz Oledzki

@Grzegorz 좋은 지적, 나는 투표 투표를했습니다.
rjh

여기에 더 나은 대답입니다 : unix.stackexchange.com/a/4706/39281
샘 왓킨스

1
찾고있는 파일을 제공하는 패키지가 이미 시스템에 설치되어있는 경우에만 @SamWatkins가 작동합니다. 패키지가 설치되어 있지 않으면 (OP에서 알 수 있듯이) 사용할 수없는 경우을 rpm사용해야 yum합니다.
rjh

답변:


266

이것은 오래된 질문이지만 현재 답변이 잘못되었습니다 :)

원하는 파일의 절대 경로 (와일드 카드로 표시 될 수 있음)와 함께 yum whatprovides를 사용하십시오 . 예를 들면 다음과 같습니다.

yum whatprovides '*bin/grep'

보고

grep-2.5.1-55.el5.x86_64 : The GNU versions of grep pattern matching utilities.
Repo        : base
Matched from:
Filename    : /bin/grep

패키지 repoquery에서 제공되는 도구 의 출력 및 속도를 선호 할 수 있습니다 yum-utils.

sudo yum install yum-utils
repoquery --whatprovides '*bin/grep'
grep-0:2.5.1-55.el5.x86_64
grep-0:2.5.1-55.el5.x86_64

repoquery 패키지 내용, 종속성, 역 의존성 등의 다른 쿼리를 수행 할 수 있습니다.


199

패키지가 이미 설치된 파일을 소유 (또는 제공)하는 방법을 알려면 :

rpm -qf myfilename

4
이 명령은 yum이 제공하는 것보다 더 효율적인 것으로 보입니다. 느린 리포지토리에서 업데이트를 가져올 필요가 없습니다.
80x25

이 버전은 openSUSE와 같은 rpm을 여전히 사용하는 비
Redhat

5
그것은 그 날 것으로 보인다 rpm -qf <filename>(는 현재 냠 저장소 캐시에있는 것과 다를 수 있기 때문에) 패키지가 설치된 응용 프로그램을 제공하는 결정에 가장 적합하고, yum whatprovides <filename>최고의 패키지가 아직 - 투 - - 설치 제공하는 결정에 적합하다 신청. 각각 고유 한 목적이 있습니다.
StockB

또한 yum whatprovides ...응용 프로그램이 루트 패키지 인 경우에만 루트가 필요합니다 (즉,에 상주 /sbin). 그러나에서 rpm -qf ...rpm을 읽으려면 루트도 필요합니다 /sbin. 따라서 루트 요구 사항이 두 방법 모두 기능적으로 동일하다고 제안합니다.
StockB

1
이 명령을 사용하는 사람은 파일 이름뿐만 아니라 전체 파일 경로 + 파일 이름을 사용해야합니다.
Ashish

31

가장 인기있는 답변은 불완전합니다.

이 검색은 일반적으로 설치된 패키지의 파일에 대해서만 수행되므로 모든 외부 저장소를 비활성화하여 yum 이 제공하는 내용을 매우 빠르게 만듭니다 (암시 적 "설치된"저장소를 비활성화 할 수 없음).

yum --disablerepo=* whatprovides <file>

4
그러나이 경우 OP는 시스템에 설치되지 않은 누락 된 파일을 찾고 있습니다 . 패키지를 설치 한 후에도 패키지를 설치했다고 생각하여 사용할 수 없습니다.--disablerepo=*
Randall

4

http://www.rpmfind.net으로 이동 하여 파일을 검색하십시오.

많은 다른 배포판과 버전에 대한 결과를 얻을 수 있지만 Fedora 및 / 또는 CentOS도 팝업되어 yum과 함께 설치할 패키지 이름을 알 수 있습니다


이 웹 사이트는 오프라인 상태입니다!
Peter

1
웹 사이트가 파일을 검색하지 않는 것 같습니다. 검색어가 포함 된 패키지 이름 만
jww

1
@jww 파일 검색은 적어도 나에게 잘 작동합니다. 문서에서 알 수 있듯이 단일 경로 이름 또는 절대 경로 이름을 가진 파일로 실행 파일을 검색 할 수 있습니다.
nos

4

인터넷 (리포지토리)에 연결되어있을 때 패키지를 찾는 것은 쉽지만 Redhat 또는 Centos DVD 내부의 RPM 패키지에만 액세스 할 수있는 경우 (이는 서버를 복구하고 응용 프로그램이 필요할 때 자주 발생합니다) 아래 명령을 사용하여 인터넷 및 저장소와 완전히 독립적입니다. DVD에 많은 제거 된 패키지가있을 수 있습니다. ~ / cent_os_dvd에 Package 폴더를 마운트하고 "시니 지"를 제공하는 패키지를 찾고 있다고 가정하면 다음을 실행할 수 있습니다.

for file in `find ~/cent_os_dvd/ -iname '*.rpm'`;  do rpm -qlp $file |grep '.*bin/semanage';  if [ $? -eq 0 ]; then echo "is in";echo $file  ; fi;  done


0

여기에서도 패키지와 함께이 작업을 수행 할 수 있습니다. 내 경우에는lsb_release

운영: yum whatprovides lsb_release

응답:

redhat-lsb-core-4.1-24.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-24.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release`

설치를 위해 실행 : yum install redhat-lsb-core

패키지 이름은 번호와 시스템 유형이 없어야하므로 yum packager가 가장 적합한 것을 선택할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.