Команда dpkg в Linux

Опубликовано admin - пт, 05/26/2023 - 11:22

В Linux команда dpkg — основной менеджер пакетов таких дистрибутивов как Ubuntu. Утилита устанавливает, создаёт, удаляет, настраивает пакеты формата .deb.

Примеры использования команды Linux dpkg

Содержание

Синтаксис

$ sudo dpkg [option...] action

Параметры

Синтаксис Тип Описание
-i --install Действие Устанавливает пакет
--unpack Действие Распаковывает пакет без настройки
--configure Действие Конфигурирует распакованный пакет
-r --remove Действие Удаляет установленный пакет, но не удаляет файлы конфигурации и другие данные
-P --purge Действие Очищает установленный или удалённый пакет, а также удаляет файлы конфигурации и другие данные
--get-selections Действие Выбирает пакеты с текущим выбором
--set-selections Действие Задаёт состояния выбора файла Из файла, прочитанного Из стандартного ввода
-b --build Действие (Из dpkg-deb)    Создает пакет .deb
-c --contents Действие (Из dpkg-deb) Перечисляет содержимое пакета
-I --info Действие (Из dpkg-deb) Показывает информацию о пакете
-l --list Действие (Из dpkg-запроса) Перечисляет пакеты по шаблону
-L --listfiles Действие (Из dpkg-запроса) Перечислите расположение файлов установленного пакета
-s --status Действие (Из dpkg-запроса) Показывает статус установленного пакета
-S --search Действие (Из dpkg-запроса) Поиск шаблона в установленных пакетах
-R --recursive Вариант Рекурсивно обрабатывает действия в целевом каталоге и подкаталогах
--log= Вариант Записывает изменения статуса в файл
--no-act, --dry-run, --simulate Вариант Показывает вывод без фиксации изменений (Используйте перед действием)

Использование команды Linux dpkg

Действия, изменяющие систему, такие как установка или удаление пакетов, требуют привилегий sudo.

Установка пакета

Утилиту можно использовать для установки пакета .deb следующей командой:

$ sudo dpkg -i имя_пакета.deb

Список установленных пакетов

Для вывода списка установленных пакетов утилита используется с опцией -l:

$ sudo dpkg -l [маска]

Пример:

mensh@139-162-132-20:~$ sudo dpkg -l link*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
un  links          <none>       <none>       (no description available)
mensh@139-162-132-20:~$ 

Для вывода всех пакетов команда используется с опцией -l:

mensh@139-162-132-20:~$ sudo dpkg -l      
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                  Version                                      Architecture Description
+++-=====================================-============================================-============-===================================>
ii  accountsservice                       0.6.55-0ubuntu12~20.04.5                     amd64        query and manipulate user account i>
ii  adduser                               3.118ubuntu2                                 all          add and remove users and groups
ii  alsa-topology-conf                    1.2.2-1                                      all          ALSA topology configuration files
ii  alsa-ucm-conf                         1.2.2-1ubuntu0.13                            all          ALSA Use Case Manager configuration>
ii  amd64-microcode                       3.20191218.1ubuntu1                          amd64        Processor microcode firmware for AM>
rc  apache2                               2.4.41-4ubuntu3.13                           amd64        Apache HTTP Server
ii  apparmor                              2.13.3-7ubuntu5.2                            amd64        user-space parser utility for AppAr>
ii  apport                                2.20.11-0ubuntu27.26                         all          automatically generate crash report>
ii  apport-symptoms                       0.23                                         all          symptom scripts for apport
ii  apt                                   2.0.9                                        amd64        commandline package manager
ii  apt-utils                             2.0.9                                        amd64        package management related utility >
ii  at                                    3.1.23-1ubuntu1                              amd64        Delayed job execution and batch pro>
ii  base-files                            11ubuntu5.7                                  amd64        Debian base system miscellaneous fi>
ii  base-passwd                           3.5.47                                       amd64        Debian base system master password >
ii  bash                                  5.0-6ubuntu1.2                               amd64        GNU Bourne Again SHell
ii  bash-completion                       1:2.10-1ubuntu1                              all          programmable completion for the bas>
ii  bc                                    1.07.1-2build1                               amd64        GNU bc arbitrary precision calculat>
ii  bcache-tools                          1.0.8-3ubuntu0.1                             amd64        bcache userspace tools
ii  bind9-dnsutils                        1:9.16.1-0ubuntu2.14                         amd64        Clients provided with BIND 9
ii  bind9-host                            1:9.16.1-0ubuntu2.14                         amd64        DNS Lookup Utility
ii  bind9-libs:amd64                      1:9.16.1-0ubuntu2.14                         amd64        Shared Libraries used by BIND 9
ii  bolt                                  0.9.1-2~ubuntu20.04.2                        amd64        system daemon to manage thunderbolt>
ii  bsdmainutils                          11.1.2ubuntu3                                amd64        collection of more utilities from F>
ii  bsdutils                              1:2.34-0.1ubuntu9.3                          amd64        basic utilities from 4.4BSD-Lite
ii  btrfs-progs                           5.4.1-2                                      amd64        Checksumming Copy on Write Filesyst>
ii  busybox-initramfs                     1:1.30.1-4ubuntu6.4                          amd64        Standalone shell setup for initramfs
ii  busybox-static                        1:1.30.1-4ubuntu6.4                          amd64        Standalone rescue shell with tons o>
lines 1-32

