Менеджер пакетов — это комплекс программного обеспечения в Linux, которое выполняет установку, настройку, удаление, а также обновление как отдельных пакетов (программ), так и полностью всей системы.

Одними из наиболее известных пакетных менеджеров являются:

  • Yum и RPM — в Red Hat подобных системах;
  • Dpkg — в Debian подобных системах;
  • Pacman — в Arch Linux ;
  • Portage и Paludis — в Gentoo ;

Yum (Yellow dog Updater, Modified) является открытым пакетным менеджером в Red Hat подобных системах. Был создан с целью облегчения процесса обновления системы с учетом взаимосвязей пакетов. Также, Yum осуществляет поиск RPM-пакетов в репозиториях, их установку, отслеживание зависимостей между пакетами, удаление не использующихся пакетов, а также даунгрейд (откат версии пакета до предыдущей). По умолчанию управление менеджером […]

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

APT (Advanced Packaging Tool) – это утилита в Debian-подобных системах, выполняющая установку, обновление пакетов и отслеживание их зависимостей. Целью создания программы была автоматизация процесса управления пакетами, в частности обновление и обслуживание зависимостей, что в случае прямой работы с менеджером dpkg происходило в ручном режиме. Непосредственно манипуляции с пакетами выполняются при помощи программы apt-get, основные команды […]

Установщики пакетов делают атомарными (одношаговыми) операции с отдельными пакетами: вместо копирования множества файлов и запуска нескольких сценариев пользователь вводит одну команду «установить/удалить пакет». Однако атомарная с точки зрения пользователя операция - добавление в систему одного нового компонента может состоять из нескольких (и даже многих) операций над пакетами. Мефодий уже столкнулся с подобным случаем, изучая на собственном опыте понятие «цепочка зависимостей». Здесь установщики пакетов никак не могут облегчить работу пользователя. Чтобы сделать процедуру установки, удаления и обновления компонента системы атомарной, были разработаны менеджеры пакетов . Менеджер пакетов - это программа, которая вычисляет весь комплекс операций над отдельными пакетами, который нужно произвести для установки/удаления нового компонента (пакета), и сама запускает установщик пакетов сколько нужно раз с нужными параметрами. Кроме того, менеджер пакетов хранит информацию не только о пакетах, уже установленных в системе, но и обо всех, которые доступны для установки с какого-либо носителя или по Сети (подробнее об этом в разделе Package..Доставка).

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

Наиболее известный и популярный менеджер пакетов называется APT (A dvanced P ackage T ool). Первоначально он был разработан в рамках дистрибутива Debian и работал только с установщиком пакетов dpkg, впоследствии для других дистрибутивов была разработана версия, работающая с rpm . В дистрибутиве Мефодия также используется APT.

Чтобы установить пакет, прежде всего нужно узнать о его существовании. Пакетов для каждого дистрибутива Linux доступны тысячи и даже десятки тысяч, ориентироваться в них непросто. APT предоставляет возможность поиска нужного среди доступных пакетов, для этого используется утилита apt-cache . В каждом пакете обязательно содержится краткая аннотация (в одну строку) и небольшое описание содержищихся в пакете ресурсов (не длиннее нескольких абзацев). По команде « apt-cache search подстрока » APT найдёт и выведет список из имён и аннотаций пакетов, где в имени, аннотации или описании нашлась указанная подстрока.

# apt-cache search python | wc 146 1158 8994 # apt-cache search python | grep "programming" python - An interpreted, interactive object-oriented programming language

Пример 9 . Поиск пакетов в APT

Для установки и удаления пакетов предназначена утилита apt-get , а команда установки выглядит совсем просто: « apt-get install имя_пакета », причём не нужно указывать никаких сведений о версии и местонахождении пакета: APT сам найдёт и установит самую последнюю из доступных версий.

