A S*_*ity 149
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Run Code Online (Sandbox Code Playgroud)
其中 bash 是包名。
whi*_*ark 58
要在不安装任何额外软件包的情况下执行此操作,请运行
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
Run Code Online (Sandbox Code Playgroud)
其中 bash 是包名。
或者,Debian 中有几个实用程序可以执行此任务;检查此页面以获取说明。我会提到其中两个,apt-file和dlocate。
apt-file搜索其内部缓存,从而允许您不安装所有要搜索的包。您将在下面找到更详细的指南。
dlocate是dpkg -L(列出包内容的命令)的快速替代方案,因此,它只搜索已安装的包。搜索由 执行dlocate -S file.name。
您也可以使用packages.debian.org服务器在线搜索包(搜索包的内容部分)。
apt-file最好先更新:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
看看有什么apt-file用:
apt-cache show apt-file
Run Code Online (Sandbox Code Playgroud)
安装它:
sudo apt-get install apt-file
Run Code Online (Sandbox Code Playgroud)
从存储库读取数据(这也可以在没有sudo但创建用户缓存的情况下工作;sudo缓存是系统范围的):
sudo apt-file update
Run Code Online (Sandbox Code Playgroud)
执行搜索。在这个例子中,我们想知道哪个包xrandr可执行文件是:
apt-file search xrandr
Run Code Online (Sandbox Code Playgroud)
它列出了许多带有unxrandr,lxrandr.mo或 的包source_lxrandr.py。在我们的情况下不是很有用。更聪明的搜索:
apt-file search -x /xrandr$
Run Code Online (Sandbox Code Playgroud)
($表示行尾)。示例输出:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
Run Code Online (Sandbox Code Playgroud)
第一个结果看起来不像是可执行的,第二个是。我们可以进一步调查。跑:
apt-cache show x11-xserver-utils
Run Code Online (Sandbox Code Playgroud)
答对了!这是包裹。
Ger*_*erg 47
另一种选择:
$ dpkg -S /bin/bash
bash: /bin/bash
Run Code Online (Sandbox Code Playgroud)
至少在我的 Ubuntu 上,两者似乎都在dpkg包中,所以对任何特定的都没有真正的优势......
Cir*_*郝海东 18
安装生成的文件将不会被 找到dpkg -S,如:https : //askubuntu.com/a/667227/52975
例如,/bin/nc安装包时出现netcat-openbsd。
但是在:
dpkg -S /bin/nc
Run Code Online (Sandbox Code Playgroud)
我们得到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)"
Run Code Online (Sandbox Code Playgroud)
不熟悉 Debian,当我尝试这个时我很困惑:
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
Run Code Online (Sandbox Code Playgroud)
经过一番调查,我找到了这个包:
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:~$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63612 次 |
| 最近记录: |