Глава 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).
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 совмещает функциональность 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 :
To update the list of packages known by your system, you can run:
(вы должны регулярно запускать эту команду для обновления списка пакетов)
Установить пакет foo и все его зависимости:
Удалить пакет из системы:
Удалить из системы пакет и все его файлы настроек:
To list all packages for which newer versions are available, run:
Обновить все пакеты в системе (без установки дополнительных пакетов или удаления пакетов):
Обновить все установленные в системе пакеты с установкой или удалением дополнительных пакетов, если это потребуется для обновления какого-то пакета:
(Команда upgrade оставит старую установленную версию пакета, если для разрешения новых зависимостей при обновлении потребуется установка дополнительных пакетов. Команда full-upgrade менее консервативна.)
Note that you must be logged in as root to perform any commands that modify packages.
Note that apt-get now also installs recommended packages as default, and thanks to its robustness it’s the preferred program for package management from console to perform system installation and major system upgrades.
В комплект инструментов apt входит также программа для обработки запросов по списку пакетов apt-cache . Её можно использовать для поиска пакетов, имеющих определённую функциональность, с помощью простых текстовых запросов или регулярных выражений, а также для получения списка зависимостей из системы управления пакетами. Часто используемые команды apt-cache :
Найти пакеты, содержащие в своём описании слово :
Показать подробную информацию о пакете:
Показать зависимости пакета:
To print detailed information on the versions available for a package and the packages that reverse-depends on it:
For more information, install the apt package and read apt (8) , apt-get (8) , sources.list (5) and install the apt-doc package and read /usr/share/doc/apt-doc/guide.html/index.html .
8.1.3. aptitude
aptitude — это менеджер пакетов для систем Debian GNU/Linux, он предоставляет интерфейс к инфраструктуре управления пакетами apt. aptitude представляет собой текстовый интерфейс на основе библиотеки curses. Действия можно выполнять как из визуального интерфейса, так и из командной строки.
aptitude может использоваться для лёгкого и быстрого выполнения задач по управлению пакетами. Она позволяет пользователю просматривать список пакетов и выполнять такие задачи по управлению пакетами как установка, обновление и удаление.
Помимо функциональности apt-get , aptitude имеет много других дополнительных возможностей:
обеспечивает лёгкий доступ ко всем версиям пакета;
позволяет легко отслеживать устаревшее ПО, занося его в «список устаревших пакетов и пакетов, созданных локально»;
включает достаточно мощную систему поиска и ограничения отображаемых пакетов. Пользователи, знакомые с mutt , освоятся быстро, так как синтаксис регулярных выражений был навеян этой программой;
можно использовать для установки заранее сформированных наборов для определённых задач. Подробности см. в Раздел 8.1.5, «tasksel»;
aptitude in full screen mode has su functionality embedded and can be run by a normal user. It will call su (and ask for the root password, if any) when you really need administrative privileges.
С aptitude можно работать, используя визуальный интерфейс (просто запустить aptitude ), или непосредственно из командной строки. Используемый синтаксис командной строки очень похож на синтаксис apt-get . Например, для установки пакета foo , можно выполнить aptitude install foo .
Note that aptitude is the preferred program for daily package management from the console.
For more information, read the manual page aptitude (8) and install the aptitude-doc package.
8.1.4. synaptic
synaptic is a graphical package manager. It enables you to install, upgrade and remove software packages in a user friendly way. Along with most of the features offered by aptitude, it also has a feature for editing the list of used repositories, and supports browsing all available documentation related to a package. See the Synaptic Website for more information.
8.1.5. tasksel
Иногда бывает трудно найти подходящий комплект пакетов для выполнения определённой задачи. Разработчики Debian определили задачи , представляющие собой наборы из нескольких пакетов Debian, предназначенных для определённой деятельности. Задачи можно устанавливать с помощью программы tasksel или aptitude .
Typically, the Debian installer will automatically install the task associated with a standard system and a desktop environment. The specific desktop environment installed will depend on the CD/DVD media used, most commonly it will be the GNOME desktop ( gnome-desktop task). Also, depending on your selections throughout the installation process, tasks might be automatically installed in your system. For example, if you selected a language other than English, the task associated with it will be installed automatically too.
8.1.6. Другие инструменты управления пакетами
8.1.6.1. dpkg-deb
This program manipulates Debian archive ( .deb ) files. Some common uses are:
Вывести список допустимых параметров: dpkg-deb —help
Определить, какие файлы содержатся в файле-архиве Debian: dpkg-deb —contents foo_VVV-RRR.deb )
Извлечь файлы из указанного архива Debian в определённый пользователем каталог: dpkg-deb —extract foo_VVV-RRR.deb tmp извлечёт все файлы из foo_VVV-RRR.deb в каталог tmp/ . Это удобно для просмотра содержимого пакета в отдельном каталоге без его установки в основное дерево каталогов.
Извлечь из пакета файлы с управляющей информацией: dpkg-deb —control foo_VVV-RRR.deb tmp .
Учтите, что любые пакеты, просто распакованные командой dpkg-deb —extract , будут установлены некорректно, для установки следует использовать dpkg —install .
More information is given in the manual page dpkg-deb (1) .
8.2. Говорят, что Debian способен обновить работающую программу; как это делается?
Ядро (файловая система) в системах Debian GNU/Linux поддерживает замену файлов, даже когда они используются.
Мы также предоставляем программу start-stop-daemon , которая используется для запуска служб при загрузке компьютера или их останова при изменении уровня выполнения (например, при переключении из многопользовательского в однопользовательский или для выключения компьютера). Эта же программа используется сценариями установки при установке нового пакета со службой, для остановки работающей службы и её перезапуска при необходимости.
8.3. Как узнать, какие пакеты установлены в системе Debian?
Чтобы получить список всех установленных пакетов, выполните команду
Эта команда выведет для каждого пакета однострочную сводку, включающую два символа состояния (объясняемые в заголовке), имя пакета, установленную версию и краткое описание.
To learn the status of packages whose names match any pattern beginning with «foo», run the command:
Чтобы получить более подробный отчёт о состоянии определённого пакета, выполните команду:
8.4. How do I display the files of an installed package?
Чтобы вывести список файлов установленного пакета foo , выполните команду
Учтите, что файлы, созданные сценариями установки, не отображаются.
8.5. Как определить пакет, которому принадлежит определённый файл?
Чтобы определить, в каком пакете содержится файл с именем foo , выполните одну из следующих команд:
dpkg —search foo
Эта команда ищет foo в установленных пакетах. (В настоящий момент это эквивалентно поиску всех файлов с расширением .list в каталоге /var/lib/dpkg/info/ и выводу имён всех пакетов, которые содержат заданное имя файла, и отклонений.)
Более быстрая альтернатива этому — программа dlocate .
zgrep foo Contents-ARCH.gz
This searches for files which contain the substring foo in their full path names. The files Contents-ARCH.gz (where ARCH represents the wanted architecture) reside in the major package directories (main, non-free, contrib) at a Debian archive site (i.e. under /debian/dists/bullseye ). A Contents file refers only to the packages in the subdirectory tree where it resides. Therefore, a user might have to search more than one Contents files to find the package containing the file foo .
Преимущество этого метода над dpkg —search состоит в том, что будут найдены файлы в тех пакетах, которые могут быть не установлены в вашей системе.
apt-file search foo
If you install the apt-file package, similar to the above, it searches files which contain the substring or regular expression foo in their full path names. The advantage over the example above is that there is no need to retrieve the Contents-ARCH.gz files as it will do this automatically for all the sources defined in /etc/apt/sources.list when you run (as root) apt-file update .
8.6. Why is `foo-data’ not removed when I uninstall `foo’? How do I make sure old unused library-packages get purged?
Some packages are split in program (`foo’) and data (`foo-data’) (or in `foo’ and `foo-doc’). This is true for many games, multimedia applications and dictionaries in Debian and has been introduced since some users might want to access the raw data without installing the program or because the program can be run without the data itself, making `foo-data’ optional.
Подобное относится и к библиотекам: обычно они устанавливаются, так как пакеты приложений зависят от них. Когда пакет приложения вычищается, пакет библиотеки может остаться в системе. Или когда пакет приложения больше не зависит, скажем, от libdb4.2, а зависит от libdb4.3, то пакет libdb4.2 может остаться в системе при обновлении пакета приложения.
In these cases, `foo-data’ doesn’t depend on `foo’, so when you remove the `foo’ package it will not get automatically removed by most package management tools. The same holds true for the library packages. This is necessary to avoid circular dependencies. However, if you use apt-get (see Раздел 8.1.2, «APT») or aptitude (see Раздел 8.1.3, «aptitude») as your package management tool, they will track automatically installed packages and give the possibility to remove them, when no packages making use of them remain in your system.
[5] Notice that there are ports that make this tool available with other package management systems, like Red Hat package manager, also known as rpm
Установка пакетов Debian
Установка программ — одна из самых частых задач при администрировании системы и настройке ее под себя. В мире существует огромное количество различного программного обеспечения, но мы не устанавливаем его все одновременно, в системе собирается только то, что нам нужно на данный момент. В дистрибутивах Linux, установка новых программ выполняется из репозиториев с помощью специальных пакетов.
Установка пакетов Debian выполняется, как и в Ubuntu, с помощью пакетного менеджера apt и утилиты dpkg. Мы рассматривали их подробно в статье про установку пакетов Ubuntu. В этой же статье мы более детально остановимся на особенностях Debian.
Установка программ с помощью apt
Перед тем как говорить непосредственно про Debian, нужно рассмотреть apt. Этот пакетный менеджер был специально разработан для Debian и потом стал использоваться в других основанных на нем дистрибутивах. Синтаксис для работы с утилитой такой:
$ sudo apt опции команда имя_пакета
Вот основные команды apt, которые вы можете использовать для управления пакетами:
- download — скачать пакет, но не устанавливать;
- update — используется для обновления информации о списках пакетов в репозиториях;
- upgrade — обновление системы без удаления пакетов;
- full-upgrade — полное обновление системы с удалением конфликтующих зависимостей;
- install — установка пакета;
- remove — удаление пакета без удаления конфигурационных файлов;
- purge — полное удаление пакета;
- autoremove — автоматическое ненужных удаление пакетов;
- search — поиск пакета в локальной базе данных;
- show — посмотреть информацию о пакете.
Кроме того, утилите можно передать некоторые опции, основные:
- -c — сторонний конфигурационный файл;
- -o — строка конфигурации;
- -t — версия релиза для которой устанавливать пакет;
- -f — выполнить операцию принудительно.
Таким образом, для установки пакета из репозиториев достаточно набрать:
sudo apt install имя_пакета $ sudo apt install vlc

