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