# apt-get install python Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено Следующие дополнительные пакеты будут установлены: libpython libgdbm libgmp python-base python-modules python-modules-bsddb python-modules-compiler python-modules-curses python-modules-email python-modules-encodings python-modules-hotshot python-modules-logging python-modules-xml python-strict Следующие НОВЫЕ пакеты будут установлены: libpython libgdbm libgmp python python-base python-modules python-modules-bsddb python-modules-compiler python-modules-curses python-modules-email python-modules-encodings python-modules-hotshot python-modules-logging python-modules-xml python-strict 0 будет обновлено, 15 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено. Необходимо получить 0B/4466kB архивов. После распаковки потребуется дополнительно 16,9MB дискового пространства. Продолжить? y Получено: 1 cdrom://SomeLinux CD RPM/main libpython 2.3.3-some2 Получено: 2 cdrom://SomeLinux CD RPM/main libgdbm 1.8.3-some3 Получено: 3 cdrom://SomeLinux CD RPM/main libgmp 4.1.2-some3 . . . Получено: 14 cdrom://SomeLinux CD RPM/main python-base 2.3.3-some12 Получено: 15 cdrom://SomeLinux CD RPM/main python 2.3.3-some12 Получено 4466kB за 0s (19,5MB/s). Совершаем изменения... Preparing... ######################################### 1: libpython ######################################### [ 6%] 2: libgdbm ######################################### [ 13%] 3: libgmp ######################################### [ 20%] 4: python-base ######################################### [ 26%] . . . 13: python-modules-logging ######################################### [ 86%] Завершено.

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

Процедуру установки APT выполняет в несколько этапов: сначала он ищет запрошенный пакет в списках доступных, найдя, рассчитывает, какие пакеты следует установить, чтобы удовлетворить его зависимости, после чего получает файлы всех нужных пакетов (в данном случае APT нашёл нужные пакеты на диске CD-ROM), и запускает установщик пакетов последовательно для установки всего необходимого. Аналогично, чтобы удалить пакет, достаточно выполнить команду « apt-get remove имя_пакета ».

Кроме APT, есть ещё несколько менеджеров пакетов. Большинство из них специфичны для определённого дистрибутива, как, например, emerge для Gentoo или yast для SUSE. Их задачи и возможности примерно совпадают с APT.

Контроль целостности

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

Целостность системы может нарушиться в момент каких-то изменений в её составе: при установке, удалении или обновлении части пакетов или всей системы. Если для всех этих операций использовать менеджер пакетов, то целостность системы не должна нарушиться. Хотя иногда даже менеджеру пакетов бывает сложно найти правильное решение, чтобы удовлетворить все зависимости и устранить конфликты.

При наличии менеджера пакетов механизм зависимостей можно обернуть и на пользу человеку. Так, можно создать пакет, в котором есть только зависимости и нет никаких ресурсов - такой пакет называется виртуальным . Это бывает полезно в том случае, когда нужно упростить пользователю установку полной среды для выполнения какой-либо задачи. Необходимые для этого пакеты могут напрямую не зависеть друг от друга, но чтобы установить их все за один шаг, пользователю будет достаточно установить один - виртуальный - пакет. Таким виртуальным пакетом оказался сам пакет python в примере, и ещё один - python-strict:

# rpm -ql python (не содержит файлов) # rpm -ql python-strict (не содержит файлов)

Пример 11 . Виртуальные пакеты не содержат файлов

Именно поэтому apt «получил» 15 пакетов (включая два виртуальных), а «совершил изменения» только для 13-ти.

Доставка

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

Чтобы APT мог работать с пакетами, они должны содержаться в организованном по специальным правилам хранилище - репозитории . Список доступных APT репозиториев хранится в файле /etc/apt/sources.list , для каждого репозитория указан способ доступа (например, « cdrom: », « ftp: », « file: » и др.) и адрес.

Rpm cdrom:/ RPM contrib main rpm ftp://updates.somelinux.com 2.4/i586 updates

Пример 12 . Файл sources.list

После каждого изменения файла /etc/apt/sources.list нужно обновлять кеш APT, в котором хранятся сведения о доступных пакетах, командой apt-get update . Для того, чтобы добавить в кеш информацию о пакетах, доступных на CD, следует использовать команду « apt-cdrom add », а не редактировать sources.list вручную.

APT позволяет и просто доставить пакет в систему, не устанавливая его. Так, например, всегда происходит с исходными пакетами , которые просто копируются из репозитория в определённый каталог системы по команде « apt-get source имя_пакета ».

Обновление

