В Linux команда dpkg
— основной менеджер пакетов таких дистрибутивов как Ubuntu. Утилита устанавливает, создаёт, удаляет, настраивает пакеты формата .deb
.
Содержание
- Синтаксис
- Параметры
- Использование команды Linux dpkg
- Установка пакета
- Список установленных пакетов
- Удаление пакетов
- Очистка пакета
- Проверка установки пакета
- Установка всех пакетов из каталога
- Список местоположений файлов установленных пакетов
- Получение имён пакетов
- Список установленных пакетов
- Установка выбора пакета
- Поиск пакета, содержащего конкретные файлы
- Поддержка нескольких архитектур
- Вывод версии команды dpkg
- Вывод справки
- Заключение
Синтаксис
$ sudo dpkg [option...] action
Параметры
Синтаксис | Тип | Описание |
---|---|---|
-i |
Действие | Устанавливает пакет |
--unpack |
Действие | Распаковывает пакет без настройки |
--configure |
Действие | Конфигурирует распакованный пакет |
-r |
Действие | Удаляет установленный пакет, но не удаляет файлы конфигурации и другие данные |
-P |
Действие | Очищает установленный или удалённый пакет, а также удаляет файлы конфигурации и другие данные |
--get-selections | Действие | Выбирает пакеты с текущим выбором |
--set-selections | Действие | Задаёт состояния выбора файла Из файла, прочитанного Из стандартного ввода |
-b |
Действие | (Из dpkg-deb) Создает пакет .deb |
-c |
Действие | (Из dpkg-deb) Перечисляет содержимое пакета |
-I |
Действие | (Из dpkg-deb) Показывает информацию о пакете |
-l |
Действие | (Из dpkg-запроса) Перечисляет пакеты по шаблону |
-L |
Действие | (Из dpkg-запроса) Перечислите расположение файлов установленного пакета |
-s |
Действие | (Из dpkg-запроса) Показывает статус установленного пакета |
-S |
Действие | (Из 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.
Эта утилита пользователям может быть очень полезна.