А для удаления пакета наберите:
sudo apt purge vlc
Вы можете искать пакеты с помощью команды search:
sudo apt search vlc
Но куда более интересны политики управления репозиториями и установка отдельных пакетов из определенных хранилищ. Особенно это актуально для Debian, чтобы не добавлять нестабильный репозиторий полностью, а устанавливать из него только отдельные пакеты. Для решения таких задач существует настройка политики управления репозиториями.
С помощью политик вы можете настроить из каких репозиториев будет выполняться установка deb пакетов в debian в первую очередь. Мы рассматривали репозитории Debian и как их добавлять в отдельной статье. Допустим, вы добавили backports, testing и unstable. Теперь, чтобы настроить для них приоритеты откройте конфигурационный файл /etc/apt/preferences и добавьте в него строки:
sudo vi /etc/apt/preferences
Package: * Pin: release a=stable Pin-Priority: 700
Package: * Pin: release a=stretch-backports Pin-Priority: 650
Package: * Pin: release a=testing Pin-Priority: 600
Package: * Pin: release a=unstable Pin-Priority: 100
Чем выше значение Priority, тем выше приоритет. Сначала мы указываем с помощью инструкции Package имя пакета, а затем репозиторий и его приоритет. В нашем примере самый высокий приоритет имеет репозиторий stable, если там пакета нет, он будет установлен из backports, и только потом из testing и из unstable. Теперь добавление нестабильных репозиториев не будет ломать систему. А если вы захотите установить пакет из нестабильного репозитория, то просто укажите его с помощью опции -t. Например, для testing:
sudo apt -t testing install firefox
Очень удобно и не ломает систему.
Установка программ с помощью tasksel
Инструмент tasksel разработан специально для Debian. Он позволяет устанавливать пакеты группами. Разработчики сгруппировали пакеты в зависимости от их предназначения и вы можете установить одну из нужных групп. Именно эта утилита используется в установщике Debian.
Чтобы посмотреть список доступных групп наберите:

