Чем отличается apt от apt get
Перейти к содержимому

Чем отличается apt от apt get

  • автор:

APT или APT-GET

Многие пользователи Ubuntu задаются вопросом, в чём же заключается разница между apt и apt-get и каким из этих интерфейсов целесообразнее пользоваться.

Разница между APT и APT-GET

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

Содержание

  • Что представляет собой apt-get
  • Особенности apt
  • Новые команды
  • Использование нового интерфейса
  • Заключение

Что представляет собой apt-get

Интерфейс командной строки этого инструмента используется для взаимодействия с системой управления пакетами APT (Advanced Package Tool). Он предназначен для установки, обновления, составления списка и удаления пакетов из системы.

Однако apt-get является всего лишь одним из инструментов, используемых для связи с системой APT. Наряду с ним существует также apt-cache , apt-config и добавленный позже apt .

Особенности apt

Ряд особенностей и функций:

  • объединение функций apt-get и apt-cache ;
  • дополнительный выход и улучшенный дизайн;
  • изменения в синтаксисе команд для существующих функций;
  • две новые эксклюзивные функции.

До Ubuntu 16.04 пользователи регулярно взаимодействовали с менеджером пакетов APT с помощью инструментов командной строки: apt-get , apt-cache и apt-config . Хотя эти инструменты предлагают множество функций, большинство обычных пользователей не использовали все предоставленные ими команды.

Была поставлена задача создания упрощённого инструмента, состоящего только из основных команд. С выпуском Ubuntu 16.04 был представлен новый интерфейс командной строки — apt .

Основная цель этого нововведения состояла в том, чтобы объединить наиболее часто используемые команды старого интерфейса.

Помимо очевидных различий между командами были внесены изменения в дизайн вывода.

Наряду с обновлением локального репозитория команда update стала включать дополнительную строку, отображающую количество пакетов, которые необходимо обновить. Эта новинка служит полезным напоминанием об обновлении необходимых пакетов.

mensh@139-162-132-20:~$ sudo apt update [sudo] password for mensh: Hit:1 http://mirrors.linode.com/ubuntu focal InRelease Hit:2 http://mirrors.linode.com/ubuntu focal-updates InRelease Hit:3 http://mirrors.linode.com/ubuntu focal-backports InRelease Get:4 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] Hit:5 http://ppa.launchpad.net/ondrej/php/ubuntu focal InRelease Fetched 114 kB in 1s (106 kB/s) Reading package lists. Done Building dependency tree Reading state information. Done 5 packages can be upgraded. Run 'apt list --upgradable' to see them. mensh@139-162-132-20:~$ 

Когда в выходных данных отображается количество пакетов, которые можно обновить, можно запросить у менеджера пакетов их список. Запускается команда apt list —upgradable и на выходе появляется необходимый список.

Выходные данные включают улучшенный дизайн для более чёткого представления с цветовым акцентом.

mensh@139-162-132-20:~$ apt list --upgradeable Listing. Done distro-info-data/focal-updates 0.43ubuntu1.13 all [upgradable from: 0.43ubuntu1.12] linux-firmware/focal-updates 1.187.39 all [upgradable from: 1.187.38] openssh-client/focal-updates 1:8.2p1-4ubuntu0.7 amd64 [upgradable from: 1:8.2p1-4ubuntu0.5] openssh-server/focal-updates 1:8.2p1-4ubuntu0.7 amd64 [upgradable from: 1:8.2p1-4ubuntu0.5] openssh-sftp-server/focal-updates 1:8.2p1-4ubuntu0.7 amd64 [upgradable from: 1:8.2p1-4ubuntu0.5] mensh@139-162-132-20:~$ 

Наконец, был добавлен индикатор выполнения, отображающий процесс обновления. Это простое, но полезное дополнение, которое даёт пользователю больше информации о данном процессе.

mensh@139-162-132-20:~$ sudo apt upgrade Reading package lists. Done Building dependency tree Reading state information. Done Calculating upgrade. Done Get more security updates through Ubuntu Pro with 'esm-apps' enabled: mc libmagickcore-6.q16-6-extra imagemagick libmagickwand-6.q16-6 mc-data imagemagick-6.q16 libopenexr24 libmagickcore-6.q16-6 imagemagick-6-common Learn more about Ubuntu Pro at https://ubuntu.com/pro The following packages will be upgraded: distro-info-data linux-firmware openssh-client openssh-server openssh-sftp-server 5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 137 MB of archives. After this operation, 817 kB of additional disk space will be used. Do you want to continue? [Y/n] 

Обновление программных пакетов командой apt upgrade

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

mensh@139-162-132-20:~$ sudo apt autoremove Reading package lists. Done Building dependency tree Reading state information. Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. mensh@139-162-132-20:~$ 

