img

Linux Jargon Buster: что такое менеджер пакетов в Linux?

Linux Jargon Buster: что такое менеджер пакетов в Linux? Как это работает?

То, что позволяет отличать дистрибутивы Linux друг от друга, – это механизм управления пакетами. В этой части серии статей Linux Jargon Buster вы узнаете об организации пакетов и менеджерах пакетов в Linux. Вы узнаете, что такое пакеты, что такое менеджеры пакетов, как они работают и какие виды менеджеров пакетов существуют.

Что такое менеджер пакетов в Linux?

Простыми словами, менеджер пакетов – это инструмент, который дает пользователям возможность устанавливать, удалять, обновлять, настраивать и управлять программными пакетами в операционной системе. Менеджер пакетов может представлять собой приложение с графическим интерфейсом, такое как Software Center, или инструмент командной строки, такой как apt-get или pacman.

Вы часто будете встречать термин «пакет» в руководствах или статьях на It’s FOSS. И чтобы понять, что такое менеджер пакетов, вам нужно иметь представление о том, что такое пакет. 

Что такое пакет?

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

Раньше программное обеспечение устанавливалось из исходного кода. Вы бы обратились к файлу (обычно он назывался readme) и посмотрели, какие программные компоненты требуются и где расположены двоичные файлы. Конфигурационный скрипт или make-файл обычно находятся там же. Вам придется компилировать программное обеспечение или собирать его вручную, а также обрабатывать все зависимости (некоторое программное обеспечение требует, чтобы было установлено другое программное обеспечение) самостоятельно. 

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

Это как выбор между «испечь торт» или «купить торт». 

Примерно в середине 90-х годов Debian создал формат организации пакетов .deb или DEB, а Red Hat Linux создал систему организации пакетов .rpm или RPM (сокращение от Red Hat Package Manager). Компиляция исходной кода все еще имеет место быть, но теперь это необязательно. 

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

Как работает менеджер пакетов?

Учитывайте, что менеджер пакетов – это общая концепция, и она не является уникальной для Linux. Вы можете найти менеджер пакетов для самых разных программных обеспечений или языков программирования. Есть менеджер пакетов PIP, который был создан исключительно для пакетов Python. Даже редактор Atom имеет свой собственный менеджер пакетов. 

Так как основной фокус внимания в этой статье направлен на Linux? то и рассматривать все я буду с точки зрения Linux. Однако большую часть всего, что здесь будет, можно применить и к менеджерам пакетов в целом. 

Я нарисовал эту схему, чтобы вам было проще понять, как работает менеджер пакетов. 

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

В репозиториях также есть файлы метаданных, которые содержат информацию о пакетах, такую как имя пакета, номер версии, описание пакета, имя репозитория и т.д. Это то, что вы можете увидеть, если введете команду apt show в Ubuntu/Debian. 

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

Когда вы запускаете команду установки менеджера пакетов (например, apt install package_name), он обращается к этому кэшу. Если он находит там информацию о пакете, то он подключается к соответствующему репозиторию через Интернет и перед тем, как установить пакет в вашей системе, загружает его.

У пакета могут быть зависимости. Это значит, что, возможно нужно будет установить еще какие-то пакеты. Менеджер пакетов внимательно следит за этим и устанавливает зависимости автоматически вместе с основным пакетом. 

Менеджер пакетов в Linux, обрабатывающий зависимости

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

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

Разные виды менеджеров пакетов

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

Например, в RPM есть менеджеры пакетов Yum и DNF. А для DEB - менеджеры пакетов на основе командной строки apt-get и aptitude. 

See Packages By Repositories Synaptic

Менеджер пакетов Synaptic

Менеджеры пакетов не всегда бывают основаны на командной строке. Есть и инструменты управления пакетами с графическим интерфейсом, такие как Synaptic. Также менеджером пакетов является программный центр вашего дистрибутива, даже если за всем этим работает apt-get или DNF.

Заключение

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

И я пока не касался такие новых универсальных форматов организации упаковки, как Snap и Flatpak. 

Ссылка
скопирована
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
  Вы можете более эффективно запускать и компилировать свои программы с помощью этого удобного средства автоматизации. Есл
img
Дотфайлы (dotfiles) – это немаловажные файлы, которые могут сыграть ключевую роль в вашей карьере разработчика программного обес
img
Linux Jargon Buster: что такое менеджер пакетов в Linux? Как это работает? То, что позволяет отличать дистрибутивы Linux друг от
img
Виртуализация серверов – это разделение одного физического сервера на несколько виртуальных серверов, каждый из которых работает
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В докум
img
Удаленный доступ к системам давно стал необходимостью, и сейчас с трудом можно представить, что было бы, если бы мы не могли упр
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59