Васильев Андрей Михайлович
2020
В экосистеме Linux существует множество «дистрибутивов», которые позволяют пользователям запускать свои приложения и решать свои инфраструктурные задачи
Если абстрагироваться от деталей, то все дистрибутивы
Слово «дистрибутив» является калькой с английского «distribution», которым описывается набор совместимого программного обеспечения. Совместимость может быть реализована как на уровне исходных кодов, так и на уровне бинарных кодов.
Примерами дистрибутивов могут служить:
Дистрибутивы исторически появились для решения задачи поставки данных до конечных пользователей
Дистрибутивы позволяют получить быстро доступ к ПО унифицированным способом
Производители обычно выпускают новые дистрибутивы на регулярной основе, один раз в несколько месяцев или лет
Дистрибутив | Дата выпуска | Окончание поддержки |
---|---|---|
Debian 9 (Stretch) | 17 июня 2017 | 18 июля 2020 |
Debian 10 (Buster) | 6 июля 2019 | 2022 |
Пакетный менеджер - это система приложений, которые позволяют конечным пользователям управлять приложениями на своей системе: устанавливать, удалять, обновлять и т.д.
Аналогом пакетного менеджера в Linux можно назвать:
Разные производители дистрибутивов зачастую отличаются именно пакетными менеджерами, которые используются в их дистрибутивах
Пакетный менеджер | Дистрибутивы Linux |
---|---|
Debian (.deb) | Debian, Ubuntu, Linux Mint, Raspbian, Astra Linux |
Red Hat (.rpm) | Fedora, CentOS, Red Hat Enterprise Linux, openSUSE |
Базовой единицей распространения ПО в дистрибутиве является пакетный файл
Пакетный файл обычно создаётся с помощью автоматизированной системы сборки пакетов, настройкой которой для каждого отдельного пакета занимается мейнтейнер (от английского maintain — поддерживать)
Пакеты могут быть созданы также разработчиками ПО
Репозиторий представляет собой хранилище пакетов для дистрибутива
Для работы приложения зачастую недостаточно только одного исполняемого файла, нужны также библиотеки, интерпретаторы, возможно другие исполняемые файлы
Пакетные менеджеры обычно включают в себя инструменты
Инструменты различных дистрибутивов
Дистрибутив | Низкоуровневый инструмент | Высокоуровневый инструмент |
---|---|---|
Debian производные, Astra | dpkg | apt, apt-get, aptitude |
Fedora, RHEL, CentOS | rpm | yum, dnf, zypper |
Alt Linux | rmp | apt-get, aptitude |
В Debian поиск пакетов в репозитории всегда происходит по локальному кешу
Для обновления кеша пакетов в Debian-linux необходимо выполнить команду apt-get update
или apt update
Для поиска пакета по имени или его краткому описанию можно использовать
apt-cache search TEXT
apt search TEXT
Вместо TEXT
необходимо вводить искомое слово, обычно название пакета совпадает с названием приложения, которое надо установить.
Дистрибутив Debian предлагает графический инструментарий для поиска пакетов https:/packages.debian.org
Помимо взаимодействия с графическим интерфейсом можно сформировать запросы в адресной строке:
https://packages.debian.org/PACKAGE
. Вместо PACKAGE надо написать название пакетаhttps://packages.debian.org/file:PATH
. Вместо PATH надо указать путь к файлу, который ищетсяДля установки пакета из репозитория необходимо выполнить команду apt-get install PACKAGE
или apt install PACKAGE
. Вместо PACKAGE
необходимо указать имя пакета для установки
Внимание если вы давно не обновляли локальный кеш пакетов, то его необходимо обновить с помощью apt update
Если вы хотите поставить .deb-пакет не из репозитория, то необходимо
dpkg
: dpkg -i PATH
, где вместо PATH
указать путь к .deb-пакету
Если пакету не хватает зависимостей, то его установка завершится с ошибкой
Удаление обычно выполняется высокоуровневыми инструментами
В Debian для удаления пакета надо выполнить apt-get remove PACKAGE
или apt remove PACKAGE
, где вместо PACKAGE
необходимо указать пакет, который нужно удалить
Важно понимать, что необходимо указать точное название пакета
dpkg -l
apt list
Наиболее частая операция при использовании пакетного менеджера — обновление установленных пакетов в связи с выходом исправлений безопасности или новых функциональных версий
Для обновления локальных пакетов необходимо выполнить apt-get upgrade
или apt upgrade
Внимание. Не забывайте обновлять локальный кеш пакетов перед выполнением данных операций с помощью apt update
Обновление из файла-пакета не отличается от установки нового пакета. Достаточно вызвать dpkg -i PACKAGE
, где вместо PACKAGE надо указать путь к deb-файлу
Помимо командных инструментов для управления списками установленных пакетов могут быть использованы графические и псевдографические инструменты
Debian в целом разделяет пакеты на «свободные» и «несвободные». Для определения категории используются The Debian Free Software Guidelines (DFSG)
В соответствии с этим определением пакеты делятся на 3 категории:
main
non-free
contrib
Последние две категории пакетов официально не являются частью дистрибутива, но их мейнтенеры могут использовать инфраструктуру Debian
Для настройки списка доступных репозиториев используются
/etc/apt/sources.list
/etc/apt/sources.list.d
Каждая строка в этих файлах описывает подключённый репозиторий
deb uri distribution [component1] [component2] [...]
deb
для бинарных репозиториев, deb-src
для репозиториев с пакетами исходных кодов (из которых были собраны бинарные пакеты)https://...
или путём к файловой системе file://...
stable
, testing
…main
, contrib
, non-free
Между выпусками Debian проходит от полутора до двух лет, за которые успевает выйти много версий ПО, которые могут быть необходимы пользователю
Проект deb-multimedia нацелен на предоставление самых последних версий мультимедиа-пакетов в Debian. Пользователи получают самые последние версии от производителя, включая самые последние функции и ошибки
Скачайте и установите пакет с ключом:
wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
sudo dpkg -i deb-multimedia-keyring_2016.8.1_all.deb
Добавьте файл deb-multimedia.list
в /etc/apt/sources.list.d
:
deb https://mirror.yandex.ru/debian-multimedia/ buster main non-free
Похожую задачу решает Debian Backports
В рамках этого проекта создан репозиторий, в который помещаются пакеты из Debian Testing, которые были скомпилированы для достижения бинарной совместимости с текущим стабильным выпуском
Debian backports стали распространяться вместе с официальными выпусками debian, поэтому достаточно добавить -backports
-дистрибутив в список репозиториев:
deb http://deb.debian.org/debian buster-backports main
В отличие от debian-multimedia пакеты автоматически не обновятся до версий debian-backports, их необходимо явно установить:
apt-get -t buster-backports install PACKAGE
Некоторые крупные производители ПО предлагают собственные репозитории
Некоторые из них предлагают новые имена для пакетов, некоторые предлагают конкретные версии своих пакетов
Пользователи зачастую хотят перейти на новую версию дистрибутива:
Проблемы обновления:
apt-get update
apt-get dist-upgrade
dist-upgrade
часть пакетов может быть удалена, их надо будет поставить заново при необходимостиПользователи могут получить доступ к большой коллекции ПО унифицированным образом
Мейнтенерами пакетов являются не разработчики ПО, а отдельные люди, что снижает нагрузку на разработчика
ПО внутри репозитория совместимо друг с другом, используются общие библиотеки
При использовании репозиториев пользователи обычно работают не с самой последней версией ПО, а версий, что была доступна на момент формирования репозитория
ПО может не входить в состав репозитория
Дистрибутив может поставлять только более свежую версию ПО, например Java 14 вместо Java 11