it-swarm-ko.tech

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

간단한 질문 : 시스템의 파일 경로가 주어지면 사용할 수있는 셸 명령 (또는 GUI 방법)이 있습니까? 어떤 패키지에 넣었는지 알려줍니다. 파일이 실제로 패키지에서 나온 것으로 가정합니다.

보너스 질문 : 시스템에 설치되지 않은 파일 인 경우 어떻게합니까? 예를 들어, 파일을 찾아서 어떤 패키지가 제공하는지 확인할 수있는 웹 사이트가 있습니까?

460
David Z

dpkg 명령을 사용하여 파일을 소유 한 설치된 패키지를 찾을 수 있습니다.

man dpkg에서 :

-S, --search filename-search-pattern ... 
 설치된 패키지에서 파일 이름을 검색합니다. 

예:

$ dpkg -S /bin/ls
coreutils: /bin/ls

전체 경로 또는 파일 이름 만 사용하여 검색 할 수 있습니다.

컴퓨터에 아직 설치되지 않은 파일을 검색하려면 buntu Packages Search

427
Ressu

apt-file 명령은 명령 줄에서이를 수행 할 수 있습니다. 소스에서 패키지를 빌드 할 때 자주 사용합니다. 시스템에 이미 설치된 패키지에서 제공 한 파일의 경우 apt-cache 이 다른 선택입니다.

_apt-file_를 설치하려면 다음을 수행하십시오.

_Sudo apt-get install apt-file
_

그런 다음 데이터베이스를 업데이트해야합니다.

_apt-file update
_

마지막으로 파일을 검색하십시오.

_$ apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h
_

그러나 훨씬 친숙한 방법은 buntu Packages Search 웹 사이트를 사용하는 것입니다. 특정 파일 이름에 대한 "패키지 내용 검색"옵션이 있습니다.

235
jbowtie

설치되지 않은 패키지에서 파일을 찾기위한 apt 파일도 있습니다. 예를 들면 다음과 같습니다.

apt-file list packagename
43
ptman

buntu Packages 웹 사이트에서 다양한 Ubuntu 릴리스에 포함 된 패키지의 내용을 검색 할 수 있습니다. " 패키지 내용 검색 "제목 아래를보십시오.

예를 들어, 다음은 lucid (10.04)의 libnss3.so에 대한 검색 결과입니다.

http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&Arch=any

17
moberley

어떤 응용 프로그램이 아닌 어떤 패키지를 의미합니다. 응용 프로그램은 패키지 관리자입니다 (예 : Software Center.

dpkg 사용 :

dpkg -S /usr/lib/tracker/tracker-store
dpkg -S tracker-extract
dpkg -S tracker-miner-fs

% dpkg -S /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

apt-file 사용 :

apt-file search /usr/lib/tracker/tracker-store

또는 가능하다 :

apt-file search --regex /tracker-extract$
apt-file search --regex /tracker-miner-fs$

% apt-file search /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

또는 Search the contents of packages 섹션에서 온라인 여기 .

enter image description here

enter image description here

13
A.B.

이것은 Alexx Roche의 탁월한 답변 의 확장입니다. 그 답변을 편집하려고했지만 거절되었습니다 (Alexx는 아니지만)


시스템에 설치된 which을 (를) 추적하려고했습니다. 약간의 작업 후 나는 /usr/local/bin/apt-whatprovides

#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"

BINARY="$(realpath $(which [email protected]) 2>/dev/null)"
[ -z "$BINARY" ] && BINARY="[email protected]"
echo Searching for $BINARY
PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")"
echo "${PACKAGE}"

설치된 대부분의 것들에 대해서는 다음을 사용할 수 있습니다.

apt-file search $(realpath $(which THING)) | grep 'THING$'

설치되지 않은 것의 경우 다음을 사용할 수 있습니다.

apt-file search THING | grep '/THING$'

apt-whatprovides 스크립트는 시스템에 있거나없는 파일에 대해 작동합니다. 예를 들어, 내 시스템에는 Dig가 없지만 ping이 있었으므로 결과는 다음과 같습니다.

[email protected]:~ $ apt-whatprovides ping
Searching for /bin/ping
inetutils-ping: /bin/ping
iputils-ping: /bin/ping

[email protected]:~ $ apt-whatprovides Dig
Searching for Dig
dnsutils: /usr/bin/Dig
epic4: /usr/share/epic4/script/Dig
epic4-help: /usr/share/epic4/help/8_Scripts/Dig
knot-dnsutils: /usr/bin/Dig

Searching for은 (는) ping (설치됨)의 전체 경로이며 Dig의 이진 이름 만 설치되지 않았습니다. 이렇게하면 검색하지 않아도 dnsutils을 (를) 설치해야한다는 것을 알 수있었습니다. https://packages.ubuntu.com/#search_contents

3
Bruno Bronosky

시스템에 설치된 which을 (를) 추적하려고했습니다. 약간의 작업을 한 후 나는 apt-whatprovides를 만들었습니다.

#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"

BINARY=$(realpath $(which [email protected]))
PACKAGE=$(apt-file search $BINARY|grep -E ":\s*${BINARY}$")
echo ${PACKAGE%:*}

대부분의 것들에 대해서만 사용할 수 있지만

apt-file search $(realpath $(which THING))|grep 'THING$'
3
Alexx Roche

우분투 패키지가 이미있는 소프트웨어를 컴파일하는 경우 apt-get build-dep $PACKAGENAME를 실행할 수 있기 때문에 이렇게해야 할 수도 있습니다. $PACKAGENAME을 (를) 컴파일하는 데 필요한 모든 패키지가 설치됩니다.

2
Rory