Хотя новый инструментt заменяет часто используемые функции старого, обратной совместимости нет. Не всегда можно заменить старые менеджеры пакетов на новый.

Функции и возможности замены

Функция команды Существующая команда Команда apt
Обновить репозиторий пакетов apt-get update apt update
Обновить пакеты apt-get upgrade apt upgrade
Обновить пакеты и удалить ненужные зависимости apt-get dist-upgrade apt full-upgrade
Установить пакет apt-get install [package_name] apt install [package_name]
Удалить пакет apt-get remove [package_name] apt-remove [package_name]
Удалить пакет с конфигурацией apt-get purge [package_name] apt purge [package_name]
Удалить ненужные зависимости apt-get autoremove apt autoremove
Поиск пакета apt-get search [package_name] apt search [package_name]
Показать информацию о пакете apt-cache show [package_name] apt show [package_name]
Показать активные источники пакетов apt-cache policy apt policy
Показать установленные и доступные версии пакета apt-cache policy [package_name] apt policy [package_name]

Новые команды

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

Функция Новая команда apt
Список пакетов по критериям apt list
Редактировать список источников apt edit-sources

Новые команды расширили возможности инструмента.

Использование нового интерфейса

Большинство пользователей Ubuntu считают, что этот инструмент следует использовать всегда вместо старого. Новым инструментом проще пользоваться и он намного быстрее выполняет задачи.

Конечно, бывают случаи, когда замена apt-get или apt-cache невозможна. Тем не менее многим пользователям команды apt вполне достаточно.

Произойдёт ли официальный переход на новый интерфейс пока не ясно.

Заключение

В этой небольшой статье были показаны различия между apt и apt-get . Выбор того или иного инструмента в конечном случае является делом привычки.

Что Лучше Использовать APT или apt-get

Команды Linux apt и apt-get, являются одними из наиболее часто используемых в командной строке в дистрибутивах Debian и Ubuntu. Особенно когда дело доходит до установки программных пакетов. Эти команды очень похожи, однако между ними существует несколько тонких различий. В этом руководстве мы постараемся провести различие между apt и apt-get , а так же расскажем и покажем как они используются.

Возможно вас заинтересует:

Эволюция команды APT

Чтобы лучше понять эти две команды, давайте вернемся в прошлое и посмотрим, как команда apt развивалась с течением времени. До Debian 8 (Jessie) и Ubuntu 16.04 (Xenial Xerus) пользователи взаимодействовали с менеджером пакетов APT (Advanced Package Tool) с помощью команды apt-get. Однако инструмент командной строки не пользовался большой популярностью у пользователей, а большинство из них не использовали множество прилагаемых к нему опций.

С появлением Ubuntu 16.04 и Debian 8 произошла эволюция инструмента командной строки apt-get в apt. Команда APT стала более удобным инструментом и объединила функциональные возможности apt-get и apt-cache

Различия между командами apt и apt-get

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

1) Синтаксис команд apt и apt-get

Наиболее очевидным отличием является способ синтаксиса команды. Например, чтобы обновить списки пакетов или индекс пакетов с помощью apt, выполните следующую команду:

А при использовании команды apt-get требуется ввести команду:

Чтобы лучше понять, как вы можете выполнять другие операции с помощью команд apt и apt-get, вот краткое резюме в табличном формате.

Возможно вам будет интересно: Как установить Python 3.10 на Debian 11/10

Команда sudo apt update

Далее введем команду upgradable

Ввод команды apt list --upgradable

С помощью команды apt upgrade в нижней части терминала будет введен индикатор выполнения, указывающий на ход процесса обновления пакетов.

Команда apt upgrade

3) Дополнительные команды с APT

Есть еще пара вариантов команды, которые поставляются вместе с APT.

apt list: эта команда перечисляет установленные, доступные и обновляемые пакеты.

apt edit-sources: когда команда выполняется в первый раз, она представляет вам список текстовых редакторов, которые вы можете использовать для открытия и редактирования файла списка источников – /etc/apt/sources.list. Как только вы выберете нужный вариант, вы сможете непосредственно отредактировать файл для последующего выполнения команды.

Заключение

Хотя вы все еще можете использовать команду apt-get для выполнения задач, команда apt сокращает время и лучше справляется с управлением вашими пакетами. Она легче запускается на терминале и как уже упоминалось ранее, поставляется с дополнительными опциями команд.

В чем разница между командами APT и APT-GET?

Дистрибутивы на базе Linux, такие как Debian, Ubuntu и Linux Mint, используют систему управления пакетами apt для установки, удаления, обновления связанных или целевых пакетов программного обеспечения.

Отлично заменой для APT и GET — APT может выступать альтернативный инструмент – Nala

