我如何找出文件来自哪个 Debian 软件包?
答案1
若要执行此操作而不安装任何额外的软件包,请运行
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
其中 bash 是软件包名称。
另外,Debian 中有几个实用程序可以执行此任务;检查这一页了解一下。我将提到其中两个,apt-file
和dlocate
。
apt-file
搜索其内部缓存,这样您就不必安装所有要搜索的软件包。下面您将找到更详细的指南。
dlocate
是(列出软件包内容的命令)的快速替代方法dpkg -L
,因此,它仅搜索已安装的软件包。搜索由 执行dlocate -S file.name
。
您还可以使用以下方式在线搜索软件包软件包信息网服务器(搜索包裹内容部分)。
安装和使用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
第一个结果看起来不像是可执行文件,第二个看起来是。我们可以进一步调查。运行:
apt-cache show x11-xserver-utils
答对了!这就是包裹。
答案2
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
其中 bash 是软件包名称。
答案3
另一种选择:
$ dpkg -S /bin/bash
bash: /bin/bash
至少在我的 Ubuntu 上,两者似乎都在dpkg
软件包中,因此任何一个都没有真正的优势......
答案4
我对 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:~$