ファイルがどのDebianパッケージから来たのかをどうやって知ることができますか?
Debianにはこのタスクを実行するユーティリティがいくつかあります。説明は このページ で確認してください。そのうちの2つ、apt-file
とdlocate
に言及します。
apt-file
は内部キャッシュを検索するので、検索したいすべてのパッケージをインストールすることはできません。以下に詳細なガイドがあります。
dlocate
はdpkg -L
(パッケージの内容を一覧表示するコマンド)の高速な代替手段であり、そのため、インストール済みのパッケージのみを検索します。検索はdlocate -S file.name
によって実行されます。
packages.debian.org server(theパッケージの内容を検索するセクション)を使ってオンラインでパッケージを検索することもできます。
apt-file
のインストールと使用最初に更新することをお勧めします。
Sudo apt-get update
apt-file
が何のためにあるのかを見てください。
apt-cache show apt-file
それをインストールしてください。
Sudo apt-get install apt-file
リポジトリからデータを読み込みます(これはSudo
がなくても動作しますが、その後ユーザーのキャッシュが作成されます。Sudo
があるとキャッシュはシステム全体に適用されます)。
Sudo apt-file update
検索します。この例では、どのパッケージxrandr
が実行可能かを知りたいと思います。
apt-file search xrandr
それはunxrandr
、lxrandr.mo
またはsource_lxrandr.py
で多くのパッケージをリストします。私たちの場合はあまり役に立ちません。もっと賢い検索:
apt-file search -x /xrandr$
($
は行末を表します)。出力例
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
最初の結果は実行可能ファイルには見えませんが、2番目の結果はそうです。さらに調査することができます。実行します。
apt-cache show x11-xserver-utils
ビンゴ!これがパッケージです。
user@Host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Bashはパッケージ名です。
もう一つの選択肢:
$ dpkg -S /bin/bash
bash: /bin/bash
少なくとも私のUbuntuでは、両方ともdpkg
パッケージに入っているように思われるので、特定のものにとって本当の利点はありません...
インストール生成ファイルは、 https://askubuntu.com/a/667227/52975 で説明されているようにdpkg -S
によって検出されません。
たとえば、パッケージ/bin/nc
をインストールすると、netcat-openbsd
が表示されます。
しかし:
dpkg -S /bin/nc
dpkg-query: no path found matching pattern /bin/nc
が返されます。
これは、インストール後に実行される postinst script 内の/bin/nc
呼び出しによってupdate-alternatives
が生成されるために発生します。
/bin/nc
の別のバージョンがnetcat-traditional
パッケージによって提供されるので、これはこのように働きます。
そのような生成されたファイルを見つける一般的な方法はないと思います。代替シンボリックリンクの特定のケースでは、readlink -f
でリンクをたどることができます。
dpkg -S "$(readlink -f /bin/nc)"
Debianに慣れていないので、これを試したとき私は困惑しました。
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
ちょっと調べてみると、パッケージが見つかりました。
kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$