題 如何找出擁有文件的軟件包?


我如何找出文件來自哪個Debian包?


83
2017-08-23 10:23


起源




答案:


Debian中有幾個實現此任務的實用程序;校驗 這一頁 作為描述。我會提到其中兩個, apt-file 和 dlocate

apt-file 搜索其內部緩存,從而允許您不安裝要搜索的所有包。您將在下面找到更詳細的指南。

dlocate 是一個快速的替代品 dpkg -L (列出包內容的命令),因此,它僅搜索已安裝的包。搜索由。執行 dlocate -S file.name

您也可以使用在線搜索包 packages.debian.org 服務器( 搜索包的內容 部分)。


安裝和使用 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

第一個結果看起來不像可執行文件,第二個結果看起來像。我們可以進一步調查。跑:

apt-cache show x11-xserver-utils

答對了!這是包。


39



這個答案的第一個環節(debianhelp.co.uk/findfile.htm)現在似乎已經不復存在了。 - rogpeppe


user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

其中bash是包名。


90



這個答案遠比接受的答案好得多! - Bex


另一種選擇:

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

至少在我的Ubuntu上,兩者似乎都在 dpkg 包,所以對任何特定的一個都沒有真正的優勢......


35





安裝生成的文件 不會被發現 dpkg -S,如上所述: https://askubuntu.com/a/667227/52975

例如, /bin/nc 安裝程序包時出現 netcat-openbsd

但是:

dpkg -S /bin/nc

我們得到 dpkg-query: no path found matching pattern /bin/nc

這是因為 /bin/nc 是由...生成的 update-alternatives 打電話給 postinst腳本 安裝後運行。

它是這樣的,因為另一個版本 /bin/nc 是由提供 netcat-traditional 包。

我認為沒有找到這種生成文件的一般方法。在替代符號鏈接的特定情況下,我們可以按照鏈接 readlink -f

dpkg -S "$(readlink -f /bin/nc)"

9





不熟悉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:~$ 

2