Также вы можете посмотреть какие пакеты находятся в группе:
tasksel —task-packages web-server
Или описание группы пакетов:
tasksel —task-desc web-server

Чтобы установить группу пакетов, например, веб-сервера, выполните:
tasksel install web-server

А для удаления группы:
tasksel remove web-server
Установка программ Debian таким способом достаточно проста, но здесь есть не так много пакетов.
Установка пакетов Aptitude
Aptitude — это более продвинутая программа для управления пакетами. Она поддерживает больше функций чем apt. Но для использования ее нужно установить:
sudo apt install aptitude
Кроме консольных команд, утилита имеет псевдографический интерфейс, с помощью которого намного удобнее управлять пакетами. Возможно, установка пакетов Debian здесь не так удобна, зато удалить лишние пакеты и посмотреть уже установленные самое оно. Для запуска утилиты выполните:

Пакеты разделены на удобные категории чтобы их можно было просто найти:
Чтобы посмотреть информацию о пакете нажмите «Enter», чтобы отметить пакет для установки, нажмите «+», а для удаления пакета — «-«:

Далее чтобы установить или удалить отмеченные пакеты нажмите кнопку «g». Затем еще раз «g» для подтверждения:

Конечно, вам необязательно использовать интерфейс curses, если хотите, можете применять привычные консольные команды, утилита их тоже поддерживает. Синтаксис выполнения такой же, как и у apt, но команд намного больше:
- install — установить пакет, поддерживает регулярные выражения;
- remove — удалить пакет;
- purge — удалить пакет вместе с его конфигурацией;
- reinstall — переустановить пакет;
- build-depens — отобразить зависимости пакета;
- markauto — пометить пакет, как установленный автоматически в виде зависимости;
- hold — не обновлять этот пакет;
- keep — если для пакета намечено какое-либо действие — отменяет его;
- forget-new — удаляет всю информацию о пакете;
- update — обновление системы;
- safe-update — обновление системы без удаления конфликтующих пакетов, такие пакеты не будут обновлены;
- full-update — полное обновление системы;
- search — поиск пакетов;
- show — посмотреть информацию о пакете;
- source — скачать исходный код пакета;
- vesrsions — отобразить доступные версии пакета;
- why — отображает причину, почему пакет не может быть установлен;
- clean — удаляет лишние deb файлы;
- autoclean — удаляет все пакеты из кэша;
- download — скачать пакет, но не устанавливать.
Установка deb пакетов в debian с помощью aptitude будет выглядеть аналогично apt:
sudo aptitude install vlc