Программное обеспечение в мире Linux (и не только) постоянно обновляется: исправляются ошибки, расширяются возможности. Разработчики каждого дистрибутива по мере выхода новых версий программ готовят новые версии соответствующих пакетов и делают их доступными в своём репозитории (репозитории, отражающие наиболее современное состояние программного обеспечения, доступны через Интернет). Пользователю имеет смысл не отставать от обновлений программного обеспечения, потому что новые версии программ - это и большая надёжность работы системы, и новые возможности.

Менеджеры пакетов позволяют делать комплексные обновления всей системы. В APT эту процедуру можно выполнить одной командой: « apt-get dist-upgrade ». Эта процедура сначала исследует содержимое всех доступных репозиториев и находит там все пакеты более поздних версий, чем соответствующие пакеты, установленные в системе. После этого вычисляется объём обновления: должна быть удалена связаная область зависящих друг от друга устаревших пакетов и заменена соответствующей областью более новых версий. Сложные ситуации могут возникать в том случае, если изменилось распределение ресурсов по пакетам: пакеты были разделены или объединены - здесь может потребоваться ручное вмешательство пользователя. Тот род обновлений системы, который нужно делать регуляно и обязательно - это обновления, связанные с безопасностью (security updates). Когда в программе обнаруживают и исправляют серьёзные ошибки, угрожающие безопасности всей системы, разработчики дистрибутивов обычно заботятся о том, чтобы соответствующие обновления достигли пользователя. Обычно присутствует отдельный репозиторий с обновлениями, существенными для безопасности.

Цена удобства

Удобство менеджеров пакетов оплачивается тем, что они могут успешно работать только со специальными целостными областями источников (репозиториями пакетов ). Хотя для большинства пользователей это ограничение не так существенно: те дистрибутивы, в которых используются менеджеры пакетов, обычно имеют огромные репозитории пакетов, где можно найти любое мыслимое и немыслимое программное обеспечение. Если же нужной программы всё-таки нет в официальном репозитории дистрибутива, обычно находятся «частные» репозитории, доступные по сети Интернет, включающие не вошедшие в официальный репозиторий пакеты.

Если всё-таки нужный вам пакет нигде не найти собранным именно для вашего дистрибутива, можно установить и сторонний пакет, но это может быть выполнено только при помощи установщика пакетов, менеджер пакетов в этой ситуации будет бесполезен. Можно установить программу и самостоятельно скомпилировав её из исходных кодов, однако здесь стоит иметь в виду следующее.

Автор программы совершенно не обязан учитывать в ней все тонкости всех дистрибутивов, поэтому возможны, с одной стороны, прямые конфликты с файлами в системе (которые никто уже не отследит), а с другой стороны - конфликты и противоречия скрытые (например, программа устанавливается в подкаталог каталога /usr/local , и ожидает, что все остальные программы тоже находятся в этом каталоге). Это значит, что придётся самостоятельно разобраться и с тем, как и с какими параметрами компилировать программу, как устанавливать её в систему, и как избежать при этом конфликтов. А если так, если вы и в самом деле в состоянии правильно собрать и установить в систему нужную вам, а значит и ещё кому-нибудь, программу, которой пока нет в дистрибутиве, то самое правильное - сделать из неё пакет , по крайней мере исходный пакет , а если получится, то и двоичный . Это здорово облегчит жизнь и вам, когда вы будете компилировать и устанавливать эту программу ещё раз (на другом компьютере или обновляя версию самой програмы), и, главное, всему сообществу пользователей вашего дистрибутива!

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

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

Debian – основанные менеджеры пакетов

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

Ubuntu и Debian считаются одним из наиболее широко используемых потребительских операционных систем на основе Linux, имеющихся сегодня на рынке. Их менеджеры пакетов являются общими, с системой управления пакетами нижайшего уровня «Dpkg», сокращенно от «Debian Package». Это скелет программного обеспечения для управления пакетами, с инструментами для установки, удаления и сборки пакетов.

В Dpkg не хватает более расширенные возможности – функциональные возможности, такие как загрузка пакетов из Интернета, или установка зависимостей автоматически не возможно через DPKG. Будучи в состоянии сделать это из Интернета очень полезна, так как она позволяет пользователям добавлять репозитории пакетов, что значительно увеличивает выбор программного обеспечения, которое может быть легко установлено в системе. Оно также может значительно упростить процесс установки программного обеспечения, будучи в состоянии легко найти и установить пакет только с одной командой.

