바이너리의 소스 패키지를 찾는 명령?


33

which바이너리의 전체 이름을 나타내는 명령 이 있다는 것을 알고 있습니다 (예 :) which sh. 그러나 특정 바이너리를 제공하는 패키지를 에코하는 명령이 있다고 확신합니다. 그런 명령이 있습니까? 그렇다면 무엇입니까? 이것을 실행할 수 있기를 원합니다.

commandName ls

그리고 얻다

coreutils

예를 들어.

답변:


36

dpkg -S명령을 찾고 있다고 생각합니다 ( dpkg에 자주 사용되는 옵션 참조 ).


4
고맙습니다! dpkg -S `which COMMANDHERE`나를 위해 일했다.
Delan Azabani

젠투 : qfile <name>
Sergei

dpkg -S소스 (코드) 패키지의 이름과 다를 수있는 이진 패키지 이름을 찾습니다.
티노

완전성을 위해, 옵션 -S의 짧은 형태 --search가 실제로는 dpkg-query명령에 대한 옵션입니다 (그러나 일반도 dpkg작동합니다)
waldyrious

10

설치하지 않은 패키지에서 파일을 찾으려면 apt-file을 사용 하십시오.

apt-get install -y apt-file
apt-file update

그런 다음 무언가를 찾으십시오.

apt-file search /usr/bin/file

또는

apt-find search file

여기서 "file"은 검색하려는 이름입니다.

모든 데비안 시스템에서이 작업을 수행하고 싶지 않다면이 스크립트를 사용할 수 있습니다.

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

나는 그때 그것을 채찍질했지만 잘 작동하는 것 같습니다.

참고 : "dpkg -S"는 이미 설치 한 항목 만 찾습니다.


3
-y매개 변수를 사용하면 위험하므로 여러 가지 예를 말할 수 있습니다. 스크립트에서는 괜찮을지 모르지만 첫 번째 명령은 사용자 시스템의 모양을 알 수 없으므로 실제로 읽지 apt-get install apt-file않아야합니다 -y.
jmiserez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.