Команда отображает пакеты в режиме пейджера. Перемещайтесь по страницам с помощью клавиш со стрелками или пробела. Нажмите q, для выхода из списка. В столбцах перечислены имя, версия, архитектура и описание каждого пакета.

Первые три столбца предоставляют полный обзор состояния пакета:

Выбор действия:

u
Неизвестный
i
Установить
h
Держать
r
Удалить
p
Очистить

Статус пакета:

n
Не установлен
c
Файлы конфигурации
H
Половина установлена
U
Распакованный
F
Наполовину настроен
W
Ожидание триггеров
t
Ожидающие триггеры
i
Установлен

Для получения конкретного экземпляра из списка используется следующая команда:

$ sudo dpkg -l

Пример:

mensh@139-162-132-20:~$ sudo dpkg -l bash
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Architecture Description
+++-==============-==============-============-=================================
ii  bash           5.0-6ubuntu1.2 amd64        GNU Bourne Again SHell
mensh@139-162-132-20:~$

Для перечисления нескольких пакетов их имена разделяются пробелом.

Удаление пакетов

Для удаления установленного пакета команда используется с опцией -r:

$ sudo dpkg -r имя_пакета

Очистка пакета

Для очистки пакета утилита используется с опцией -P:

$ sudo dpkg -P

Команда удаляет пакет вместе со всеми файлами конфигурации.

Используйте очистку, чтобы полностью удалить программу из системы.

Проверка установки пакета

Для проверки установки пакета команда используется с опцией -s:

$ sudo dpkg -s

Пример:

mensh@139-162-132-20:~$ sudo dpkg -s apt                
Package: apt
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 4207
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 2.0.9
Replaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)
Provides: apt-transport-https (= 2.0.9)
Depends: adduser, gpgv | gpgv2 | gpgv1, libapt-pkg6.0 (>= 2.0.9), ubuntu-keyring, libc6 (>= 2.15), libgcc-s1 (>= 3.0), libgnutls30 (>= 3.6.12), libseccomp2 (>= 2.4.2), libstdc++6 (>= 9), libsystemd0
Recommends: ca-certificates
Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base
Breaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)
Conffiles:
 /etc/apt/apt.conf.d/01-vendor-ubuntu c69ce53f5f0755e5ac4441702e820505
 /etc/apt/apt.conf.d/01autoremove ab6540f7278a05a4b7f9e58afcaa5f46
 /etc/cron.daily/apt-compat 49e9b2cfa17849700d4db735d04244f3
 /etc/logrotate.d/apt 179f2ed4f85cbaca12fa3d69c2a4a1c3
Description: commandline package manager
 This package provides commandline tools for searching and
 managing as well as querying information about packages
 as a low-level access to all features of the libapt-pkg library.
 .
 These include:
  * apt-get for retrieval of packages and information about them
    from authenticated sources and for installation, upgrade and
    removal of packages together with their dependencies
  * apt-cache for querying available information about installed
    as well as installable packages
  * apt-cdrom to use removable media as a source for packages
  * apt-config as an interface to the configuration settings
  * apt-key as an interface to manage authentication keys
Original-Maintainer: APT Development Team <deity@lists.debian.org>
mensh@139-162-132-20:~$

Строка состояния показывает, установлен ли пакет.

Установка всех пакетов из каталога

Для рекурсивной установки пакетов выполняется следующая команда:

$ sudo dpkg -R -i

Команда устанавливает все пакеты, расположенные в каталоге и любых подкаталогах. Если несколько экземпляров одного и того же пакета распаковываются, происходит только одна конфигурация.

Список местоположений файлов установленных пакетов

Для перечисления файлов пакета и их расположение утилита используется с опцией -L:

$ sudo dpkg -L

Пример:

mensh@139-162-132-20:~$ sudo dpkg -L wget
/.
/etc
/etc/wgetrc
/usr
/usr/bin
/usr/bin/wget
/usr/share
/usr/share/doc
/usr/share/doc/wget
/usr/share/doc/wget/AUTHORS
/usr/share/doc/wget/MAILING-LIST
/usr/share/doc/wget/NEWS.gz
/usr/share/doc/wget/README
/usr/share/doc/wget/changelog.Debian.gz
/usr/share/doc/wget/copyright
/usr/share/info
/usr/share/info/wget.info.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/wget.1.gz
mensh@139-162-132-20:~$

В выводе перечислены все файловые каталоги и местоположения файлов.

Получение имён пакетов

Для получения имён пакетов по выбору используется следующая команда:

mensh@139-162-132-20:~$  sudo dpkg --get-selections
accountsservice				install
adduser						install
alsa-topology-conf			install
alsa-ucm-conf				install
amd64-microcode				install
apache2						deinstall
apparmor					install
apport						install
apport-symptoms				install
apt							install
apt-utils					install
at							install
base-files					install
base-passwd					install
bash						install
bash-completion				install
bc							install
bcache-tools				install
bind9-dnsutils				install
bind9-host					install
bind9-libs:amd64			install
...
unrar						install
unzip						install
update-manager-core			install
update-notifier-common		install
upower						install
usb-modeswitch				install
usb-modeswitch-data			install
usb.ids						install
usbmuxd						install
usbutils					install
util-linux					install
uuid-runtime				install
vim							install
vim-common					install
vim-runtime					install
vim-tiny					install
wget						install
whiptail					install
whois						install
wireless-regdb				install
xauth						install
xdg-user-dirs				install
xfsprogs					install
xkb-data					install
xxd							install
xz-utils					install
zerofree					install
zip							install
zlib1g:amd64				install
mensh@139-162-132-20:~$

В списке показаны имена пакетов и маркировка выбора.

Список установленных пакетов

Для получения списка установленных пакетов используется следующая команда:

$ sudo dpkg --get-selections | grep -v "deinstall" | awk '{ print $1 }'

Команда делает следующее:

  • grep отфильтровывает пакеты с пометкой "deinstall";
  • awk печатает только первый столбец с именами пакетов.

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

Установка выбора пакета

Установка выбора пакета в следующем формате:

$ sudo echo | dpkg --set-selections

Команда ожидает состояние пакета в качестве стандартного ввода. Возможные условия:

  • install;
  • hold;
  • deinstall;
  • purge;
  • unknown.

Например для остановки обновления пакета используется следующая команда:

$ sudo echo cowsay hold | sudo dpkg --set-selections

 Пакет находится в состоянии ожидания, то есть программа не получает автоматических обновлений.

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

Для поиска пакета, содержащего необходимый файл утилита запускается с опцией -S:

$ sudo dpkg -S

Например, необходимо найти apt-get:

mensh@139-162-132-20:~$  sudo dpkg -S apt-get
apt: /usr/share/man/ja/man8/apt-get.8.gz
apt: /usr/share/man/man8/apt-get.8.gz
apt: /usr/share/man/pt/man8/apt-get.8.gz
apt: /usr/share/man/fr/man8/apt-get.8.gz
apt: /usr/share/man/it/man8/apt-get.8.gz
bash-completion: /usr/share/bash-completion/completions/apt-get
apt: /usr/bin/apt-get
bash-completion: /usr/share/bash-completion/completions/slapt-get
apt: /usr/share/man/de/man8/apt-get.8.gz
apt: /usr/share/man/nl/man8/apt-get.8.gz
mensh@139-162-132-20:~$

Поддержка нескольких архитектур

Все пакеты .deb содержат информацию о поддерживаемой архитектуре. Ограничение гарантирует, что система не получит двоичные файлы для неправильной архитектуры.

Некоторые архитектуры изначально поддерживают разные архитектуры. Например, amd64 (64-разрядная система) поддерживает установку i386 (32-разрядная система).

Команда dpkg соответствует архитектуре хоста. Получить информацию можно с помощью следующей команды:

mensh@139-162-132-20:~$  sudo dpkg --print-architecture
amd64
mensh@139-162-132-20:~$

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

$ sudo dpkg --add-architecture <architecture name>

$ sudo dpkg --remove-architecture <architecture name>

В обоих случаях сторонние архитектуры сразу перечисляют обновления вместе с изменениями.

Вывод версии команды dpkg

Для проверки используемой версии dpkg выполняется следующая команда:

mensh@139-162-132-20:~$  sudo dpkg --version
Debian 'dpkg' package management program version 1.19.7 (amd64).
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.
mensh@139-162-132-20:~$

Вывод показывает версию dpkg вместе с архитектурой.

Вывод справки

Для отображения меню справки выполняется следующая команда:

mensh@139-162-132-20:~$  sudo dpkg --help
Usage: dpkg [<option> ...] <command>

Commands:
  -i|--install       <.deb file name>... | -R|--recursive <directory>...
  --unpack           <.deb file name>... | -R|--recursive <directory>...
  -A|--record-avail  <.deb file name>... | -R|--recursive <directory>...
  --configure        <package>... | -a|--pending
  --triggers-only    <package>... | -a|--pending
  -r|--remove        <package>... | -a|--pending
  -P|--purge         <package>... | -a|--pending
  -V|--verify [<package>...]       Verify the integrity of package(s).
...

Comparison operators for --compare-versions are:
  lt le eq ne ge gt       (treat empty version as earlier than any version);
  lt-nl le-nl ge-nl gt-nl (treat empty version as later than any version);
  < << <= = >= >> >       (only for compatibility with control file syntax).

Use 'apt' or 'aptitude' for user-friendly package management.
mensh@139-162-132-20:~$

Для получения полной документации используется  команда man.

Заключение

Из приведённой статьи понятна роль утилиты dpkg в дистрибутивах Linux, основанных на пакетах Debian.

Эта утилита пользователям может быть очень полезна.

Поделиться с друзьями