Управление пакетами с помощью APT

Высокоуровневая система решает следующие задачи:

  1. Как получить пакет для установки.
  2. Как получить все его зависимости для установки.
  3. Скачать пакеты и вызывать низкоуровневую систему для установки скачаных пакетов.

Высокоуровневая система также позволяет и удалять уже установленные пакеты. Т.е. обычно пользователь может даже и не знать о наличии низкоуровневой системы.

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

В рамках системы APT у каждого репозитория есть файлы Packages*, которые описывают списки доступных в настоящий момент пакетов в репозитории. На каждом компьютере-клиенте содержится копия этих файлов. Соответственно локальные файлы позволяют нам сразу обратиться к пакету на сервере по конкретному адресу. Минусом такого подхода является то, что эти файлы имеют тенденцию устаревать, т.к. в процессе жизни репозитория пакеты в нём обновляются. Только в мёртвых репозиториях пакеты не изменяются.

=> в дистрибутивах, использующих APT пользователи зачастую обновляют локалный слепок списка файлов с удалённых репозиториев.

Командный интерфейс APT

Состоит из приложений двух поколений. Первое поколение - стабильное:

  • apt-get
  • apt-file
  • apt-cache
  • apt-….

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

Мисус достаточно прост: их много :) И запомнить чем конкретно занимается та или иная утилита сложно. Поэтому сейчас разрабатывается инструмент 2 поколения: apt. Он объединяет в себе функциональность всех предыдущих инструментов.

Мы рассмотрим именно apt.

  • Для обновления локального кеша используется команда update, т.е. apt update.
  • Для вывода списка всех известных пакетов можно воспользоваться list.
  • Для вывода пакетов, которые можно обновить, воспользуйтесь list --upgradable.
  • Для обновления можно использовать:
    • upgrade
    • dist-upgrade
  • Для поиска пакета в репозитории используется команда search: search browser. image viewer
  • Для установки пакета используем команду install: install fim

Скачаем изображение https://assets.amuniversal.com/244f2a80c8c601366722005056a9545d

  • Для удаления пакета можно воспользоваться следующими командами: remove, purge.
  • Для удаления автоматически установленных и ненужных пакетов можно использовать autoremove.

Конфигурация APT

Файлы конфигурации находятся в каталоге /etc/apt.

  • Каталог apt.conf.d содержит файлы, определяющие поведение системы APT в различных ситуациях.
  • Каталог preferences.d предназначен для внесения пользовательских настроек.
  • Каталог trusted.gpg.d содержит список GPG подписей, которым APT доверяет.
  • Файл sources.list и каталог sources.list.d содержат списки репозиториев, которые настроены для использования в системе APT.
deb [arch=amd64] http://10.7.223.252:8008/debian          stretch         main contrib non-free
deb [arch=amd64] http://security.debian.org/ stretch/updates main

Описание репозитория начинается с ключевого слова. deb, deb-src. deb описывает репозитории, которые содержат бинарные пакеты. deb-src содержит пакеты с исходным кодом, из которых были созданы бинарные пакеты.

Далее идёт описание той архитектуры, которая доступна для данного репозитория.

Далее идёт путь к репозиторию. Путь может быть как сетевой, так и локалный. Основное требование - он должен быть в формате URI.

Следом идёт название выпуска ОС. В нашем случае это stectch и stetch/updates. В Debian есть выпуск, в который попадают сначала все пакеты для тестирования, т.е. он находится в перманенто сломанном состоянии. Он называется experimental или sid.

В конце указываются части выпуска, которые мы хотим взять. В Debian различают 3 части:

  • main - для данных пакетов есть исходный код и он является полностью свободным, т.е. нет никаких закрытых зависимостей.
  • contrib - для данных пакетов есть исходный код, он сам по себе является сводобным, но он зависит от заркытых частей.
  • non-free - для данных пакетов обычно нет исходного кода или его лицензия не является свободной к использованию.

Давайте добавим новый репозиторий в наш список.

В debian есть выпуск типа testing, в который попадают пакеты из unstable, которые вроде бы работают. В какой-то момент времени команда Debian решает, что пора делать очередной выпуск и добавление новых пакетов в testing прекращается, допускается только лишь внесение исправлений. То есть происходит процедура стабилизации выпуска. Когда количество багов становится приемлемым, происходит создание нового выпуска на основании текущего состояния testing, а testing вбирает в себя новые пакеты из unstable.

Однако есть другой способ получать обновления: backports. Backports - это мета-выпуск, который содержит в себе обновления версий, которые были скомпилированы для работы в текущем выпуске. Для stretch этот выпуск называется stretch-backports. Давайте добавим его в sources.list.

  • vim
  • emacs
  • nano

nano file.txt

В качестве источника данных воспользуйтесь http://mirror.yandex.ru/debian