it-swarm-ja.com

このパッケージがファイルを所有しているかを調べるにはどうすればよいですか?

ファイルがどのDebianパッケージから来たのかをどうやって知ることができますか?

Debianにはこのタスクを実行するユーティリティがいくつかあります。説明は このページ で確認してください。そのうちの2つ、apt-filedlocateに言及します。

apt-fileは内部キャッシュを検索するので、検索したいすべてのパッケージをインストールすることはできません。以下に詳細なガイドがあります。

dlocatedpkg -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

それはunxrandrlxrandr.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

ビンゴ!これがパッケージです。

42
whitequark
[email protected]:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

Bashはパッケージ名です。

もう一つの選択肢:

$ dpkg -S /bin/bash
bash: /bin/bash

少なくとも私のUbuntuでは、両方ともdpkgパッケージに入っているように思われるので、特定のものにとって本当の利点はありません...

39

インストール生成ファイルは、 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に慣れていないので、これを試したとき私は困惑しました。

[email protected]:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
[email protected]:~$ 

ちょっと調べてみると、パッケージが見つかりました。

[email protected]:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
[email protected]:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
[email protected]:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
[email protected]:~$ 
2
Philip Kearns