파일이 속한 (설치되지 않은) 패키지를 찾는 방법은 무엇입니까?

파일이 속한 (설치되지 않은) 패키지를 찾는 방법은 무엇입니까?

Debian 시스템(및 파생 제품):

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

즉, 해당 파일은 /bin/ls이라는 파일에 속해 있습니다 coreutils.

하지만 이는 패키지가 설치된 경우에만 작동합니다. 그렇지 않다면 어떨까요?

답변1

적절한 파일

apt-file바이너리를 제공하는 패키지를 검색하는 기능을 제공합니다(예:더반또는우분투), 기본적으로 설치되지 않고 저장소에 설치됩니다.

apt-file search <path-to-file>

검색하기 전에 한 번 업데이트해야 할 수도 있습니다...

apt-file update 

예를 들어 제거된 바이너리를 검색해 보겠습니다 mysqldump.

$ apt-file search /usr/bin/mysqldump

mysql-client-5.1: /usr/bin/mysqldump
mysql-client-5.1: /usr/bin/mysqldumpslow
mysql-cluster-client-5.1: /usr/bin/mysqldump
mysql-cluster-client-5.1: /usr/bin/mysqldumpslow

(제거된) 패키지의 내용을 나열하는 것도 가능합니다:

$ apt-file list mysql-client-5.1

mysql-client-5.1: /usr/bin/innochecksum
mysql-client-5.1: /usr/bin/innotop
mysql-client-5.1: /usr/bin/myisam_ftdump
mysql-client-5.1: /usr/bin/mysql_client_test
...

yumdnf최신 Fedora/RedHat 기반 Linux 배포판으로 대체 되었습니다 . 아래를 참조하세요.

yum설치되거나 제거된 바이너리를 검색하려면 명령 whatprovides(또는 )을 수락합니다.provides

yum whatprovides <path-to-file>

다시 말하지만 설치되지 않았습니다 mysqldump.

$ yum whatprovides /usr/bin/mysqldump

mysql-5.1.51-2.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

mysql-5.1.51-1.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

dnf

dnfrepoquery유사하게 사용할 수 있는 하위 명령이 있습니다 yum whatprovides.

dnf repoquery --whatprovides /path/to/file

예를 들어:

$ dnf repoquery --whatprovides '*/mysqldump'
mariadb-3:10.5.22-1.el9_2.alma.1.x86_64
mysql-0:8.0.36-1.el9_3.x86_64

zyppersearch옵션과 함께 사용하면 명령은 파일 목록을 검사할 수 있습니다 -f.

zypper se -f /bin/mksh
Loading repository data...
Reading installed packages...

S | Name | Summary           | Type   
--+------+-------------------+--------
  | mksh | MirBSD Korn Shell | package

네트워크 핀웹 기반 솔루션을 제공하는 경우도 있습니다.스크립트명령줄의 경우.

패키지 파일

시스템 기반 시스템 pkgtools에 적합합니다 . pacman위의 다른 기능과 유사한 검색 기능을 제공합니다.

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...

답변2

이를 위한 표준 도구는 다음과 같습니다.적절한 파일. 실행 apt-file update하여 인덱스 파일을 다운로드합니다. 출력은 다음과 같습니다.

Downloading complete file ftp://ftp.is.co.za/debian/dists/squeeze/Contents-i386.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.6M  100 16.6M    0     0  33191      0  0:08:47  0:08:47 --:--:-- 38951

그런 다음 apt-file search search_term.

답변3

머신에 액세스할 수 없거나 이전 답변에 제공된 명령을 사용할 수 없는 경우 다음을 사용할 수도 있습니다.웹 기반 데비안 패키지 검색 엔진(두 번째 형태, "패키지 내용 검색").

답변4

apt-file은 많은 결과를 생성할 수 있습니다. Perl 정규식을 사용하면 작업을 거의 수행할 수 있습니다. 파일이 $PATH 어딘가에 설치되어 있는지 확인하기만 하면 됩니다.

apt-file find --regexp "/$COMMAND$" | grep -E "($(tr : '|' <<< "$PATH"))/$COMMAND$""

관련 정보