Какой пакет содержит файл: apt-file и dpkg -S
Для пакетов, которые ещё не установлены, — apt-file. Поставьте его и скачайте списки файлов:
sudo apt install apt-file
sudo apt update
apt-file search bin/ifconfigapt update после установки apt-file дополнительно скачивает списки файлов всех пакетов — это займёт немного времени. Ответ apt-file search — строки вида пакет: путь. Имя пакета — до двоеточия; в этом примере — net-tools. Ставится он как обычно: sudo apt install net-tools.
Как искать точнее
apt-file search ищет кусок пути, поэтому короткое слово найдёт сотни файлов. Добавляйте папку или полное имя:
| Что ищете | Запрос |
|---|---|
Команду ifconfig | apt-file search bin/ifconfig |
Библиотеку из ошибки libGL.so.1: cannot open shared object file | apt-file search libGL.so.1 |
Прошивку из W: Possible missing firmware /lib/firmware/i915/… | apt-file search i915/ и имя файла |
| Все файлы пакета | apt-file list net-tools |
Установленные пакеты: dpkg -S
Для файла, который уже есть на диске, apt-file не нужен:
dpkg -S /usr/bin/ssh
dpkg -L openssh-clientПервая команда отвечает, из какого пакета файл (openssh-client: /usr/bin/ssh), вторая — какие файлы поставил пакет.
В Debian 12 многие программы записаны в своих пакетах по старым путям — /bin/… и /sbin/…, хотя лежат в /usr/bin и /usr/sbin. Если dpkg -S /usr/bin/имя отвечает, что путь не найден, попробуйте /bin/имя. Путь к программе покажет command -v имя.
Подсказка прямо в терминале
Пакет command-not-found сам подсказывает, какой пакет поставить, когда команда не найдена:
sudo apt install command-not-found
sudo apt updateПосле этого откройте новое окно терминала. Теперь на неизвестную команду оболочка отвечает не только «команда не найдена», но и предлагает пакет, в котором такая команда есть.
Без установки программ
Тот же поиск есть на сайте пакетов Debian: в разделе поиска по содержимому пакетов выберите выпуск (trixie или bookworm) и введите имя файла. Удобно, если нужно найти пакет для другого компьютера или скачать его файл .deb.
Подводные камни
apt-fileищет только в подключённых источниках. Если программа вcontribилиnon-free, а эти разделы не подключены,apt-fileеё не найдёт.- Команда может называться не так, как пакет:
ifconfig— вnet-tools,dig— вbind9-dnsutils,ping— вiputils-ping. - Если «команда не найдена» отвечает обычному пользователю, а программа есть в
/usr/sbin, ставить ничего не нужно — запустите её черезsudo.