Пользователи на базе Debian гордятся использованием системы управления пакетами apt благодаря следующим выдающимся возможностям:

Достоинства APT

  • Разрешение зависимостей – В Linux часто бывает, что пакет программного обеспечения зависит от внешних библиотек или других пакетов и для его установки нужно заранее их установить. Если такие зависимости не установлены, apt способен самостоятельно установить все зависимости до установки целевого пакета.
  • Надежное управление пакетами – подход APT к управлению пакетами является транзакционным. Эта функциональная особенность гарантирует, что любое изменение системы является не только атомарным, но и обратимым. Таким образом, при управлении пакетами легко решаются такие важные проблемы, как нарушение зависимостей.
  • Поддержка командной строки и графического интерфейса – Дистрибутивы на базе Debian рассчитаны на пользователей с уровнем знаний Linux от начального до экспертного. Разница между этими пользователями позволяет использовать командную строку или графический интерфейс. Поэтому у пользователей есть возможность выбрать интерфейс управления пакетами, который соответствует их потребностям.
  • Поддержка нескольких архитектур – Независимо от того, использует ли пользователь 32-битные или 64-битные версии дистрибутивов Linux на базе Debian, apt расширит свои функции управления пакетами на эти архитектуры, не исключая архитектуры ARM и MIPS .
  • Поддержка других инструментов – APT может улучшить свои возможности управления пакетами, интегрируясь с такими инструментами, как apt-config и apt-cache .

Разница между командами apt и apt-get

Менеджер пакетов apt использует команды apt и apt-get для управления установкой, обновлением, поиском, загрузкой и удалением пакетов программного обеспечения в дистрибутиве Linux на базе Debian.

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

Команда apt

Команда apt появилась в 2014 году и стала заметной особенностью Ubuntu 16.04. Тогда пользователям стало просто удобно использовать команду, так как печатать требуется меньше символов.

Команда apt более структурирована, что облегчает обход низкоуровневых команд, таких как apt-cache. Такие опции команды включены по умолчанию. Команда apt показывает индикацию выполнения установки пакетов или обновления системы:

sudo apt update

Также, после выполнения команды обновления системы (apt update), пользователь системы информируется о пакетах, которые нуждаются в обновлении:

Команда apt-get

Команда apt-get используется APT для управления отдельными пакетами или группами пакетов, которая также может быть объединена с другими инструментами APT , такими как apt-config или apt-cache для выполнения сложных задач управления пакетами. Автоматизированные среды и скрипты также используют эту команду при управлении пакетами.

При выполнении команды обновления системы с помощью команды apt-get (apt-get update) мы не получаем уведомлений о предстоящих обновлениях пакетов, как при использовании команды apt (apt update):

sudo apt-get update

В этом случае пользователю необходимо использовать команду apt для отображения пакетов с ожидающими обновлениями:

apt list --upgradable

Также команда apt-get не предоставляет индикацию выполнения установки пакетов, как в случае с командой apt.

Реализация команд apt и apt-get

apt Command [NEW] apt-get Command [OLD] Описание
apt update apt-get update Обновляет индекс репозитория пакетов
apt upgrade apt-get upgrade Обновление всех пакетов
apt full-upgrade apt-get dist-upgrade Обновление пакетов и удаление ненужных зависимостей
apt install [имя_пакета] apt-get install [имя_пакета] Установка пакета
apt remove [имя_пакета] apt-get remove [имя_пакета] Удалить пакет
apt purge [имя_пакета] apt-get purge [имя_пакета] Удаление пакета с конфигурацией
apt autoremove [имя_пакета] apt-get autoremove [имя_пакета] Удаление неиспользуемых/ненужных пакетов
apt search [package_name] apt-get search [package_name] Проводит поиск пакетов или программ
apt show [package_name] apt-. cache show [имя_пакета] Показать информацию о пакете
apt policy [имя_пакета] apt-cache policy [имя_пакета] Показать активные источники пакетов
apt policy apt-cache policy Показать установленные и доступные версии пакета

Дополнительно, команда apt может быть использована со следующими командами:

Команда Описание
apt list Выполняет основанный на критериях. на основе критериев
apt edit-sources Позволяет пользователям редактировать список источников

Команда apt-get полезна для написания скриптов и других низкоуровневых операций, где не требуется вывод результата. Поэтому эта команда еще не отжила свой век. Однако, сообщество дистрибутива Debian Linux рекомендует использовать команду apt вместо apt-get, так как ее проще запомнить. С другой стороны, если вам нужны специфические функции, то следует выбрать команду apt-get.

Примечание: Пользователи Linux Mint могут быть знакомы с оберткой apt для python, которая реализует функциональность apt-get с более дружественными опциями. Мы не должны проводить никаких ассоциаций между командой apt, обсуждаемой в этой статье, и командой, инициируемой python в Linux Mint.