Опция -t здесь тоже актуальна:
sudo aptitude -t unstable install vlc
Установка программ Debian в synaptic
Для полноты статьи давайте еще рассмотрим как выполняется установка приложений через графический интерфейс. Для этого будем использовать программу synaptic. Она уже поставляется вместе с дистрибутивом, можно найти в главном меню:

Для поиска нужного пакета нажмите кнопку поиск, потом введите его имя:

Далее, найденные пакеты будут отображены на панели:

Кликните по нужному пакету правой кнопкой и выберите «Отметить для установки»:

Утилита покажет какие еще пакеты будут установлены как зависимости:



Чтобы установить выбранные пакеты, нажмите кнопку «Применить».
Вам нужно будет подтвердить операцию и дождаться завершения установки. Но установка deb пакетов из консоли debian все равно проще.
Выводы
В этой статье мы рассмотрели различные способы как установить программу в Debian. Как видите, существует множество способов и вы можете выбрать тот, который лучше подходит для вас. Мне всегда нравилось работать в терминале. Это дает максимальный контроль над ситуацией и если что-то пойдет не так вы сразу же получите все сообщения об ошибках и тут же сможете их решить. Надеюсь, эта информация была полезной для вас.
Как устанавливать программы в Debian Linux
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали авторы-волонтеры.
Количество просмотров этой статьи: 30 083.
Debian является основой Ubuntu, Knoppix MEPIS, Kanotix и Aptosid. Если в вашем дистрибутиве нет нужной вам программы, вы можете установить ее через интернет (широкополосный или коммутируемый). Это можно сделать при помощи графического интерфейса или командной строки.
Запомните: в Linux программное обеспечение поставляется в виде пакетов, которые можно скачать из репозитория. Утилиты для установки программ называются менеджерами пакетов, которые автоматически определяют зависимости от других программных библиотек.
Установка программ Ubuntu/Debian с помощью пакетного менеджера
Одна из самых сложных задач, возникающих в процессе установки Unix-программ — отслеживание зависимостей.
Любая более-менее сложная программа в своей работе использует возможности, предоставляемые другими модулями, системными библиотеками и т.д. Таким образом, появляется зависимость — если мы хотим установить программу «А», которая при работе использует библиотеки программы «Б», сначала необходимо установить программу «Б» (у которой, в свою очередь, могут быть свои зависимости). Таким образом, чем больше программ и зависимостей появляется на сервере, тем сложнее их отслеживать и управлять ими. Хорошая новость в том, что это можно делать с помощью пакетного менеджера APT (Advanced Packaging Tool).
Установка с помощью пакетного менеджера
Эволюция методов установки и управления программными пакетами со временем дошла до использования пакетных менеджеров, плотно интегрированных с репозиториями. В репозиториях содержатся упакованные файлы программ с данными об их зависимостях. После установки к операционной системе уже подключены системные репозитории: с их помощью можно обновлять ОС и устанавливать программные пакеты, которые были адаптированы и оптимизированы для работы с этой версией операционной системы.
Перед началом установки пакетов рекомендуется обновить данные о версиях и зависимостях в репозитории следующей командой:
sudo apt-get update

