Как обнаружить пакет, который утилита принадлежит [duplicate]

7

Я установил CUDA, используя официальный .deb, на главной странице NVIDIA. Но я столкнулся с некоторыми проблемами и хотел повторить установку, чтобы каждый шаг по пути работал так, как ожидалось.

Таким образом, I 'apt-get purge cuda...'

Но теперь у меня все еще есть nvcc, который меня смущает, поскольку я ожидал, что он будет принадлежать пакету cuda. ​​

Как определить, к какому пакету принадлежит nvcc?

    
задан Sim 27.10.2015 в 04:34
источник

4 ответа

8

Проверьте с 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
    
ответ дан A.B. 27.10.2015 в 05:57
источник
5

Самый простой способ сделать это - 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

Это, кстати, показывает более сложный пример.

    
ответ дан abligh 27.10.2015 в 09:22
1

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 package

    
ответ дан Sergiy Kolodyazhnyy 27.10.2015 в 06:20
1

sudo apt-cache search nvcc

возвращает:

libnvvm2 - NVIDIA CUDA Compiler NVVM runtime library nvidia-cuda-toolkit - NVIDIA CUDA toolkit

apt-cache уже должен быть установлен в вашей системе.

    
ответ дан Manos Ikonomakis 27.10.2015 в 10:30