Вывод

Менеджер пакетов APT содержит команды apt и apt-get. Хотя реализация этих двух команд может быть разной, они способны достичь одинаковой функциональности ОС Linux на базе Debian, причем команда apt идет дальше, apt-get доживает свое время.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Чем отличается apt от apt get

APT является большим проектом, в исходные планы которого входило создание графического интерфейса. Он основан на библиотеке, которая содержит приложение ядра, а apt-get является первым интерфейсом (основанным на режиме командной строки), который был разработан в рамках этого проекта. apt является вторым интерфейсом командной строки, предоставляемым APT, который устраняет некоторые ошибки проектирования apt-get .

Both tools are built on top of the same library and are thus very close but the default behaviour of apt has been improved for interactive use and to actually do what most users expect. APT’s developers reserve the right to change the public interface of this tool to further improve it. On the opposite, the public interface of apt-get is well defined and will not change in any backwards incompatible way. It is thus the tool that you want to use when you need to script package installation requests.

Большое число графических интерфейсов появилось позже как внешние проекты: synaptic , aptitude (который включает и текстовый интерфейс, и графический — хоть и не завершённый до сих пор), wajig , и т.д. Наиболее рекомендуемый интерфейс, apt , мы будем использовать в примерах, приведённых в этом разделе. Обратите внимание, что apt-get и aptitude имеют весьма схожий синтаксис командной строки. В случае, когда существуют значительные различия между apt , apt-get и aptitude , эти различия будут разобраны более подробно.

6.2.1. Инициализация

При необходимости работы с APT должен быть обновлён список доступных пакетов; это просто сделать с помощью команды apt update . В зависимости от скорости вашего соединения, эта операция может занять достаточно времени, поскольку она включает загрузку определённого числа Packages / Sources / Translation- language-code файлов, которые постепенно становятся всё больше и больше в процессе разработки Debian (по меньшей мере 10 МБ данных для секции main ). Конечно, установка с набора CD-ROM не требует никакой загрузки — в этом случае операция является очень быстрой.

6.2.2. Установка и удаление

С помощью APT пакеты могут быть добавлены или удалены из системы командами apt install пакет and apt remove пакет соответственно. В обоих случаях APT автоматически установит необходимые пакеты, от которого зависит данный, или удалит пакеты, которые зависят от удаляемого пакета. Команды apt purge пакет вызывают полное удаление — файлы настройки также будут удалены.

СОВЕТ Установка одного и того же набора пакетов несколько раз

Это может оказаться полезным при установке одного и того же перечня пакетов на различные компьютеры. И это может быть сделано достаточно просто.

Во-первых, необходимо определить перечень пакетов, установленных на компьютере, который будет служить «моделью» для копирования.

$ dpkg --get-selections >pkg-list

После этого файл pkg-list будет содержать перечень установленных пактов. Следующим шагом необходимо передать файл pkg-list на компьютеры, на которых необходимо произвести обновление, и использовать следующие команды:

## Обновить базу данных dpkg's об известных пакетах # avail=`mktemp` # apt-cache dumpavail > "$avail" # dpkg --merge-avail "$avail" # rm -f "$avail" ## Обновить выбор dpkg's # dpkg --set-selections < pkg-list ## Запросить у apt-get установку выбранных пакетов # apt-get dselect-upgrade

Первая команда записывает перечень доступных пакетов в базу данных dpkg database, затем dpkg --set-selections восстанавливает выбор пакетов, которые вы хотите установить, а вызов apt-get выполняет требуемые операции! aptitude не имеет этой команды.

СОВЕТ Удаление и установка в одной команде

Можно использовать apt (или apt-get , или aptitude ) для установки одних пакетов и удаления других одной командой путем добавления суффикса. Используя apt install добавьте « – » к именам пакетов, которые вы хотите удалить. Для apt remove добавьте « + » к именам пакетов, которые вы хотите установить.

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

# apt install пакет N 1 пакет N 2- [. ] # apt remove пакет N 1+ пакет N 2 [. ]

Это можно использовать для исключения пакетов, которые бы в противном случае были установлены, например из-за Recommends . В общем для разрешения зависимостей будет использована эта информация как подсказка для поиска альтернативных решений.

СОВЕТ apt --reinstall и aptitude reinstall

После удаления или изменения файлов в пакете, система может быть повреждена. Самый простой способ для восстановления этих файлов является переустановка таких пакет. К сожалению, система упаковки считает, что пакет уже установлен и вежливо отказывается переустановить его. Чтобы избежать этого, добавьте --reinstall к apt или apt-get . Следующая команда переустановит postfix даже если он уже установлен:

# apt --reinstall install postfix

