如何发现实用程序所属的包

如何发现实用程序所属的包

我使用 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 应该已经安装在您的系统上。

相关内容