Управление репозиториями включает в себя:
•
получение списка включённых репозиториев,
•
получение информации о репозитории,
•
подключение нового репозитория и отключение ненужного,
•
обновление локального кэша пакетов после изменения репозиториев.
И вот тут мы сталкиваемся с первым различием в функционале объектов сравнения: если yum
и zypper
прекрасно справляются с первыми двумя задачами, то в apt
таких возможностей не предусмотрено. Подключение и отключение репозиториев – штатные функции и yum
, и zypper
(последний умеет также их переименовывать и модифицировать), тогда как в Ubuntu для этого требуется специальная утилита add-apt-repository
(которая, кстати, появилась совсем недавно). Обновление локального кэша и в yum
'е, и в zypper
'е выполняется при каждом запуске (хотя это при необходимости можно отключить), apt-get
же требует специальной субкоманды.
Основные действия с пакетами – это их поиск, получение информации, установка, удаление и обновление. И с этим вся наша троица справляется «на ура», хотя опять-таки кое у кого оно звучит громче, а у некоторых ещё и троекратней.
Начать с того, что для поиска и получения информации, с одной стороны, и непосредственно для действий с пакетами в Ubuntu требуется две отдельные команды – apt-cache
и apt-get
, соответственно, тогда как в Fedora и openSUSE достаточно одной, титульной. Далее, apt-cache search
не способен отличать установленные и неустановленные пакеты, что по силам yum
'у. А zypper
, кроме того, имеет собственный фильтр, делающий ненужным обращение к команде grep
для отделения «зёрен от плевел». Вообще по богатству извлекаемой информации zypper
в ряду нашего сравнения – вне конкуренции.
Возможности всех трёх «главменеджеров» по части установки, удаления и обновления пакетов, пожалуй, равноценны. Все они, кроме банального разрешения зависимостей, умеют дифференцированно вести себя с необязательными зависимостями и избавляться от зависимостей «осиротелых», блокировать обновления отдельных пакетов и изменять их статус, хотя и делают это по разному.
Различно также обращение сравниваемых утилит с метапакетами – наиболее специфичным (и гибким) тут опять же выглядит zypper
. Если метапакеты в Ubuntu и Fedora (задачи и группы, соответственно) представляют собой жёсткие списки пакетов, то шаблоны в openSUSE включают в себя обязательные, альтернативные и опциональные компоненты, определённые майнтайнерами. Но даже они могут быть скорректированы пользователем при установке. Все три типа метапакетов ныне могут быть принудительно «разубожены» – то есть после установки из них можно изъять, при соблюдении некоторых условий, ненужные компоненты. Делается это различным образом: «лобовым» удалением пакета в Fedora, изменением его статуса в Ubuntu, удалением включающего шаблона в openSUSE.
И, наконец, действия над системой в целом – это её обновление и очистка от «мусора». Тут глубоких различий между возможностями утилит из сравниваемых дистрибутивов я не вижу. Разве что опять-таки при использовании apt-get
требуется отдельной командой предварительно обновить кэш, а yum
и zypper
сделают это автоматически. А так – все три системы предлагают два вида обновления: просто обновление установленных пакетов до последних доступных в репозитории версий и апгрейд дистрибутива, позволяющий смену его релиза. Правда, yum
предлагает ещё несколько разновидностей обновлений системы, но каково их практическое значение, мне осталось не ясным.
Даже такое беглое сопоставление пакетных менеджеров наметить среди них явного лидера по функциональности и гибкости позволяет, и лидер этот – zypper
. Однако немаловажно для программ этого назначения и удобство использования, во многом определяемое синтаксисом команд. Как обстоит дело с этим в нашей тройке по борьбе с басмачамипакетами?
Синтаксически наименее прозрачным и логичным мне представляются утилиты apt
– хотя бы потому, что на каждый чих их требуется две (это не считая дополнительных команд типа add-apt-repository
– да, Беня знает за автодополнение, но всё же...). Да и субкоманды к каждой длинноваты и не всегда смысл их очевиден. В этом отношении yum
, ограничивающийся одноимённой командой, кажется гораздо более простым и лаконичным. Однако ряд функций его реализован за счёт внешних плагинов, которые не всегда устанавливаются по умолчанию, и с которыми тоже надо разбираться. А вот zypper
с его логичным синтаксисом, допускающим использование сокращений в субкомандах, выглядит абсолютным чемпионом.
Читать дальше