Команда aptitude немного отличается, но позволяет достичь такого же результата: aptitude reinstall postfix .

Такая проблема не возникает при использовании dpkg , но сама команда редко используется.

Пример 6.3. Установка unstable версии spamassassin

# apt install spamassassin/unstable

If the package to install has been made available to you under the form of a simple .deb file without any associated package repository, it is still possible to use APT to install it together with its dependencies (provided that the dependencies are available in the configured repositories) with a simple command: apt install ./ path-to-the-package.deb . The leading ./ is important to make it clear that we are referring to a filename and not to the name of a package available in one of the repositories.

УГЛУБЛЯЕМСЯ Кэш файлов .deb

APT keeps a copy of each downloaded .deb file in the directory /var/cache/apt/archives/ . In case of frequent updates, this directory can quickly take a lot of disk space with several versions of each package; you should regularly sort through them. Two commands can be used: apt-get clean entirely empties the directory; apt-get autoclean only removes packages which can no longer be downloaded (because they have disappeared from the Debian mirror) and are therefore clearly useless (the configuration parameter APT::Clean-Installed can prevent the removal of .deb files that are currently installed).

6.2.3. Обновление системы

Регулярные обновления рекомендуется, поскольку они включают последние обновления системы безопасности. Для обновления, используйте apt upgrade , apt-get upgrade или aptitude safe-upgrade (конечно после использования apt update ). Эта команда ищет установленные пакеты, которые можно обновить без удаления других пакетов. Другими словами цель заключается в том, чтобы обеспечить наименее ограничительное возможность установки обновлений. Команда apt-get является немного более требовательной, чем aptitude или apt потому что она не будет устанавливать пакеты, которые не были установлены до этого.

СОВЕТ Инкрементальное обновление

As we explained earlier, the aim of the apt update command is to download for each package source the corresponding Packages (or Sources ) file. However, even after a xz compression, these files can remain rather large (the Packages.xz for the main section of Stretch takes more than 6 MB). If you wish to upgrade regularly, these downloads can take up a lot of time.

Чтобы ускорить этот процесс APT может загружать “diff” файлы содержащие изменения с момента предыдущего обновления вместо загрузки всего файла целиком. Для достижения этой цели официальные зеркала Debian распространяют файлы различий, в которых содержится список изменений между одной версией файла Packages от следующей версии. Они генерируются с каждым обновлением архивов, а история сохраняется в течение одной недели. Каждый из этих «diff» файлов занимает несколько десятков килобайт для Unstable , так что количество загружаемых еженедельных данных apt update зачастую становится меньше в десять раз. Для дистрибутивов таких как Debian Stable и Testing , в которые вносится меньше изменений, выигрыш становится ещё более заметным.

Однако, иногда необходимо принудительно загрузить целый файл Packages . Это обычно происходит в случаях, когда последнее обновление сильно устарело, а выполненные пошаговые обновления не особо помогли. Это также может представлять интерес, если доступ к сети очень быстрый, но процессор компьютера довольно медленный для процесса обновления. Так как время загрузки файла будет меньше, чем время, затраченное компьютером на вычисление новых версии этих файлов (начиная с более старых версий и применяя загруженные различия). Чтобы это сделать, вы можете использовать параметр конфигурации Acquire::Pdiffs и установить его значение в false .

apt обычно будет выбирать последние версии (за исключением пакетов из Experimental и stable-backports , которые игнорируются независимо от номера версии). Если вы указали Testing или Unstable в своем sources.list , apt upgrade переключит большую часть вашей системы со Stable на Testing или Unstable , что может быть не тем, чего вы ожидали.

Чтобы apt искал обновлённые версии пакетов для определённого дистрибутива, используйте опцию -t или --target-release . После опции надо указать название выбранного вами дистрибутива (например: apt -t stable upgrade ). Чтобы не указывать эту опцию каждый раз , когда вы используете apt , вы можете добавить APT::Default-Release "stable"; в файл /etc/apt/apt.conf.d/local .

Для более важных обновлений, таких как переход от одной основной версии Debian к следующей, вы должны использовать apt full-upgrade . С помощью этой инструкции apt выполнит обновление, при этом он удалит некоторые устаревшие пакеты и установит новые зависимости. Также эта команда используется пользователями, которые ежедневно работают с Unstable выпуском Debian и следят за его развитием день за днем. Это так просто, что вряд ли нуждается в объяснении: репутация APT основана на большой функциональности.

В отличие от apt и aptitude , apt-get не знает команды full-upgrade . Вместо этого, вы должны использовать apt-get dist-upgrade («обновление дистрибутива»). apt и aptitude также принимают эту историческую и хорошо известную команду для удобства тех пользователей, которые привыкли пользоваться ей.

