Недавно я установил java6 на свой Debian Box. Я попытался использовать javac и заметил, что он не установлен. В конце концов я выяснил (после поиска в Интернете), что javac является частью пакета java6-sdk. Это не первый случай, когда я знаю нужную команду, но не знаю, в каком пакете(ах) она находится.
Мой вопрос - есть ли способ в командной строке выяснить, какой файл принадлежит какому пакету(ам)? Так что если бы я хотел увидеть, к каким пакетам принадлежит javac, он бы вывел java6-sdk, java5-sdk, .. поскольку все они содержат javac.
решение1
apt-file
— это команда, которую вы ищете.
решение2
Вы можете использоватьapt-файл поиск имени файладля этого. Вы могли бы просто пойти вПакеты Debianи поищите в онлайн-версии.
решение3
Я знаю, что это не совсем то, что вы ищете, но:
dpkg -L packagename
выведет список всех файлов, принадлежащихустановленный пакет. (но это нужно для неустановленных пакетов)
Я не знаю, как это делается, но Ubuntu (производная от Debian) предложит следующий пакет:
$ chkrootkit
The program 'chkrootkit' is currently not installed. You can install it by typing:
sudo apt-get install chkrootkit
bash: chkrootkit: command not found
И я часто поступал очевидно: вводил имя файла вместе с «Debian» в Google, чтобы найти пакет.
решение4
вам также может быть интересно взглянуть на пакет dlocate. Он имеет множество полезных опций для вывода списка пакетов и файлов внутри пакетов. Изначально он был написан как гораздо более быстрая версия dpkg -L, dpkg -S и т. д., но с годами приобрел множество полезных функций (при этом сохранив скорость :)
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь автором и сопровождающим Debian dlocate.
Кстати, установите версию dlocate из тестового или нестабильного дистрибутива. Она имеет множество улучшений по сравнению со стабильной версией (в частности, она больше не зависит от GNU locate) и по-прежнему отлично работает в стабильной версии (не зависит от каких-либо новых/обновленных библиотек и т. д.).