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

Глава 8. Инструменты управления пакетами Debian

8.1. Какие программы для управления пакетами имеются в Debian?

В Debian для управления пакетами имеется множество средств, от программ с графическими или текстовыми интерфейсами, до низкоуровневых утилит установки пакетов. Корректная работа всех доступных инструментов зависит от низкоуровневых утилит, и все они представлены здесь в порядке уменьшения уровня сложности.

Важно понимать, что высокоуровневые инструменты управления пакетами, такие как aptitude или synaptic , для управления пакетами используют apt , который, в свою очередь, использует dpkg для управления пакетами системы.

See Chapter 2. Debian package management of the Debian reference for more information about the Debian package management utilities. This document is available in various languages and formats, see the Debian Reference entry in the DDP Users’ Manuals overview.

8.1.1. dpkg

Это основная программа управления пакетами. dpkg может вызываться с многими параметрами. Наиболее часто используемые из них:

  • Показать список всех параметров: dpkg —help
  • Показать управляющий файл (и другую информацию) для указанного пакета: dpkg —info foo_VVV-RRR.deb
  • Установить пакет на жёсткий диск (т. е. распаковать и настроить): dpkg —install foo_VVV-RRR.deb
  • Распаковать архив Debian на жёсткий диск (но не настраивать): dpkg —unpack foo_VVV-RRR.deb . Учтите, что в результате данной операции пакет не обязан быть в рабочем состоянии; для правильной работы может потребоваться внесение изменений в некоторые файлы. Данная команда удаляет любую ранее установленную версию программы и запускает сценарий preinst указанного пакета (см. Раздел 7.6, «Зачем нужны сценарии preinst, postinst, prerm и postrm?»).
  • Настроить пакет, который был распакован ранее: dpkg —configure foo . Кроме всего прочего, эта команда запускает сценарий postinst указанного пакета (см. Раздел 7.6, «Зачем нужны сценарии preinst, postinst, prerm и postrm?»). Она также обновляет файлы, перечисленные в conffiles . Обратите внимание, что в качестве аргумента для параметра configure указывается имя пакета (т. е. foo), а не имя файла-архива Debian (т. е. foo_VVV-RRR.deb).
  • Распаковать файл с именем «blurf» (или группу файлов с именем «blurf*») из архива Debian: dpkg —fsys-tarfile foo_VVV-RRR.deb | tar -xf — ‘blurf*’
  • Удалить пакет (но не его файлы настроек): dpkg —remove foo
  • Удалить пакет (вместе с файлами настроек): dpkg —purge foo
  • Вывести состояние установки пакетов, содержащих в имени строку (или регулярное выражение) «foo*»: dpkg —list ‘foo*’

8.1.2. APT

APT is the Advanced Package Tool , an advanced interface to the Debian packaging system which provides the apt-get program. It provides commandline tools for searching and managing packages, and for querying information about them, as well as low-level access to all features of the libapt-pkg library. For more information, see the User’s Guide in /usr/share/doc/apt-doc/guide.html/index.html (you will have to install the apt-doc package).

Читайте также:  Nvidia 310m drivers linux

Starting with Debian Jessie, some frequently used apt-get and apt-cache commands have an equivalent via the new apt binary. This means some popular commands like apt-get update , apt-get install , apt-get remove , apt-cache search , or apt-cache show now can also be called simply via apt , say apt update , apt install , apt remove , apt search , or apt show . The following is an overview of the old and new commands:

apt-get update -> apt update apt-get upgrade -> apt upgrade apt-get dist-upgrade -> apt full-upgrade apt-get install package -> apt install package apt-get remove package -> apt remove package apt-get autoremove -> apt autoremove apt-cache search string -> apt search string apt-cache policy package -> apt list -a package apt-cache show package -> apt show package apt-cache showpkg package -> apt show -a package

Инструмент apt совмещает функциональность apt-get и apt-cache, а также по умолчанию использует красивый цветной формат вывода, что очень удобно. Для использования в сценариях или для продвинутого использования предпочтительнее использовать apt-get (а иногда он просто необходим).

apt-get provides a simple way to retrieve and install packages from multiple sources using the command line. Unlike dpkg , apt-get does not understand .deb files, it works with the packages proper name and can only install .deb archives from a source specified in /etc/apt/sources.list . apt-get will call dpkg directly after downloading the .deb archives [5] from the configured sources.

