Вступление
Инструменты для работы с пакетами можно разделить на четыре группы:
•
установщики пакетов;
•
менеджеры пакетов;
•
их графические фронт-энды;
•
центры приложений.
С первой группой всё ясно – это низкоуровневые утилиты для работы с единичными пакетами, каковыми в нашем случае выступают самые обычные rpm для Fedora и openSUSE, и dpkg для Ubuntu. Сравнивать тут особенно нечего, по своим функциям они практически идентичны. Да и непосредственно применяются нынче редко – все обыденные манипуляции с пакетами обычно проще выполнять посредством менеджеров пакетов и их графических оболочек, которые и будут основным объектом дальнейшего сравнения.
Что же касается четвёртой группы – это самые высокоуровневые программы, в которых прозрачно для применителя интегрированы функции поиска пакетов в Сети, доступа к содержащим их репозиториями и собственно пакетный менеджмент.
Менеджеры пакетов
Каждый из объектов нашего нынешнего сравнения имеет собственный менеджер пакетов, работающий из командной строки и выполняющий все необходимые функции по доступу к репозиториям и управлению пакетами. Правда, в Ubuntu и Fedora этот самый «главменеджер» имеет по альтернативе, однако в первом случае она нынче настоятельно не рекомендуется к использованию, а во втором, насколько я знаю, вышла из употребления явочным порядком. Так что речи о них здесь не будет.
Среди участников нашего сравнения в роли «главменеджера» выступают:
•
в Ubuntu – комплекс утилит apt
;
•
в Fedora – утилита yum
;
•
в openSUSE – утилита zypper
.
Список этот составлен в порядке «старшинства»: apt
– древнейший из пакетных менеджеров вообще (начало разработки – 1998 год), yum
создавался на несколько лет позже, в 2001-2002 годах, а zypper
появляется в составе openSUSE в 2008 году. И это следует учитывать при сравнении функционала наших героев: более поздние пакетные менеджеры разрабатывались с учётом опыта предшественников.
Кстати, давайте посмотрим на базовые функции, которые должен выполнять пакетный менеджер. Они разделяются на три группы: управление репозиториями, действия с пакетами и метапакетами, действия над системой в целом.
Управление репозиториями включает в себя:
•
получение списка включённых репозиториев,
•
получение информации о репозитории,
•
подключение нового репозитория и отключение ненужного,
•
обновление локального кэша пакетов после изменения репозиториев.
И вот тут мы сталкиваемся с первым различием в функционале объектов сравнения: если 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.