![如何发现实用程序所属的包](https://linux22.com/image/877090/%E5%A6%82%E4%BD%95%E5%8F%91%E7%8E%B0%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%89%80%E5%B1%9E%E7%9A%84%E5%8C%85.png)
我使用 NVIDIA 主页上的官方 .deb 安装了 CUDA。但我遇到了一些麻烦,想重新安装以确保安装过程中的每一步都按预期进行。
因此我'apt-get purge cuda...'
但是现在我仍然有 nvcc,这让我感到困惑,因为我预计它属于 cuda 包。
我如何知道 nvcc 属于哪个包?
答案1
检查一下,apt-file
因为在您的情况下nvcc
是包的一部分(nvidia-cuda-toolkit
)。
首先你必须安装apt-file
sudo apt-get install apt-file
sudo apt-file update
现在开始
apt-file search nvcc
或者
apt-file search --regex /nvcc$
或者
apt-file search $(which nvcc)
要检查nvidia-cuda-toolkit
安装该包的原因,请使用aptitude
。
sudo apt-get install aptitude
aptitude why nvidia-cuda-toolkit
答案2
最简单的方法是dpkg -S
。
因此,要找出哪个包zgrep
中包含该内容,请尝试:
$ dpkg -S `which zgrep`
gzip: /bin/zgrep
这表明它在包裹里gzip
。
当然您也可以只使用文件的路径,例如:
$ dpkg -S /usr/share/dict/words
diversion by dictionaries-common from: /usr/share/dict/words
diversion by dictionaries-common to: /usr/share/dict/words.pre-dictionaries-common
dictionaries-common, wamerican: /usr/share/dict/words
这顺便展示了一个更复杂的例子。
答案3
apt
使用 dpkg 作为后端来安装许多应用程序,并且 dpkg 有一个/var/lib/dpkg/info
目录,其中有许多*.info
文件;这些文件包含有关包附带的每个文件的信息。
因此你可以这样做grep -i --color 'nvcc' /var/lib/dpkg/info/*.list
。但是,这可能会生成一个相当大的列表,因此为了缩小列表,我们可以使用which
实用程序。
which
定位特定的二进制/可执行文件。例如,
xieerqi:$ grep $(which gnome-terminal) /var/lib/dpkg/info>
/var/lib/dpkg/info/gnome-terminal.list:/usr/bin/gnome-terminal.wrapper
/var/lib/dpkg/info/gnome-terminal.list:/usr/bin/gnome-terminal
这告诉 grep 获取gnome-terminal
可执行文件的完整路径,并查找安装了它的包。在本例中,包是gnome-terminal
。
一个不太明显的例子是nm-tool
xieerqi:$ grep $(which nm-tool) /var/lib/dpkg/info/*.list
/var/lib/dpkg/info/network-manager.list:/usr/bin/nm-tool
由此我们知道,它属于network-manager
包
答案4
sudo apt-cache search nvcc
返回:
libnvvm2 - NVIDIA CUDA Compiler NVVM runtime library nvidia-cuda-toolkit - NVIDIA CUDA toolkit
apt-cache 应该已经安装在您的系统上。