ファイルが属する(インストールされていない)パッケージを見つける方法は?

ファイルが属する(インストールされていない)パッケージを見つける方法は?

Debianシステム(および派生製品):

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

つまり、そのファイルは/bin/lsというファイルに属していますcoreutils

ただし、これはパッケージがインストールされている場合にのみ機能します。そうでなければどうでしょうか?

答え1

適切なファイル

apt-fileバイナリを提供するパッケージを検索する機能を提供します(例:ダーバンまたはUbuntu)、デフォルトではインストールされず、リポジトリにインストールされます。

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

ネットワークピンWeb ベースのソリューションを提供する場合もあります。スクリプトコマンドラインの場合。

パッケージファイル

システムベースのシステム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

マシンにアクセスできない場合、または以前の回答で指定されたコマンドを使用できない場合は、次のものを使用することもできます。WebベースのDebianパッケージ検索エンジン(第二形態、」パッケージ内容の検索")。

答え4

apt-fileは多くの結果を生成できます。 Perl正規表現を使用すると、ほとんど作業を実行できます。ファイルが$ PATHのどこかにインストールされていることを確認するだけです。

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

関連情報