Команды DPKG

8.3 Как узнать, какие пакеты установлены в системе Debian?


Чтобы получить список всех установленных пакетов, выполните команду

     dpkg --list

Эта команда выведет для каждого пакета однострочную сводку, включающую два символа состояния (объясняемые в заголовке), имя пакета, установленную версию и краткое описание.

Чтобы узнать состояние пакетов, имена которых начинаются с «foo», выполните команду:

     dpkg --list 'foo*'

Чтобы получить более подробный отчёт о состоянии определённого пакета, выполните команду:

     dpkg --status имя_пакета

8.4 Как посмотреть список файлов установленного пакета?

Чтобы вывести список файлов установленного пакета foo, выполните команду

     dpkg --listfiles foo

Учтите, что файлы, созданные сценариями установки, не отображаются.

8.5 Как определить пакет, которому принадлежит определённый файл?

Чтобы определить, в каком пакете содержится файл с именем foo, выполните одну из следующих команд:

  • dpkg --search имя_файлаЭта команда ищет имя_файла в установленных пакетах. (Это, в настоящий момент, эквивалентно поиску всех файлов с расширением .list в каталоге /var/lib/dpkg/info/ и выводу имён всех пакетов, которые содержат заданное имя файла и отклонения (diversions).)Более быстрая альтернатива этому — программа dlocate.
         dlocate -S  имя_файла
        
  • zgrep foo Contents-ARCH.gzЭта команда ищет файлы, содержащие в своих полных именах путей подстроку foo. Файлы Contents-ARCH.gz (где ARCH представляет нужную архитектуру) расположены в основных каталогах пакетов (main, non-free, contrib) на FTP-сайте Debian (то есть, в /debian/dists/jessie). Файл Contents относится только к тем пакетам, что расположены в структуре подкаталогов того же каталога, где находится и он сам. Поэтому, чтобы найти пакет, содержащий файл foo, пользователю нужно искать более чем в одном файлеContents.Преимущество этого метода над dpkg --search состоит в том, что будут найдены файлы в тех пакетах, которые могут быть не установлены в вашей системе.
  • apt-file search fooЕсли вы установите пакет apt-file, то приведённая выше команда выполнит поиск файлов, содержащих в своих полных путях подстроку или регулярное выражение foo. Преимущество этой команды перед приведёнными ранее в том, что вам не нужно будет получать файлы Contents-ARCH.gz, так как это будет сделано автоматически для всех источников, описанных в /etc/apt/sources.list, при запуске (с правами суперпользователя) команды apt-file update.

-Просмотр списка установленных пакетов

Что бы посмотреть список установленных пакетов можно использовать одну из команду:

$dpkg --get-selections "*"

А если нужно посмотреть и версии:

$dpkg -l

-Просмотр доступных версий пакета в репозиториях

$apt-cache showpkg exim4-daemon-heavy

-Обновление списка доступных пакетов

#apt-get update

-Определить, какие пакеты зафиксированы через aptitude

#aptitude search "~ahold" | grep "^.h"

-Поиск проблемных пакетов

Следующая команда покажет пакеты установленные частично (Half-Installed), настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях:

#dpkg --audit

-Наличие новых версий установленных пакетов:

#aptitude search '?upgradable' --display-format '%p# %v# %V# %t'

-Установка конкретной версии пакета:

#apt-get install php=5.2.6.dfsg.1-1+lenny9

При этом версия должна указываться именно такая, как она определяется через apt-cache showpkg php5.

-Удаление «мёртвых» пакетов:

После установки пакета, с ним тянется зависимости — другие пакеты. Но если вы удалили пакет, как избавится от этих установленных по зависимости пакетов? Нужно выполнить такие команды:

#apt-get autoclean

рекомендуется (использовать периодически) для очистки от пакетов .deb которые больше не используются.

#apt-get autoremove

удаляет неудалённые зависимости от уже удалённых пакетов
Так же можно чистить папку архива пакетов /var/cache/apt/archives/

-Поиск пакета, содержащего нужный файл

$dpkg -S /bin/ping

-Проверить зависимости

# apt-get check

— От каких пакетов зависит нужный пакет

$qdepends -r ИМЯ_ПАКЕТА |tr ' ' '\n' |sort