6.2.4. Параметры конфигурации

Кроме уже упомянутых деталей конфигурации, можно сделать дополнительную настройку APT. Для этого надо внести дополнительные параметры в файл , расположенный в /etc/apt/apt.conf.d/ . Помните, что APT может указать dpkg игнорировать конфликты файлов, установив DPkg::options < "--force-overwrite"; >.

ВЕРНЁМСЯ К ОСНОВАМ Каталоги, оканчивающиеся на .d

Каталоги, название которых заканчивается на .d , встречаются всё чаще и чаще. Каждый каталог представляет собой конфигурационный файл, разделенный на несколько файлов . Таким образом все файлы в /etc/apt/apt.conf.d/ это инструкции, настраивающие APT. APT применяет их в алфавитном порядке, поэтому более поздняя инструкция может изменять параметры, установленные предшествующим ей инструкциями.

Такая система создает некоторую гибкость как для администраторов, так и для разработчиков. Администратор может легко изменять настройки программы добавляя уже готовый файл настроек в такой каталог и не изменяя уже существующий файл настроек. Разработчик пакета точно так же адаптирует конфигурацию другой программы, чтобы она наилучшим образом взаимодействовала с его. Политики Debian явно запрещают изменений конфигурации других пакетов — это допустимо делать только пользователям. Помните, что во время обновления пакета, если было обнаружено внесение изменений в файл конфигурации, то пользователю будет предложено выбрать какую версию файла конфигурации оставить. Любое стороннее изменение файла вызовет такой запрос, что обеспокоит администратора, который уверен, что точно ничего не менял.

Каталог .d нужен для того, чтобы можно было изменить конфигурационные настройки дополнительных (внешних, external) пакетов. Без этого каталога невозможно изменить конфигурационные файлы для этих пакетов. Взамен этого пользователь должен сам составить список операций - как это сделано в файле /usr/share/doc/ package /README.Debian .