Скриншот №1. Обновление данных о версиях и зависимостях в репозитории
Если необходимо уточнить название пакета, который требуется установить — ищем в локальном кэше менеджер по ключевым словам, например, web server:
sudo apt-cache search web server
В результате получим большой перечень пакетов, где данное ключевое слово присутствует в описании:

Скриншот №2. Поиск по ключевым словам
Выбираем нужный нам пакет — в данном случае это apache2, и устанавливаем его:
sudo apt-get install apache2
Пакетный менеджер проверяет зависимости, версии, сравнивает их с уже установленными через apt-get пакетами, после чего выдает список необходимых для установки компонентов и запрашивает разрешение на продолжение операции:

Скриншот №3. Установка пакета
Нажимаем y и дожидаемся окончания установки.
Часто используемые команды пакетного менеджера:
- apt-get update — обновление информации о пакетах и зависимостях в подключенных репозиториях;
- apt-get upgrade — обновление всех установленных пакетов до актуальной версии, имеющейся в репозитории;
- apt-get install имя_пакета — установка пакета;
- apt-get remove имя_пакета — удаление пакета;
- apt-get download имя_пакета — скачать deb-пакет в локальную папку;
- apt-cache search ключевые слова — поиск пакета по ключевым словам;
- apt-cache show имя_пакета — показать информацию о пакете;
- apt-cache depends имя_пакета — показать от каких компонентов зависит данный пакет;
- apt-cache rdepends имя_пакета — показать какие компоненты зависят от пакета;
- apt-mark hold имя_пакета — зафиксировать текущую версию пакета, прекратить обновление пакета;
- apt-mark unhold имя_пакета — разрешить обновление пакета.
Установка через Debian package
Программные пакеты могут распространяться и не через репозитории. Например, они могут быть доступны на сайтах разработчиков. В таком случае, пакет можно скачать и воспользоваться утилитой dpkg (debian package) для установки. При использовании dpkg не происходит автоматическое отслеживание зависимостей и скачивание дополнительных пакетов. В случае нехватки каких-либо программ или библиотек установка завершится ошибкой с указанием списка отсутствующих пакетов. Их придется установить отдельно, например, через apt-get, если они присутствуют в подключенных репозиториях, либо скачивать с сайтов разработчиков и устанавливать в нужном порядке через dpkg.
Для примера скачаем из системного репозитория установочный пакет веб-сервера Nginx командой:
sudo apt-get download nginx
и попробуем установить через dpkg –i имя_файла.deb:
sudo dpkg –i ./nginx_1.14.0-0ubuntu1.6_all.deb
В результате система выдает ошибку с перечнем отсутствующих пакетов:

Скриншот №4. Ошибка с перечнем отсутствующих пакетов