Pacman – это менеджер пакетов в Arch Linux. Pacman является единственным инструментом управления пакетами, найденным на Arch, что делает его не фронтендом. Arch Linux является релизом операционной системы, где обновления добавляются каждый день. Есть только несколько команд с pacman, предназначенных для поиска, установки и удаления пакетов. Этот менеджер пакетов может подключаться к Интернету и приобретать свои пакеты оттуда, что делает его более удобным для пользователя. Тем не менее, pacman предназначен для установки программного обеспечения из репозитория Arch, что делает его невозможным для установки из сторонних репозиториев.

ABS, сокращенно от Arch Build System, представляет собой систему инструментов, предназначенных для создания устанавливаемых программных пакетов для Arch Linux из исходного кода. Он состоит из нескольких инструментов, функционирующих вместе для создания пакетов – все эти инструменты являются независимыми программами, такими как makepkg, pacman, asp и так далее. Метод создания/установки пакета с использованием ABS отличается от обычного дистрибутива Linux. Вместо установки предварительно скомпилированных пакетов необходимо создать файл PKGBUILD из ветви Svn или Git с помощью пакета asp. Оттуда вы используете команду makepkg, которая использует файл PKGBUILD для загрузки и компиляции исходного кода для вашей системы. Это делает ABS немного менее интуитивным методом установки пакетов на Arch Linux. Он имеет несколько других применений, таких как настройка существующих пакетов, или сборка и установка собственного ядра.

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

Что такое зависимости пакетов

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

Система пакетов

Практически любой софт устанавливаемый в современную linux систему можно найти в Интернете. Он может быть предоставлен разработчиками конкретного дистрибутива через официальные репозитарии (хранилища программного обеспечения, которые могут содержать тысячи пакетов, каждый из которых был скомпилирован, протестирован и поддерживается для распространения и использования в данном дистрибутиве linux ) или доступен в виде исходного кода, который можно загрузить и установить вручную. Поскольку разные семейства дистрибутивов linux используют разные системы упаковки (Debian - пакеты в формате deb , CentOS - rpm формат, openSUSE - тоже rpm но созданный специально для openSUSE ), пакет, предназначенный для одного дистрибутива, не будет совместим с другим дистрибутивом. Большинство дистрибутивов linux входят в одно из трех основных семейств linux , включенных в сертификацию LFCS .

Высоко- и низкоуровневые инструменты управления пакетами.

При решении различных задач по управлению пакетами программного обеспечения, необходимо знать, что существуют два типа утилит: низкоуровневые инструменты (производящие фактическую установку, обновление и удаление файлов пакетов), и высокоуровневые инструменты (отвечают за выполнение задач по разрешению зависимостей и поиска метаданных - так называемые "данные о данных"). Низкоуровневые системы управления пакетами:
  • Debian , Ubuntu и подобные - менеджер пакетов dpkg
  • CentOS - менеджер пакетов rpm
  • OpenSUSE - менеджер пакетов rpm (opensuse )
Высокоуровневые системы управления пакетов:
  • Debian , Ubuntu и подобные - apt-get/aptitude
  • CentOS - менеджер пакетов yum
  • OpenSUSE - менеджер пакетов zipper
Dpkg - низкоуровневый пакетный менеджер в Debian linux Dpkg умеет устанавливать, удалять, предоставлять информацию и создавать deb пакеты, однако он не может автоматически загружать и устанавливать необходимые зависимости для конкретного пакета. Apt-get - высокоуровневый пакетный менеджер в Debian linux и производных дистрибутивах. Apt-get представляет из себя простой способ получения и установки необходимых пакетов из различных источников, с разрешением зависимостей, через командную строку. В отличии от dpkg , apt-get не работает напрямую с .deb файлами пакетов, только пакетом по его имени. Aptitude , это еще один высокоуровневый инструмент управления пакетами в debian -подобных операционных системах и может быть использован для управления пакетами (установка, обновление и удаление пакетов с автоматическим разрешениме зависимостей), быстрым и простым способом. Он обеспечивает те же функциональные возможности что и apt-get , плюс некоторые расширенные, такие как доступ к нескольким версиям пакета. Rpm - система управления пакетами, используемая Linux Standard Base (LSB) - совместимыми дистрибутивами для низкоуровневой обработки пакетов. Как и dpkg , он может запрашивать, устанавливать, проверять, обновлять и удалять пакеты, чаще используется в дистрибутивах на базе Fedora , таких как RHEL и CentOS . Yum - высокоуровневый инструмент для работы с пакетами (установка, удаление, обновление), с управлением зависимостями в системах на основе RPM пакетов. Yum как apt-get и aptitude , работает с репозитариями

