あるコマンドがどのパッケージに含まれるか探したい
- このコマンド、どこからインストールされたの?
- このコマンドをインストールするには何を入れたら良いの?
これらの疑問を解決するために2つのコマンドが有ります。また或るパッケージで入れたコマンドにどんなものが有るか知りたいとき。パッケージのファイルを知りたいときに使う。
このコマンドは「どこから」インストールされたの
インストールされているコマンドが、どこ由来か、Originを探す。どのパッケージに含まれるのかを知りたい時。
この場合は、インストール済みなので、インストール済みパッケージの中身を探せばいいです。
かと言って、全てのパッケージをlist up して for grep するのは面倒なので、ソレ専用のコマンドが用意されています
たとえば、bin/locate はどこから来たのか。
## ln されている場合があるのでrealpathする apt-file search $(realpath $(which locate ))
それはインストール済みなのか
apt list $(apt-file search $(realpath $(which locate )) | cut -d":" -f 1 )
それは、どんなファイルを持つのか
dpkg -L plocate | grep bin
例 lsusb がどのパッケージか
takuya@:~$ dpkg -S $(which lsusb) usbutils: /usr/bin/lsusb
-S
が思い出せない時は多少強引に
pkg -l | cut -d " " -f 3 | xargs -I@ dpkg -L @ | grep lsusb
逆に、あるパッケージに含まれるコマンドを知りたい
例 util-linuxに含まれるコマンド
dpkg -L util-linux | grep bin/
とすれば、コマンドが出てきます。
インストールしたいコマンドが含まれるパッケージがわからない。
未インストールの場合、dpkg で網羅することが出来ないので、 apt-file を使います。
sudo apt install apt-file
apt-file はapt-lineに含まれる*.debに含まれる、ファイル一覧を取得して、インデックスしてくれます。
takuya@:~$ apt-file search /bin/locate atlc: /usr/bin/locatediff locate: /usr/bin/locate.findutils
初回起動では、ファイル一覧を取得するのでちょっと時間がかかる。
あれ?このコマンドってなんだっけ
普段良く使ってるコマンドがどこから入ってるか調べるのに便利です。
util-linux関連はBSDやmacOS X に含まれてないコマンドもあるのでアレレと思った時に調べるのに使っています。
参考資料
http://www.cyberciti.biz/howto/question/linux/dpkg-cheat-sheet.php
http://d.hatena.ne.jp/stakizawa/20080823/t1
2017-05-06
若干修正