간단한 질문 : 시스템의 파일 경로가 주어지면 사용할 수있는 셸 명령 (또는 GUI 방법)이 있습니까? 어떤 패키지에 넣었는지 알려줍니다. 파일이 실제로 패키지에서 나온 것으로 가정합니다.
보너스 질문 : 시스템에 설치되지 않은 파일 인 경우 어떻게합니까? 예를 들어, 파일을 찾아서 어떤 패키지가 제공하는지 확인할 수있는 웹 사이트가 있습니까?
dpkg
명령을 사용하여 파일을 소유 한 설치된 패키지를 찾을 수 있습니다.
man dpkg
에서 :
-S, --search filename-search-pattern ... 설치된 패키지에서 파일 이름을 검색합니다.
예:
$ dpkg -S /bin/ls
coreutils: /bin/ls
전체 경로 또는 파일 이름 만 사용하여 검색 할 수 있습니다.
컴퓨터에 아직 설치되지 않은 파일을 검색하려면 buntu Packages Search
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 웹 사이트를 사용하는 것입니다. 특정 파일 이름에 대한 "패키지 내용 검색"옵션이 있습니다.
설치되지 않은 패키지에서 파일을 찾기위한 apt 파일도 있습니다. 예를 들면 다음과 같습니다.
apt-file list packagename
buntu Packages 웹 사이트에서 다양한 Ubuntu 릴리스에 포함 된 패키지의 내용을 검색 할 수 있습니다. " 패키지 내용 검색 "제목 아래를보십시오.
예를 들어, 다음은 lucid (10.04)의 libnss3.so에 대한 검색 결과입니다.
어떤 응용 프로그램이 아닌 어떤 패키지를 의미합니다. 응용 프로그램은 패키지 관리자입니다 (예 : 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
섹션에서 온라인 여기 .
예
이것은 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
시스템에 설치된 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$'
우분투 패키지가 이미있는 소프트웨어를 컴파일하는 경우 apt-get build-dep $PACKAGENAME
를 실행할 수 있기 때문에 이렇게해야 할 수도 있습니다. $PACKAGENAME
을 (를) 컴파일하는 데 필요한 모든 패키지가 설치됩니다.