Часто используемые команды apt-get :

Источник

Sysadminium

На этом уроке рассмотрим пакетный менеджер dpkg, который в отличии от apt не умеет работать с репозиториями.

Что умеет dpkg

Помимо apt (apt-get) в Debian и Ubuntu есть пакетный менеджер dpkg. Он не работает с репозиториями и не может скачать оттуда зависимости, зато он может:

  • установить локально доступный (скачанный) deb пакет,
  • удалить приложение,
  • показать список установленных приложений,
  • показать информацию об установленном приложении,
  • показать информацию о скаченном deb пакете.

Если при установки пакет запросит зависимости, то dpkg не сможет установить пакет и мы получим ошибку. Для того чтобы исправить эту ошибку мы можем выполнить уже знакомую по предыдущему уроку команду apt -f install.

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

Удалим apache2 установленный на прошлом уроке, удалим все его зависимости, скачаем пакет и установим его с помощью dpkg, а затем исправим ошибки с зависимостями:

alex@deb:~$ sudo apt purge apache2 alex@deb:~$ sudo apt autoremove alex@deb:~$ apt download apache2 alex@deb:~$ sudo dpkg -i apache2_2.4.53-1~deb11u1_amd64.deb Выбор ранее не выбранного пакета apache2. (Чтение базы данных … на данный момент установлено 39496 файлов и каталогов.) Подготовка к распаковке apache2_2.4.53-1~deb11u1_amd64.deb … Распаковывается apache2 (2.4.53-1~deb11u1) … dpkg: зависимости пакетов не позволяют настроить пакет apache2: apache2 зависит от apache2-bin (= 2.4.53-1~deb11u1), однако: Пакет apache2-bin не установлен. apache2 зависит от apache2-data (= 2.4.53-1~deb11u1), однако: Пакет apache2-data не установлен. apache2 зависит от apache2-utils (= 2.4.53-1~deb11u1), однако: Пакет apache2-utils не установлен. dpkg: ошибка при обработке пакета apache2 (--install): проблемы зависимостей — оставляем не настроенным Обрабатываются триггеры для man-db (2.9.4-2) … При обработке следующих пакетов произошли ошибки: apache2 alex@deb:~$ sudo apt -f install Чтение списков пакетов… Готово Построение дерева зависимостей… Готово Чтение информации о состоянии… Готово Исправление зависимостей… Готово Будут установлены следующие дополнительные пакеты: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libcurl4 liblua5.3-0 Предлагаемые пакеты: apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser Следующие НОВЫЕ пакеты будут установлены: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libcurl4 liblua5.3-0 Обновлено 0 пакетов, установлено 9 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено. Установлено или удалено не до конца 1 пакетов. Необходимо скачать 2 529 kB архивов. После данной операции объём занятого дискового пространства возрастёт на 8 496 kB. Хотите продолжить? [Д/н]

Этот пример выполнен на Debian 11, но он точно также может быть выполнен и на Ubuntu 22.04.

Читайте также:  Dns сервер linux debian

Как вы поняли устанавливать пакет используя dpkg нужно с опцией -i. Обычно с помощью dpkg устанавливаются пакеты, которых нет в репозиториях. То есть вы их можете найти где-нибудь в интернете, скачать, а затем установить.

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

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

alex@deb:~$ sudo dpkg -r apache2

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

А с помощью опции -l можно посмотреть список установленных пакетов:

alex@deb:~$ dpkg -l Желаемый=неизвестно[u]/установить[i]/удалить[r]/вычистить[p]/зафиксировать[h] | Состояние=не[n]/установлен[i]/настроен[c]/распакован[U]/частично настроен[F]/ частично установлен[H]/trig-aWait/Trig-pend |/ Ошибка?=(нет)/требуется переустановка[R] (верхний регистр в полях состояния и ошибки указывает на ненормальную ситуацию) ||/ Имя Версия Архитектура Описание +++-==============================-==============================-============-=============================================================================== ii adduser 3.118 all add and remove users and groups rc apache2 2.4.53-1~deb11u1 amd64 Apache HTTP Server ii apache2-bin 2.4.53-1~deb11u1 amd64 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.53-1~deb11u1 all Apache HTTP Server (common files) ii apache2-utils 2.4.53-1~deb11u1 amd64 Apache HTTP Server (utility programs for web servers) ii apparmor 2.13.6-10 amd64 user-space parser utility for AppArmor ii apt 2.2.4 amd64 commandline package manager ii apt-listchanges 3.24 all package change history notification tool ii apt-utils 2.2.4 amd64 package management related utility programs