Распространенные задачи низкоуровневых инструментов.

1. Установка пакета из скомпилированного *.deb или *.rpm файла.

Минус подобной установки, это невозможность разрешения зависимостей пакета. Вероятней всего вы будете использовать данный способ установки, если в репозитариях соответствующее ПО отсутствует и не может быть установлено с помощью инструментов высокого уровня. В данном случае, пакет не сможет скачать и установить зависимости, если они ему потребуются, и установка будет прервана ошибкой. # dpkg -i file.deb # rpm -i file.rpm Не пытайтесь устанавливать в CentOS , rpm пакет, скомпилированный для OpenSUSE , и наоборот.

2. Обновление пакета из скомпилированного файла.

Обновить пакет ПО не доступный из репозитариев, возможно только вручную. # dpkg -i file.deb # rpm -U file.rpm

3. Список установленных пакетов

Если в ваше распоряжение попала уже работающая система, будет не лишним узнать, что на ней установлено: # dpkg -l # rpm -qa Если вам нужно узнать, установлен-ли какой-то конкретный пакет, можно воспользоваться командой grep . перенаправив на нее вывод менеджера пакетов: # dpkg -l | grep apache2-mpm-itk ii apache2-mpm-itk 2.2.22-13+deb7u6 amd64 multiuser MPM for Apache 2.2 # rpm -qa | grep httpd-2.4.6 httpd-2.4.6-45.el7.centos.4.x86_64 Еще один способ получить аналогичный результат: # dpkg --status package_name # rpm -q package_name 4. Какому пакету принадлежит файл. # dpkg --search my.cnf mysql-common: /etc/mysql/my.cnf # rpm -qf /etc/my.cnf mariadb-libs-5.5.52-1.el7.x86_64

Распространенные задачи высокоуровневых инструментов

1. Поиск пакетов

# aptitude update && aptitude search package_name # zypper refresh && zypper search package_name # yum search package_name если yum получает ключ search all , поиск производится не только по имени пакета но и по описанию # yum search all package_name Каким пакетом установлен файл # yum whatprovides "*/server.cnf" 1:mariadb-server-5.5.52-1.el7.x86_64: The MariaDB server and related files Repo: base Matched from: Filename: /etc/my.cnf.d/server.cnf

2. Установка пакета из репозитария

При установке пакета вам может быть предложено подтвердить установку после того, как менеджер пакетов разрешит все зависимости. # aptitude update && aptitude install package_name # zypper refresh && zypper install package_name # yum update && yum install package_name

3. Удаление пакетов

Если aptitude указан ключ remove , пакет будет удален, за исключением конфигурационных файлов. Что-бы удалить все следы установки пакета, нужно использовать ключ purge . # aptitude remove/purge package_name # yum erase package_name В OpenSUSE обратите внимание на знак "минус" перед именем пакета. # zypper remove -package_name Практически любой менеджер пакетов потребует подтвердить удаление пакета.

4. Просмотр инфоормации о пакете

Вывод информации о пакете mariadb-server # aptitude show mariadb-server # yum info mariadb-server # zypper info mariadb-server Удачи.

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

Управление пакетами очень важно в Linux, если вы знаете как использовать несколько менеджеров пакетов, это еще один аспект, показывающий, что вы уже опытный пользователь. Установка программного обеспечения, обновление, обработка зависимостей, удаление программ это очень важные действия для администрирования операционной системы linux.

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

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

1. DPKG - система управления пакетами Debian