Каталог .d зависит от приложений. Он используется напрямую и управляется внешним скриптом (сценарием), который объединит все файлы и создаст конфигурационный файл сам. Очень важно выполнить скрипт после любого изменения в этом каталоге. И тогда большинство последних изменений будут учтены. В то же время крайне важно не редактировать напрямую конфигурационный файл. Он будет создан программой автоматически. Все внесенные напрямую изменения в конфигурационный файл будут потеряны в будущем после выполнения скрипта. Этот предпочитаемый метод ( .d - каталог, используемый напрямую для внесения изменений, дополнений или файл -сгенерированный на базе данного каталога) обычно диктуется ограничением реализации. Но в обоих случаях выгода в плане гибкости конфигурации с лихвой компенсируют небольшие усложнения, которые они за собой влекут. В программе почтового сервера Exim 4 есть пример метода сгенерированного таким образом файла: там можно внести изменения в разные файлы расположенные в каталоге ( /etc/exim4/conf.d/* ). Далее новые изменения будут присоединены в /var/lib/exim4/config.autogenerated после выполнения команды update-exim4.conf .

6.2.5. Управление приоритетами пакетов

Один из многих важных аспектов в конфигурировании APT-а является управление приоритетами, ассоциироваными с каждым исходным пакетом. Для примера, ты можешь захотеть расширить дистибутив (к примеру стабильный - Stable) одним или двуми пакетами из других дистибутивов тестируемый (Testing) , нестабильный (Unstable) или экспериментальный (Experimental) . В этом случае имеется возможность определить приоритеты каждого доступного пакета (некоторые пакеты могут иметь свои приоритеты зависимостей к их версии или распространение -дистрибьютор предоставляет это). Те приоритеты будут влиять на поведение APT-а: для каждого пакета всегда будет выбираться версия с высочайшим приоритетом (кроме случаев, когда версия более старая, чем установлена в системе такая же и если его приоритет - меньше чем 1000).

APT определяет свои приоритеты по умолчанию. Каждая версия устанавливаемого пакета имеет приоритер 100. Не установленная версия имеет приоритет 500 по умолчанию, но это может прыгнуть (измениться) до 990 если это есть часть целевого (выпускаемого) релиза (определяется с -t опция командной строки или APT::Default-Release конфигурирование указание).

Ты можешь изменить (модифицировать) приоритеты путем дополнения записей в /etc/apt/preferences файл с именами затрагиваемых пакетов, их версия, оригинальные (первоначальные) и их новые приоритеты.

APT никогда не установит устаревшую версию пакета (то есть если версия устанавливаемого пакета ниже чем уже установленный в настоящий момент в системе). Исключение составляет случай если приоритет устанавливаемого пакета выше чем 1000. APT будет всегда устанавливать пакет с наивысшим приоритетом, делая это под давлением (в случаях - как описано выше в качестве исключения). Если два пакета имеют одинаковый приоритет, то APT установит более новую версию пакета (чей номер версии выше. Например- версии 0.6.8 и 0.6.9 - будет установлена 0.6.9). Если два пакета с одинаковой версией имеют равные приоритеты, но отличаются по своему содержанию, то APT установит ту версию, что еще не была установлена ранее (это правило было создано чтобы учесть случай обновления пакета без приращения номера ревизии-версии. Как правило при замене одного пакета на другой APT-ом происходит увеличение номера версии).

Были выработаны реальные условия соглашения по приоритетам устанавливаемых пакетов: - Если приоритет меньше 0 - пакет не будет установлен. - Если приоритет находится в интервале от 0 до 100 - пакет будет установлен только в случае - если нет других версий пакета в настоящее время уже имеющихся в системе. - Если приоритет находится в интервале от 100 до 500 - пакет будет установлен только в случаях: 1) если в настоящее время в системе не установлен другой пакет более новой версии; 2) нет годного пакета в другом дистибутиве. - Если приоритет находится в интервале от 501 до 990 - пакет будет установлен только в случаях: 1) если в настоящее время в системе не установлена новейшая версия; 2) нет годного пакета в репозитории (хранилище) целевого дистибутива. - Если приоритет находится в интервале от 990 до 1000 - пакет будет установлен как исключение - если устанавливаемая версия является новейшей. - Если приоритет превышает 1000 - это приведет к тому - что пакет всегда будет установлен, несмотря на то, что будет установлена версия более старая - чем имеется в настоящий момент в системе (то есть APT сделает это принудительно, против своих правил).

When APT checks /etc/apt/preferences , it first takes into account the most specific entries (often those specifying the concerned package), then the more generic ones (including for example all the packages of a distribution). If several generic entries exist, the first match is used. The available selection criteria include the package's name and the source providing it. Every package source is identified by the information contained in a Release file that APT downloads together with the Packages files. It specifies the origin (usually “Debian” for the packages of official mirrors, but it can also be a person's or an organization's name for third-party repositories). It also gives the name of the distribution (usually Stable , Testing , Unstable or Experimental for the standard distributions provided by Debian) together with its version (for example 9 for Debian Stretch ). Let's have a look at its syntax through some realistic case studies of this mechanism.

ОСОБЕННЫЙ СЛУЧАЙ Приоритет экспериментальный

Если внести в список Экспериментальный в твой sources.list файл, соответствующие пакеты никогда не будут установлены, так как их APT приоритет по умолчанию равен 1. Это есть осознанная линия поведения APT-а (такое правило создано чтобы предохранить пользователя от установки Экспериментальных пакетов по ошибке. Пакеты могут быть установлены только в случае явно выполненной aptitude install package/experimental . Пользователи могут выполнить эту команду только если отдают себе полный отчет о сопутствующих рисках, и соглашаются принять на себя ответственность за это. Это же можно сделать и другим способом (хотя не рекомендуется) - обработать пакеты из Экспериментальный одинаково с обработкой пакетов из других дистибутивов с предоставлением им приоритета 500. Для этого надо сделать конкретную запись в /etc/apt/preferences :

Package: * Pin: release a=experimental Pin-Priority: 500

Давайте предположим что вы хотите использовать пакеты только из стабильной (Stable) версии Debian-а. Пакеты из других версий (testing, unstable, experimental) не будут установлены, за исключением случаях - когда пользователь явно это запросит. Ты можешь записать следующие строчки в /etc/apt/preferences файл:

Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10

a=stable определяем имя выбранного дистибутива (stable-стабильный). o=Debian ограничиваем результаты поиска только пакетами чей оригинал (происхождение) есть “Debian”.

Let's now assume that you have a server with several local programs depending on the version 5.24 of Perl and that you want to ensure that upgrades will not install another version of it. You could use this entry:

Package: perl Pin: version 5.24* Pin-Priority: 1001

Справочную документацию для этого конфигурационного файла можно посмотреть в странице руководстве (man) apt_preferences (5) , которую можно вывести на просмотр (в консоле) выполнив man apt_preferences .

TIP комментарии в /etc/apt/preferences

Это -неофициальный синтаксис, который размещает комментарии в /etc/apt/preferences файле, но некоторые текстовые описания могут быть размещены - один или более - “ Explanation ” (секция "Explanation") заголовки вначале каждой записи (строки):

Explanation: The package xserver-xorg-video-intel provided Explanation: in experimental can be used safely Package: xserver-xorg-video-intel Pin: release a=experimental Pin-Priority: 500

6.2.6. Работа с отдельными дистрибутивами

apt является замечательным инструментом. И это создает соблазн выискивать пакеты, приходящие из других дистибутивов. Для примера, после того, как вы установили Стабильный (Stable) , вы можете захотеть попробовать программный пакет годный в других дистибутивах - Тестируемый (Testing) или Нестабильный (Unstable) без расхождения слишком много от исходного состояния системы.

Давайте предположим, что Stable (Стабильный) является вашим рекомендованным (установленным) дистибутивом, однако строки Testing и Unstable также перечислены в вашем sources.list файле. В этом случае, вы можете использовать apt install пакет/testing для установки пакета из Testing . Если в процессе установки будут возникать ошибки - из-за неудовлетворенных зависимостей, дайте решение этих зависимостей внутри Testing через добавление параметра -t testing . Это очевидно, что аналогично надо поступить и по отношению к Unstable .

Все концентрируется вокруг того факта, что APT только принимает во внимание пакеты выше или эквивалентной (равной) версии, которые установлены (беря на себя ответственность за то, что /etc/apt/preferences не будет использоваться для принудительного повышения приоритета выше значения 1000 для некоторых пакетов).

СОВЕТ apt-cache policy

Чтобы лучше понять механизм приоритета, не сомневаться в выполнении команды apt-cache policy обнаруживаем приоритет по умолчанию, который присвоен каждому исходныму пакетому. Вы можете также использовать apt-cache policy package чтобы показать приоритеты всех доступных версий данных пакетов.

Давайте предположим, что вы установили версию 1 первого пакета из Стабильный (Stable) и что версии 2 и 3 есть доступны (в указанном порядке) в Тестируемый (Testing) and Нестабильный (Unstable) . Установленная версия имеет приоритет 100, но доступные версии Stable (этот же пакет) имеет приоритет 990 (потому что это часть выпускаемого релиза - дистибутива). Пакеты в Testing and Unstable имеют приоритеты 500 (по умолчанию - приоритет неустановленной версии). Победитель таким образом будет версия 1 с приоритетом 990. Пакет - “расположенный в Stable ”.

Давайте возьмем пример другого пакета, чья версия 2 была установлена из Testing . Версия 1 доступна в Stable а версии 3 в Unstable . Версия 1 (чей приоритет 990 — таким образом ниже чем 1000) отбрасывается потому что ее номер (ниже) меньше чем установленная версия (1 меньше 2). Таким образом разрешенные версии только 2 и 3, обе с приоритетом 500. Встретившись с такой ситуацией APT выберет новейшую версию (то есть 3), что находится в Unstable . Если вы не хотите чтобы ваш пакет, установленный из Testing мигрировал (изменился) в Unstable версию, вы должны назначить приоритет ниже, чем 500 (490 для примера) для пакетов, приходящих из Unstable . Для этого вы можете модифицировать /etc/apt/preferences :

Package: * Pin: release a=unstable Pin-Priority: 490

6.2.7. Трассирование автоматически устнавливаемых пакетов (наблюдение)

Одной из важных функций команды apt является трассирование (отслеживание, наблюдение) пакетов, которые устанавливаются только с зависимостями (эти пакеты, без взаимосвязанных с ними пакетов, не установятся). Зависимости - это такие пакеты, которые помечаются как “автоматические”, и часто включают в себя например библиотеки.

With this information, when packages are removed, the package managers can compute a list of automatic packages that are no longer needed (because there is no “manually installed” packages depending on them). apt-get autoremove or apt autoremove will get rid of those packages. aptitude does not have this command because it removes them automatically as soon as they are identified. In all cases, the tools display a clear message listing the affected packages.

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

$ aptitude why python-debian i aptitude Рекомендации apt-xapian-index i A apt-xapian-index Зависимости python-debian (>= 0.1.15) 

АЛЬТЕРНАТИВА deborphan и debfoster

В дни, когда apt , apt-get и aptitude были неспособны трассировать (отслеживать) автоматически установленные ранее пакеты, было две программы для составления списка ненужных пакетов: deborphan и debfoster .

deborphan наиболее элементарной из этих программ. Она просто сканирует секции (разделы) libs и oldlibs . При отсутствии дополнительных инструкций, она просто смотрит - какие пакеты в настоящее время установленны и что нет других пакетов, зависящих на них. Полученный перечень может быть полезным как база для удаления ненужных (более) пакетов.

debfoster имеет более тщательно продуманный подход, очень похожий на APT: она сохраняет перечень пакетов, что есть точно установленны, и запоминает те пакеты, которые действительно нужны между каждым вызовом. Если новые пакеты появляются в системе и если debfoster не опознает их как нужные пакеты, они будут показаны на экране вместе с перечнем их зависимостей. Команда далее предложит выбор: удалить пакет (возможно вместе с другими пакетами, которые зависят только от этого удаляемого пакета), пометив его определенным образом, или проигнорировать это временно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *