Маленькие хитрости dpkg

В статье затронуты некоторые малоизвестные и/или редкоиспользуемые, но необходимые функции dpkg

Маленькие хитрости dpkg

Версия 1.1 от 18 февраля 2008

Составлено: Anton Tarasov aka Ant0 (mailbox@ant0.ru)

Быстрый переход:


Поиск пакета, которому принадлежит конкретный файл.

Иногда не понятно какому пакету принадлежит данный файл в системе. Будь то исполняемый файл, библиотека и тп.

Для этого существует команда dpkg -S чего_ищем, но здесь есть маленькая хитрость:

Если указать просто имя програмки (к примеру ssh), то выдастся много ненужного мусора. Чтобы этого не происходило, нужно указывать полный путь к данной программе:

$ which ssh

/usr/bin/ssh

$ dpkg -S /usr/bin/ssh

openssh-client: /usr/bin/ssh

или проще:

$ dpkg -S `which ssh`

openssh-client: /usr/bin/ssh

Здесь видно что программа ssh входит в пакет openssh-client.


Удаление группы пакетов по признаку в названии.

Иногда хочется удалить группу пакетов содержащих что-то общее в названии (к примеру kde или x-server).

Для этого поможет команда dpkg -l 'чего_ищем' - показывает все пакеты удовлетворяющие запросу.

К примеру: удалить все что содержит kde:

dpkg -P `dpkg -l '*kde*' | awk '{ print $2 }' | sed '1,6d'`

здесь конвеер в подоболочке:

  • dpkg -P пакет(ы) - удалить пакет(ы) вместе с конфигурационными файлами
  • dpkg -l '*kde*' - показать все пакеты содержащие слово kde в любой части слова
  • awk '{ print $2 }' - печатать только второй столбик (содержащий имена пакетов)
  • sed '1,6d' - удалить первые 6 строк (мусор)

У данного конвеера есть маленький недочет: dpkg пытается удалить даже не установленные пакеты в системе. Скриптик работающий более правильно пусть будет домашним заданием! ;-)


Прочие вкусности.

  • dpkg -P имя_пакета - удалить пакет вместе с конфигурационными файлами;
  • dpkg -s имя_пакета - показать подробную информацию о пакете;
  • dpkg -L имя_пакета - показать список файлов содержащихся в пакете.