Dpkg - это базовая система управления пакетами в Debian. Может использоваться для установки, удаления, хранения и получения информации о.deb пакетах.

Это инструмент низкого уровня и есть дополнительные утилиты, которые помогают пользователям устанавливать пакеты из репозиториев, разрешать зависимости и искать пакеты по названию. Это такие программы, как:

APT (Advanced Packaging Tool)

Очень популярный, мощный инструмент командной строки с открытым исходным кодом для управления пакетами, который намного увеличивает возможности dpkg. Эта утилита используется в Debian и его производных, таких как Ubuntu, Linux Mint.

Aptitude Package Manager

Это еще одна популярная утилита командной строки для управления пакетами в Debian. Она работает аналогично Apt, но между ними есть некоторые различия. Первоначально он был разработан для Debian, но сейчас может применяться и в Red Hat дистрибутивах.

Synaptic Package Manager

Synaptic - это графический менеджер пакетов linux, написанный на GTK и использующий apt в качестве бэкенда. Он отлично подходит для пользователей, которые не хотят работать в командной строке. Здесь есть все те же необходимые функции что и в apt.

2. RPM (Red Hat Package Manager)

Это базовый формат и система управления пакетами, созданная в компании Red Hat. Так же как и dpkg, это низкоуровневый инструмент, для которого существует несколько утилит, это такие пакетные менеджеры linux:

YUM (Yellowdog Updater, Modified)

Это популярный менеджер пакетов linux с открытым исходным кодом для командной строки. Он используется для управления пакетами в дистрибутиве Red Hat. Если сравнивать с инструментом apt, то здесь есть все те же функциональные возможности, правда, работает немного медленнее. Написан на Python 2. Немного больше об отличиях формата пакетов можно прочитать в отдельной статье.

DNF – Улучшенный Yum

Это пакетный менеджер linux, используемый в дистрибутиве Fedora начиная с версии 18. Он представляет из себя следующее поколение YUM.

Сначала он был создан только для экспериментов, но начиная с Fedora 22 он используется как пакетный менеджер по умолчанию. Он работает почти также как и YUM, для разрешения зависимостей используется библиотека libsolv и hawkey, но отличие от YUM, написан на Python 3. Здесь можно наблюдать увеличение скорости работы, а также уменьшение потребления памяти.

3. Pacman - менеджер пакетов Arch Linux

Этот менеджер пакетов linux разработан командой программистов для дистрибутива ArchLinux. Сейчас, кроме ArchLinux, он используется в Manjaro и еще нескольких малоизвестных дистрибутивах, основанных на ArchLinux.

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

Программа специально спроектирована для удобной работы с пакетами в Arch Linux. А поскольку это система с режимом выпуска в виде роллинг релизов, то этот пакетный менеджер подходит наилучшим образом. Pacman поддерживает систему в актуальном состоянии синхронизируя списки пакетов из основного сервера. Причем существует только одна версия системы - текущая.

Программа написана на Си, а в качестве пакетов используются файлы формата tar.xz, которые на самом деле являются обычными архивами, внутри которых находятся файлы программы и файл описания установки PKGBUILD.

4. Zypper - пакетный менеджер OpenSUSE

Это пакетный менеджер linux для командной строки в дистрибутиве OpenSUSE и SUSE Linux. Разработан специально для этого дистрибутива и использует библиотеку libzypp, в которой реализованы такие общие возможности, как доступ к репозиторию, установка пакетов, разрешение зависимостей, работа с репозториями и многое другое.

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

5. Portage - пакетный менеджер Gentoo

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

Интересной особенностью есть состояния Portage, а также слоты, позволяющие устанавливать несколько версий одной программы или библиотеки в вашей системе. Здесь нет как такового списка пакетов, есть только дерево портов, в котором и содержаться файлы ebuild с инструкциями для сборки всех пакетов. Сохранив дерево можно очень просто откатить систему к предыдущей версии.

Выводы

Как я уже говорил, основная цель статьи - обзор пакетных менеджеров linux, познакомить пользователей с лучшими пакетными менеджерами, а также показать отличия между ними. Конечно, пользователям определенного дистрибутива придется изучать свой менеджер пакетов более детально. Если я упустил важный момент, об одной из программ, напишите в комментариях!