Ubuntu / Debian에서 파일이 속한 패키지를 찾으십니까?


300

Ubuntu 8.04 시스템에서 작업 할 때 프로그램, 매뉴얼 페이지 또는 기타 파일이없는 경우가 종종 있습니다. 주어진 파일이 들어있는 패키지를 찾는 간단한 방법이 있습니까 (이미 설치되어 있는지 여부)? 아마도 apt 또는 dpkg에 대한 모호한 옵션이 있습니까?



25
dpkg -S /path/to/file패키지가 설치되어있는 경우
Zaz

답변:


247
apt-file search filename

또는

apt-file search /path/to/file


설치하려면 다음 apt-file을 사용하십시오.

sudo apt-get install apt-file

데이터베이스를 사용하려면 먼저 데이터베이스를 업데이트해야합니다.

sudo apt-file update

7
참고 : apt-file은 리포지토리에서 제공하는 Contents-amd64.gz에 의존하는 것 같습니다. 모든 타사 저장소가이 파일을 제공하는 것은 아닙니다.
Jokester

3
그것은 나를 위해 작동하지 않았다. 데이터베이스를 업데이트했지만 아무것도 반환하지 않습니다. dpkg -S아래 설명대로 작동합니다.
Northys

404

(Debian / Ubuntu) 파일이 속한 패키지를 확인하십시오 .

dpkg -S /usr/bin/ls

'dpkg -S'는 제공 한 문자열과 일치하므로 'ls'를 인수로 사용하면 파일 이름의 어느 곳에 나 'ls'가있는 패키지의 모든 파일과 일치합니다. 따라서 일반적으로 절대 경로를 사용하는 것이 좋습니다. 두 번째 예에서 dpkg로 알려진 12,000 개의 파일이 기본 문자열 'ls'와 일치 함을 알 수 있습니다.


33
파일이 이미 설치된 경우에만 해당
John T

19
이와 달리 apt-file패키지를 통해 수동으로 설치 한 경우 파일에서 패키지를 찾습니다 dpkg -i.
tanius

4
당신이 얻을 경우 때 dpkg - 쿼리 : 어떤 경로가 일치하는 패턴이 발견 이 시도 : dpkg -S "$(readlink -fn "$(which rename)")".
Pablo A

1
이상한, 이것은 나를 위해 작동하지 않았다 dpkg-query: no path found matching pattern /usr/bin/java,에 파일이 있지만/usr/bin/java
nnyby

@nnyby Pablo A의 댓글보기
vog

19

packages.debian.org 는이 작업을 수행하기 위해 항상 사용하는 것입니다. 파일 이름의 일부를 찾을 수 있기 때문에 apt 파일보다 우수합니다. 또한 주요 패키지 목록에 연결되어 있으며 설명, 버그 등이 모두 나열되어 있습니다. 커맨드 라인에서 유용하지는 않지만 여전히 유용합니다.

속도를 위해 URL을 북마크했습니다.

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

Firefox에서 키워드로 "debfind"를 추가 했으므로 (책갈피 관리자에서 "more"를 클릭하면 강조 표시됨) "debfind"를 입력하면 작동합니다. 다른 버전의 배포판에 대해 '스위트'를 불안정에서 안정 또는 테스트로 변경할 수 있습니다.


그래도 사용자 정의 저장소에서는 작동하지 않습니다.
Ctrl-C

자동화와 관련하여 잘못된 선택.
Alexander Shcheblikin

11

dlocate를 사용할 수도 있습니다. 매뉴얼 페이지에서;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.

1
dlocate또한 제가 가장 좋아하는 방법으로 매우 신뢰할 수 있습니다.
Avio

2
@Avio dlocatesudo update-dlocatedb먼저 실행하지 않으면 최근에 설치된 패키지를 찾지 못합니다 . 이 명령은 매일 자동으로 /etc/cron.daily/dlocate에서 실행됩니다
jarno

4

와지 그를 찾았어요

wajig whichpackage /path/to/file 

예.

wajig whichpackage /etc/apt/sources.list

Wajig는 편리한 명령 줄 또는 콘솔 도구로, 배우고 싶지 않은 모든 apt-get, dpkg의 장점을 감 쌉니다. .

wajig를 설치하려면 다음을 사용하십시오.

apt-get install wajig

이 'package'명령 자체는 apt 파일에 따라 다릅니다.

당신이 그것을 사용하기 전에 당신은 여전히 ​​데이터베이스를 업데이트해야 할 것입니다 :-wajig update whixh가 apt-get update도 파일 캐시를 업데이트하는지 알지 못하지만 데이터베이스가 업데이트 될 수 있습니다.

sudo wajig update

sudo apt-file update

(그리고 Super Cow, Easter egss?!)


2

Simmilar는 데비안에 대한 jamuraa의 답변으로, 우분투에 대해서는 http://packages.ubuntu.com/ 을 방문 하십시오 . 파일 경로를 입력 할 수있는 "패키지 내용 검색"검색 상자 를 찾으려면 조금 아래로 스크롤해야 합니다.


이제 Raspbian만이 하나를 가지고 있다면 :)
XTL


0

찾을 수없는 명령 패키지는 잠재적 인 명령과 데비안 패키지 이름에 대한 힌트를 제공합니다. bash 쉘에 명령을 입력하고 출력을 보면 작동합니다.

예를 들어 명령 이름을 알고있는 경우 :

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

명령을 알 수 없으면 몇 가지 추측이 적용됩니다.

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found

그러나 요청 된 OP와 같은 임의의 파일에는 작동하지 않습니다.
CVn

프로그램이 유해한 일을하고 IS가 설치된 경우 문제가되는 팁입니다. -h또는 --help끝에 추가 하면 약간 도움이 될 것입니다. -h마지막에 추가 하면 이것이 충분히 안전 해지면 권장 할 것이지만 OP가 요구하는 것을 달성하는 좋은 방법은 아닙니다.
Dr Beco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.