Вы можете заметить что пакет apache2, который я удалил в предыдущем примере отмечен как rc (удалён и настроен).

Информация о пакетах

Получить информацию о приложении можно с помощью -s:

alex@deb:~$ dpkg -s apache2 | head Package: apache2 Status: deinstall ok config-files Priority: optional Section: httpd Installed-Size: 622 Maintainer: Debian Apache Maintainers Architecture: amd64 Version: 2.4.53-1~deb11u1 Config-Version: 2.4.53-1~deb11u1 Replaces: apache2.2-bin, apache2.2-common, libapache2-mod-proxy-uwsgi ( Architecture: amd64 Version: 2.2.4 Replaces: apt-transport-https (

Первый раз я смотрю информацию о приложении apache2, который я удалил с помощью dpkg -r. Такое удаление не удаляет конфигурационные файлы, поэтому пакет хоть и удалён (deinstall), но настроен (config-files).

Второй раз я смотрю информацию о приложении apt. Эта утилита установлена (install ok installed).

А если мы удалим приложение с помощью apt purge, то мы совсем не сможем получить о нём информацию с помощью dpkg:

alex@deb:~$ sudo apt install apache2 alex@deb:~$ sudo apt purge apache2 alex@deb:~$ dpkg -s apache2 dpkg-query: пакет «apache2» не установлен, информация о нём недоступна Use dpkg --info (= dpkg-deb --info) to examine archive files.

Можно посмотреть информацию о скаченном пакете с помощью dpkg -I:

alex@deb:~$ dpkg -I apache2_2.4.53-1~deb11u1_amd64.deb new Debian package, version 2.0. size 273352 bytes: control archive=12768 bytes. 6578 байт(а), 157 строк conffiles 1121 байт(а), 23 строк control 1918 байт(а), 27 строк md5sums 10636 байт(а), 376 строк * postinst #!/bin/bash 3751 байт(а), 137 строк * postrm #!/bin/sh 10543 байт(а), 207 строк * preinst #!/bin/bash 837 байт(а), 24 строк * prerm #!/bin/sh Package: apache2 Version: 2.4.53-1~deb11u1 Architecture: amd64 Maintainer: Debian Apache Maintainers Installed-Size: 622 Pre-Depends: dpkg (>= 1.17.14), init-system-helpers (>= 1.54~) Depends: apache2-bin (= 2.4.53-1~deb11u1), apache2-data (= 2.4.53-1~deb11u1), apache2-utils (= 2.4.53-1~deb11u1), lsb-base, mime-support, perl:any, procps Recommends: ssl-cert Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser Conflicts: apache2.2-bin, apache2.2-common Breaks: libapache2-mod-proxy-uwsgi (

Можно посмотреть список всех файлов которые установились вместе с пакетом с помощью dpkg -L:

alex@deb:~$ sudo apt install apache2 alex@deb:~$ dpkg -L apache2 | head /. /etc /etc/apache2 /etc/apache2/apache2.conf /etc/apache2/conf-available /etc/apache2/conf-available/charset.conf /etc/apache2/conf-available/localized-error-pages.conf /etc/apache2/conf-available/other-vhosts-access-log.conf /etc/apache2/conf-available/security.conf /etc/apache2/conf-available/serve-cgi-bin.conf

В некоторых командах я добавляю (| head), чтобы видеть только первые 10 строк из всего вывода.

Итог

Пакетный менеджер dpkg чаще используют не для установки или удаления приложений, а для просмотра информации об уже установленных приложениях или о скаченных пакетах. Устанавливают и удаляют приложения в основном те, которых нет в репозиториях и которые поставляются отдельными .deb пакетами.

Еще раз пробежимся по опциям:

  • -i , -r — установить или удалить пакет;
  • -l — список установленных пакетов;
  • -s — информация об установленном приложении;
  • -I — информация о скачанном пакете;
  • -L — список файлов, которые установились из пакета.

Источник

Оцените статью
Adblock
detector