The Debian GNU/Linux FAQ
Глава 6 — Основы системы управления пакетами Debian
Пакеты обычно содержат все файлы необходимые для реализации определенного набора функций. Есть два типа пакетов Debian:
Двоичные (Binary) пакеты, которые содержат выполняемые и конфигурационные файлы, страницы man/info, информацию об авторских правах и другую документацию. Эти пакеты распространяются в архивах специального формата Debian (см. Какой формат у двоичных пакетов Debian?, раздел 6.2); их обычно можно отличить по расширению ‘.deb’. Двоичные пакеты могут быть распакованы при помощи утилиты dpkg ; подробности даны в странице руководства.
Исходные (Source) пакеты, которые состоят из .dsc файла описывающего исходный пакет (включая имена файлов описанных ниже), .orig.tar.gz файла, содержащего оригинальный исходный текст программы в архивном формате tar.gz и, обычно, .diff.gz файл содержащий специфические для Debian изменения к оригинальным исходным текстам. Утилита dpkg-source запаковывает и распаковывает исходные архивы Debian; детали описаны на страницах руководства.
При установке программного обеспечения система управления пакетами использует «зависимости» (dependencies), которые тщательно определены сопровождающим пакет. Эти зависимости указаны в файле control , связанном с каждым пакетом. Например пакет содержащий GNU компилятор C ( gcc ) «зависит» от пакета binutils , в котором содержатся компоновщик и ассемблер. Если пользователь попытается установить gcc до того как установит binutils , то система управления пакетами (dpkg) выдаст сообщение об ошибке, содержащее указание на необходимость установить binutils , и прервет установку пакета. (Обычно, эта возможность может быть отключена настойчивым пользователем, см. dpkg(8) .) Более подробно смотри ниже в Что подразумевают говоря, что пакет Зависит/Рекомендует/Предполагает/Конфликтует/Заменяет/Предоставляет (Depends/Recommends/Suggests/Conflicts/Replaces/Provides) другой пакет?, раздел 6.9.
Инструменты управления пакетами Debian могут использоваться для:
манипуляций и управления пакетами и частями пакетов,
помощи пользователю в разбиении пакетов, которые должны быть перенесены на носителях ограниченной емкости, таких как дискеты,
помощи разработчику в сборке пакетов,
помощи пользователю в установке пакетов, размещенных на удаленном FTP сервере.
6.2 Какой формат у двоичных пакетов Debian?
«Пакет» Debian, или архив Debian, содержит выполнимые файлы, библиотеки и документацию связанные с определенным набором программ или с множеством взаимосвязанных программ. Как правило, файл архива Debian имеет расширение .deb .
Внутренний формат двоичных пакетов Debian описан в странице руководства deb(5) . Этот внутренний формат может быть изменен (в различных выпусках Debian GNU/Linux), поэтому всегда используйте dpkg-deb(1) для различных манипуляций с файлами .deb .
6.3 Почему у пакетов Debian такие длинные имена?
Имена двоичных пакетов Debian удовлетворяют следующему соглашению: _-.deb
Заметим, что foo полагается именем пакета. Для проверки имени пакета связанного с конкретным .deb файлом можно воспользоваться следующими методами:
просмотреть файл «Packages» в каталоге FTP сервера, где хранился архив Debian. Этот файл содержит блоки описаний для каждого пакета; первое поле в каждом блоке — имя пакета.
использовать команду dpkg —info foo_VVV-RRR.deb (где VVV и RRR — версия и ревизия проверяемого пакета). При этом, среди прочей информации, выводится имя пакета соответствующее архивному файлу.
Компонент VVV — номер версии определяемый разрабочиком программы. На формат версии нет каких либо ограничений, он может быть различным, напр., «19990513» или «1.3.8pre1».
Компонент RRR номер ревизии Debian, определяется разработчиком Debian (или конкретным пользователем, если тот хочет построить пакет сам). Этот номер соответствует количеству пересмотров, которому подвергся пакет, так, при каждом пересмотре, обычно, вносятся изменения в Debian Makefile ( debian/rules ), управляющий файл Debian ( debian/control ), сценарии инсталяции и удаления ( debian/p* ), или в файлы конфигурации используемые с пакетом.
6.4 Что это за управляющий (control) файл Debian?
Спецификации содержимого управляющего файла Debian приводятся в «Руководстве по пакетам Debian» (Debian Packaging manual), глава 4, см. Какая ещё документация существует для системы Debian?, раздел 11.1.
Короткий пример файла control для пакета Debian hello приведен ниже:
Поле Package определяет имя пакета. Это имя по которому инструменты упраления пакетами будут его опознавать. Обычно такое же, но не обязательно, как первая часть имени файла архива Debian.
Поле Version определяет версию разработчика и (в последнем компоненте) номер ревизии пакета данной программы как раскрыто в Почему у пакетов Debian такие длинные имена?, раздел 6.3.
Поле Architecture определяет тип процессора для которого был скомпилирован данный пакет.
Поле Depends содержит список пакетов, которые должны быть установлены для успешной установки данного пакета.
Installed-Size показывает сколько дискового пространства займет установленный пакет. Этот параметр может использоваться программами установки для определения остающегося дискового пространства.
Строка Section определяет «раздел», в котором хранится пакет Debian на FTP сервере. Это имя подкаталога (в одном из основных каталогов, см. Что содержат каталоги в FTP-архивах Debian?, раздел 5.1) в котором хранится пакет.
Поле Priority показывает насколько важным является пакет для установки; некоторые программы, напр., dselect или console-apt могут сортировать пакеты по категориям. См. Что такое Требуемый/Важный/Стандартный/Необязательный/Дополнительный (Required/Important/Standard/Optional/Extra) пакет?, раздел 6.7.
В поле Maintainer указан e-mail адрес человека, ответственного за поддержку данного пакета.
В поле Description дается краткое описание возможностей, предоставляемых пакетом.
Для более подробной информации о полях, которые может иметь пакет, смотрите главу 4 Руководства по пакетам Debian, «Управляющие файлы и их поля.»
6.5 Что такое Debian conffile?
Conffile содержит список файлов конфигурации (обычно помещаемых в /etc ), которые система управления пакетами не будет перезаписывать при обновлении пакета. Это гарантирует, что содержимое файлов конфигурации будет сохранено и позволяет обновлять пакеты не прерывая работу системы.
Чтобы точно определить, какие файлы сохраняются при обновлении, запустите:
и смотрите в строке «Conffiles:».
6.6 Что это за сценарии preinst, postinst, prerm и postrm?
Это выполняемые сценарии, которые автоматически запускаются перед или после установки пакета. Вместе с файлом control , эти файлы являются частью «управляющего» раздела архивного файла Debian.
Данный сценарий выполняется перед тем, как пакет будет распакован из .deb файла. Многие сценарии ‘preinst’ останавливают сервисы, которые будут обновлены пакетом, до завершения установки или обновления.
Этот сценарий, обычно, завершает требуемую настройку пакета после того, как он был извлечен из .deb файла. Часто, сценарий ‘postinst’ запрашивает у пользователя различные параметры и/или предупреждает пользователя, что если он примет значения по-умолчанию, то позже прийдется переконфигурировать пакет. Многие сценарии также ‘postinst’ выполняют команды, необходимые для запуска или перезапуска сервиса после установки или обновления пакета.
Этот сценарий, обычно, останавливает выполнение всех демонов, связанных с пакетом. Он выполняется перед удалением файлов, связанных с пакетом.
Этот сценарий, обычно изменяет ссылки или другие файлы, связанные с пакетом, и/или удаляет файлы созданные пакетом. (См. также Что такое виртуальный пакет?, раздел 6.8).
В настоящее время все управляющие файлы можно найти в каталоге /var/lib/dpkg/info . Файлы, относящиеся к пакету foo имеют имя «foo» и расширения «preinst», «postinst» и т.д. Файл foo.list в этом каталоге содержит список всех файлов установленных пакетом foo . (Заметим, что местонахождение файлов определяется dpkg; вам не следует полагаться на указанный каталог).
6.7 Что такое Требуемый/Важный/Стандартный/Необязательный/Дополнительный (Required/Important/Standard/Optional/Extra) пакет?
Для каждого пакета Debian создателями дистрибутива определен приоритет (priority), в качестве помощи для управления пакетами. Приоритеты следующие:
Требуемый (Required): пакет, который необходим для правильного функционирования системы.
Сюда включены все инструменты, необходимые для устранения неполадок в системе. Вам не следует удалять эти пакеты, иначе ваша система может перестать работать, и вы, что не исключено, даже не сможете использовать dpkg для того, чтобы вернуть все на свои места. Функциональность системы, в которой установлены только Требуемые пакеты, не слишком высока, но достаточна для того, чтобы позволить системному администратору загрузить ее и установить больше програмного обеспечения.
Важные (Important) пакеты содержат программы, которые должны иметься в любой Unix-подобной системе.
Без этих программ не смогут работать или не будут обладать полной функциональностью другие пакеты. Сюда НЕ относятся Emacs, X11, Tex или любое другое большое приложение. Это пакеты образующие базовую структуру.
Стандартные (Standard) пакеты являются стандартными для любой Linux системы, включая сравнительно небольшие, но не слишком ограниченные, системы работающие только в текстовом режиме.
Это то, что будет установлено по умолчанию, если пользователь не выберет чего-либо еще. Сюда не относятся многие большие приложения, но входят такие, как Emacs и ограниченное подмножество TeX и LaTeX.
Необязательные (Optional) пакеты содержат все то, что вы, как правило, можете захотеть установить, если не вполне осознаете свои потребности.
Сюда входят X11, полный дистрибутив TeX, и множество других приложений.
Дополнительные (Extra): пакеты, которые либо конфликтуют с другими пакетами, имеющими более высокий приоритет, и применимые только тогда, когда вы знаете, что это такое, либо имеющие специализированные требования, которые делают их неподходящими для раздела «Optional».
6.8 Что такое виртуальный пакет?
Виртуальный пакет — это общее имя, применимое к любому из группы пакетов, все из которых обеспечивают выполнение какой либо функции. Например, программы tin и trn , обе являются программами для чтения новостей и должны удовлетворять зависимость программы, которая требует наличия в системе программы чтения новостей, для своей работы. Поэтому обе предоставляют «виртуальный пакет», называемый news-reader .
Аналогично, smail и sendmail обеспечивают функции почтового транспортного агента. Поэтому они предоставляют виртуальный пакет «mail transport agent». Если один из них установлен, то любая программа, зависящая от пакета mail-transport-agent , будет удовлетворена существованием данного виртуального пакета.
Кроме того, если в системе установлено более одного пакета, предоставляющего определенный виртуальный пакет, то Debian обеспечивает системного администратора механизмом, позволяющим определить один из этих пакетов предпочтительным. Для этого имеется команда update-alternatives , описанная далее в Некоторым пользователям нравится mawk, другим — gawk; некоторым — vim, другим — elvis; некоторым — trn, другим — tin; как осуществялется поддержка предпочтений в Debian?, раздел 10.10.
6.9 Что подразумевают говоря, что пакет Зависит/Рекомендует/Предполагает/Конфликтует/Заменяет/Предоставляет (Depends/Recommends/Suggests/Conflicts/Replaces/Provides) другой пакет?
В системе пакетов Debian введено понятие «зависимости» между пакетами, которое показывает насколько правильная работа Программы А зависит от существования Программы В на данной системе:
Пакет A зависит (depends) от пакета B, если B абсолютно необходим для работы A. В некоторых случаях, A не просто зависит от B, но дополнительно требует определенную версию B. В этом случае, обычно, накладывается требование, чтобы версия B была не ниже заданной.
Пакет A рекомендует (recommends) установку Пакета B, если сопровождающий пакета считает, что большинство пользователей не захотят пользоваться A не имея функциональности, предоставляемой пакетом B.
Пакет A поддерживает (suggests) Пакет B, если B содержит файлы относящиеся (и обычно расширяющие их) к функциям выполняемым пакетом A.
Пакет A конфликтует (conflicts) с Пакетом B, когда A не может работать, если установлен пакет B. Наиболее часто, конфликты возникают в случаях, когда A содержит файлы, заменяющие аналогичные, но содержащиеся в B. «Конфликты» часто сочетаются с «заменой».
Пакет A заменяет (replaces) пакет B, когда файлы установленные пакетом B удаляются и (в некоторых случаях) замещаются файлами пакета A.
Пакет A предоставляет (provides) Пакет B, когда все файлы и функциональность B обеспечиваются A.
Более подробная информация об использовании этих терминов может быть найдена в Руководстве по пакетам (Packaging manual) и в Руководстве по политике (Policy manual).
6.10 Что означает слово Pre-Depends (Пред-Зависимости)?
«Pre-Depends» это специальная форма зависимости. Большинство пакетов будут извлечены dpkg из архивных файлов независимо от того, существуют ли файлы от которых они зависят или нет. Проще говоря, dpkg извлекает файлы пакета из архива и помещает их на положенные места. Если пакет зависит от существования других пакетов, то dpkg откажется завершать установку (выполняя конфигурацию) до установки необходимых пакетов.
Однако, для некоторых пакетов, dpkg откажется даже распаковывать файлы до разрешения зависимостей. Такие пакеты указывают, что они «Pre-depend» от наличия других пакетов. Проект Debian обеспечивает механизм для безопасного обновления системы с формата a.out на формат ELF , где критичен порядок, в котором пакеты будут распакованы. Существуют и другие ситуации, когда может применяться этот метод.
Более подробная информация может быть найдена в Руководстве по пакетам.
6.11 Что означают слова неизвестно/установить/удалить/очистить/удерживать (unknown/install/remove/purge/hold) в статусе пакета?
Эти флаги определяют, что пользователь хочет сделать с пакетом (что определяется либо действиями пользователя при работе в разделе «Выбор» («Select») программы dselect , либо непосредственными обращениями пользователя к dpkg ).
неизвестно (unknown) — пользователь никогда не проявлял интереса к пакету.
установить (install) — пользователь хочет, чтобы пакет был установлен или обновлен.
удалить (remove) — пользователь хочет, чтобы пакет был удален, но не хочет удалять какие-либо из его файлов конфигурации.
очистить (purge) — пользователь хочет, чтобы пакет был удален полностью, включая его файлы конфигурации.
захватить (hold) — пользователь хочет, чтобы над пакетом не совершалось никаких действий, т.е., он хочет сохранить текущую версию пакета в том состоянии в котором она находится, какими бы они ни были.
6.12 Как я могу перевести пакет в удерживаемое (hold) состояние?
Есть два пути, которыми можно перевести пакет в удерживаемое состояние — при помощи dpkg или dselect.
С dpkg, вы просто экспортируете список выбранных пакетов:
Затем редактируете полученный файл selections.txt , заменяете строку, содержащую выбранный вами для удерживания пакет, напр. libc6 , с:
Сохраняете файл и загружаете его в базу данных dpkg:
C dselect, вы просто переходите в меню Выбор (Select), находите нужный пакет и нажимаете клавишу ‘=’ (или ‘H’). Изменения вступят в силу сразу же после вашего выхода из режима Выбор.
6.13 Как я могу установить пакет исходных текстов?
Пакеты исходных текстов Debian не могут быть «установлены», они просто распаковываются в том каталоге, в котором вы хотите собрать двоичный пакет. Исходные пакеты располагаются в каталоге source , и вы можете либо загрузить их вручную, либо воспользовавться командой:
(см. страницу руководства apt-get(8) ).
6.14 Как я могу построить двоичный пакет из исходного?
Вам необходимы foo_*.dsc, foo_*.tar.gz и foo_*.diff.gz файлы для компиляции исходного текста (для родных пакетов Debian файла .diff.gz может не быть).
Если у вас есть эти файлы и установлен пакет dpkg-dev , то следующая команда:
извлечет пакет в каталог foo-version .
Если вы хотите скомпилировать пакет, то перейдите в каталог foo-version и выполните команду
для компиляции программы, затем
как пользователь root, для сборки пакета, и затем
для установки пакета.
6.15 Как мне самому создать пакет Debian?
Детальное описание этого процесса содержится в «Руководстве начинающего разработчика Debian», доступном в пакете maint-guide-ru , или ftp://ftp.debian.org/debian/doc/package-developer/maint-guide.html.tar.gz .
Sysadminium
На этом уроке рассмотрим пакетные менеджеры apt и apt-get. Которые используются для работы с пакетами приложений в Linux.
Пакетные менеджеры apt
На этом уроке мы рассмотрим следующие пакетные менеджеры:
- apt-get — используется для установки, удаления, обновления пакетов;
- apt-cache — используется для получения информации о пакетах;
- apt-mark — используется для установок различных меток на пакеты. Например, можно, поставив метку, запретить пакету обновляться;
- apt — утилита основанная на apt-get и apt-cache. Она является более удобной и информативной. В процессе установки пакета, обновления системы или удаления пакета показывает “Прогресс бар”. В некоторых случаях выводит больше информации.
Работа с пакетами это административное действие, поэтому вам придётся работать под пользователем root или использовать sudo. Я в примерах буду использовать sudo. Примеры одинаково выполняются и в Debian и в Ubuntu.
Все рассматриваемые команды имеют под-команды, и в зависимости от под-команды могут иметь различные опции. Например переустановка приложения:
- apt — сам пакетный менеджер;
- install — под-команда установки пакета;
- –reinstall — опция переустановки;
- apache2 — имя пакета.
Обновление системы
Обновление кэша пакетов
В Debian и Ubuntu прежде чем обновлять систему, нужно выяснить, какие обновления доступны в репозиториях. Это так называемое обновление кэша пакетов. Выполняется оно с помощью команды apt-get update или apt update. Пример:
При этом команда apt update дополнительно покажет количество пакетов, которые можно обновить и команду с помощью которой можно посмотреть список таких пакетов.
Получаем список возможных обновлений
Если есть пакеты, которые можно обновить, то мы можем посмотреть их с помощью команды apt list –upgradable, а опция -a выводит больше информации. С помощью apt-get это проделать невозможно.
Обновление системы (без возможности удаления пакетов)
Перед обновлением расскажу про зависимости пакетов. Работа некоторых приложений зависит от других приложений или библиотек. Поэтому почти каждый пакет имеет список зависимостей других пакетов. Обычно вручную с зависимостями не работают. Просто пакетные менеджеры (apt или apt-get) при установке определённого пакета также устанавливают пакеты от которых зависит этот пакет.
Точно также и при обновлении. Если приложение после обновления начало зависеть от других библиотек, то их тоже нужно установить или обновить.
Но бывает ситуация когда некоторые пакеты не совместимы. Например, чтобы обновить пакет требуется установить новые пакеты, но они несовместимы с теми, которые уже установлены. Тут есть два варианта, либо удалить установленные пакеты и выполнить обновление системы, либо не удалять пакеты и прервать обновление.
Без возможности удаления пакетов вы можете выполнить обновление с помощью команд apt-get upgrade и apt upgrade. Например:
Обновление системы (с возможностью удаления пакетов)
Если вы все-таки хотите обновить пакеты и вас не пугает удаление некоторых пакетов, то выполните следующие команды: apt-get dist-upgrade или apt dist-upgrade. Но это более рискованно, так что обратите особое внимание на то, какие пакеты будут удалены. Ведь удаление некоторых пакетов может просто сломать вашу систему. Пример:
Получение информации о пакетах из репозиториев
Список пакетов в репозиториях
Чтобы получить список пакетов в репозиториях можно выполнить apt list. Так как это не административное действие, то можно не использовать sudo. Например:
Кстати, утилита apt-get это выполнить не может.
Поиск пакета по ключевому слову
Если мы примерно знаем название приложения, которое нам нужно, то можем попытаться найти пакет используя ключевое слово. При этом поиск идет не только по названию пакетов, но и по его содержимому. Такой поиск выполняется с помощью команд apt-cache search или apt search .
Пример (так как вывод может быть большим, то я использую less):
Смотрим информацию о пакете
Зная имя пакета, можем посмотреть информацию о нём с помощью команд apt-cache show или apt show .
Пример (так как вывод может быть большим, то я использую less):
Поиск зависимостей
Зависимости можно посмотреть в информации о пакете с помощью уже рассмотренных команд apt-cache show или apt show . Но для этого есть ещё одна команда: apt-cache depends или apt depends . Например:
Работа с отдельными пакетами
Установка пакета
Установить пакет из репозитория можно с помощью команд apt-get install или apt install . При этом установится пакет и его зависимости. Пример:
Удаление пакета без удаления конфигов
Чтобы удалить пакет обычно используют команды apt-get remove или apt remove . Но эти команды удалят только само приложение, не удалив его конфиги. Пример:
Удаление пакета вместе с конфигами
А чтобы удалить приложение вместе с его конфигами используйте команды apt-get purge или apt purge , например:
Переустановка пакета
Для переустановки используйте команды apt-get install –reinstall или apt install –reinstall .
Обновление отдельного приложения
Если нам нужно обновить не всю систему а отдельный пакет, то тут нужно использовать знакомую команду apt-get install или apt install . При этом, если пакета нет в системе то он установится, а если есть то обновится. Пример:
Скачивание пакета без установки
Если вам просто нужно скачать пакет, а не устанавливать его в систему, то используйте команду apt-get download или apt download . Например:
При этом зависимости скачиваться не будут.
Заморозка пакета
Если вы хотите чтобы система больше не обновляла какой-то отдельный пакет то выполните apt-mark hold , например:
К сожалению с помощью apt это проделать невозможно.
Исправление проблем с пакетами
Исправление ошибок с зависимостями
Если в процессе установки некоторого пакета или при обновлении всей системы вы столкнётесь с проблемой с зависимостями. То можете воспользоваться командами apt-get -f install или apt -f install. Эти команды пытаются решить проблемы с зависимостями путём удаления или установки новых пакетов.
Только внимательно смотрите на список удаляемых пакетов!
Очистка системы от ненужных пакетов
Удаление ненужных пакетов
Когда мы устанавливаем пакет то устанавливаются и его зависимости. А при удалении пакета зависимости остаются и больше не используются. Чтобы удалить подобные пакеты, которые установились, но больше не нужны в системе применяются команды apt-get autoremove или apt autoremove. Например:
Очистка кэша
При установке какого-нибудь пакета, он вначале скачивается в каталог /var/cache/apt/archives/, а затем устанавливается в систему. Эти установочные файлы тоже можно удалять, освобождая место на диске. Для этого используйте команды apt-get clean или apt clean, например
Мягкая очистка кэша
Помимо clean есть более мягкая команда autoclean. Она удалит только те скаченные пакеты, у которых версия ниже чем в репозитории, остальные пакеты не удалятся:
Посмотрим на корову
А еще с помощью apt-get и apt мы можем посмотреть на корову:
Мы узнали множество команд с помощью которых можем устанавливать и удалять пакеты в систему, а также обновлять её. И проделывать другие вещи.
А также мы узнали что перед установкой deb пакеты скачиваются в каталог /var/cache/apt/archives/. И у пакетов есть зависимости, которые apt или apt-get определяет и автоматически устанавливает.
Популярные пакетные менеджеры Linux

На заре разработки Linux установить приложение можно было только путем скачивания и компиляции исходников программы. Из-за использования сразу нескольких утилит и ошибок, возникавших в процессе сборки, установка одной программы отнимала много времени.
Чтобы сделать систему дружелюбней к пользователю, были разработаны пакетные менеджеры, которые полностью автоматизировали установку программ. Инсталляция приложений в них производится из пакетов – архивов с файлами скомпилированной программы. Исключение — система Gentoo, где менеджер компилирует программы по подготовленным скриптам.
Большинство популярных дистрибутивов на базе Unix/Linux уже оснащены пакетными менеджерами, способными устанавливать любое программное обеспечение. Будь то внешнее приложение или компоненты ОС. В этом заключается основное различие между пакетным менеджером и инсталлятором. Последний нужен для установки только одной специфической программы, тогда как система управления пакетами — универсальный установщик ПО.
Все пакетные менеджеры Linux имеют свой список репозиториев – серверов с базой пакетов. Во время установки алгоритм менеджера находит необходимый пакет в базе и производит автоматическое скачивание, установку и настройку.
О типах пакетных менеджеров и наиболее популярных вариантах реализации данного ПО расскажем в этой статье.
Теоретические основы
Категории пакетных менеджеров
- Высокоуровневые менеджеры. Применяются для поиска и скачивания пакетов из репозиториев. В процессе работы могут задействовать низкоуровневые менеджеры для инсталляции загруженных программ.
- Низкоуровневые менеджеры. Используются для установки локальных пакетов, загруженных вручную пользователем, или высокоуровневым пакетным менеджером.
Распространенные форматы пакетов
- DEB (.deb). Самый популярный формат пакетов дистрибутива Debian и его ближайших родственников — Ubuntu, MX Linux, Pop!_OS, elementary OS и других.
- RPM (.rpm). Разработан компанией Red Hat и внедрен в дистрибутив RHEL. Также применяется в таких системах как Fedora и CentOS.
- TAR.XZ. Стандартный тип пакетов для дистрибутива ArchLinux и его производных — Manjaro, ARCOLINUX и других.
- Ebuild (.ebuild). Скрипт bash-сценария для компиляции программ в дистрибутивах Gentoo и Calculate Linux.
Разрешение зависимостей
Для корректного функционирования пакетных менеджеров необходимо корректное отслеживание пакетных зависимостей. Зависимости – список дополнительных пакетов и библиотек, участвующие в работе программы. Во время установки приложения пакетный менеджер или компилятор считывают специальный файл со списком зависимостей, а после проверяют их наличие в системе.
Если важная зависимость будет не удовлетворена при установке программы низкоуровневым менеджером, то будет выдана ошибка с названием отсутствующего пакета. В подобной ситуации проблема решается отдельной установкой недостающего пакета.
При использовании высокоуровнего пакетного менеджера для установки программы, зависимые пакеты будут установлены в автоматическом режиме, без вмешательства пользователя.
Популярные пакетные менеджеры

DPKG (Debian Package) – система управления пакетами в Debian и дистрибутивах на его основе, например Ubuntu.
Утилита DPKG появилась в дистрибутиве Debian в 1995 году. Низкоуровневый пакетный менеджер создан только для работы с локальными DEB пакетами и не может самостоятельно разрешать зависимости, а также скачивать пакеты из репозиториев.
Особенности
- Поддерживает добавление архитектур из других дистрибутивов Linux.
- DPKG выполняет работу только с локальными пакетами.
- Под архитектуру DEB выпущено более 55000 пакетов.
Пакеты DEB – это архивы с набором установочных файлов. Для установки в систему необходимой программы из репозиториев создан высокоуровневый пакетный менеджер APT, который параллельно работает с DPKG.

APT (Advanced Packaging Tool) – консольная утилита, выполняющая роль «поисковика» и загрузчика пакетов из репозиториев. Установка скачанных пакетов производится утилитой DPKG. Благодаря эффективному разрешению зависимостей, пакетный менеджер APT используется по умолчанию в дистрибутивах с архитектурой Debian и поддерживает систему в актуальном состоянии.
Список репозиториев хранится в файле «/etc/apt/sources.list» и может быть изменён пользователем в любой момент для установки или обновления программы, не входящей в базу дистрибутива. Установка скачанных пакетов производится утилитой DPKG.
Изначально APT разрабатывался только для работы с пакетами DEB, использующихся в Debian и родственных ОС (Ubuntu, Linux Mint). Позже в него была добавлена поддержка rpm-файлов. Благодаря этому, установить софт привычным образом можно даже в дистрибутивах RED HAT и его производных (Fedora, CentOS и др.).
Оболочки APT
Для упрощения работы с APT можно использовать консольные оболочки APTITUDE или Synaptic.
APTITUDE
APTITUDE — это утилита, выполняющая роль «надстройки» для APT. Разработчики программы добавили полезные функции, оптимизирующие систему поиска пакетов, а также исправили ошибки, касающиеся разрешения зависимостей.
APTITUDE доступен в нескольких вариантах интерфейса:
- Графический интерфейс (GUI) на базе фреймворка GTK. Привычный для пользователя оконный интерфейс с возможностью управления мышью.
- Текстовый пользовательский интерфейс. Оболочка, открывающаяся в консоли. Интерфейс снабжается минимальным количеством графических элементов и может запускаться через протокол SSH. Управление осуществляется с помощью одиночных или групповых нажатий клавиш клавиатуры. Например, для переключения строк чаще всего используются клавиши со стрелками.
- Интерфейс командной строки. Подразумевает управление программой с помощью команд. Вариант позволяет полноценно пользоваться функционалом утилиты и подходит для продвинутых пользователей.
Если в дистрибутиве APTITUDE отсутствует по умолчанию, то выполнить установку можно следующими командами:
Synaptic

Synaptic — графический менеджер пакетов, работающий на основе APT. Программа пригодится новичкам, плохо знакомым с командной строкой. Несмотря на простоту интерфейса, утилита предоставляет весь необходимый функционал пакетного менеджера APT (установка, удаление, обновление и поиск пакетов).
Установить Synaptic можно следующими командами:
Открыть программу можно, найдя ярлык в меню рабочего окружения, или введя « sudo synaptic » в терминале.

RPM (Red Hat Package Manager) – формат пакетов и низкоуровневый пакетный менеджер систем RED HAT (RHEL, CentOS, Fedora и др.) Как и DPKG, способен работать только с локальными файлами.
Пакетный менеджер выпущен в 1997 году. Он работает с пакетами RPM. В отличие от DEB, пакеты RPM архивируются утилитой cpio, сжимающий пакет алгоритмом gzip.
Особенности
- Обновление программ производится в ускоренном режиме, благодаря замене только отредактированных разработчиком элементов пакета.
- Для скачивания, обновления пакетов, а также разрешения зависимостей придётся использовать пакетные менеджеры более высокого уровня (YUM, DNF).
- Начиная с 2010 года, пакеты подписываются с хешем MD5. Это исключает вероятность изменения файла RPM злоумышленником для внедрения вирусного кода.

YUM (Yellowdog Updater, Modified) – высокоуровневый пакетный менеджер, написанный на языке Python для систем RED HAT (RHEL, CentOS, Fedora). Программа представляет собой своеобразную оболочку для утилиты RPM.
В задачу YUM входит скачивание и обновление пакетов из репозиториев, а также удовлетворение зависимостей во время установки программы.
DNF (Dandified YUM) – модифицированная версия пакетного менеджера YUM на языке на Python. Разработка утилиты начата в 2011 году. В 2015 году DNF стал основным менеджером пакетов для системы Fedora 22. В DNF были исправлены такие недостатки YUM, как некорректная установка зависимостей, низкая скорость работы, большое потребление оперативной памяти.
Yum Extender
Yum Extender – лёгкая графическая оболочка для менеджеров пакетов YUM и DNF.

Yum Extender устанавливается следующей командой:
Pacman

Pacman – высокоуровневый пакетный менеджер системы Arch Linux и его родственных дистрибутивов (Manjaro, EndeavourOS и др.). Программа написана на языке C# и совмещает высокую функциональность, легкость и производительность. В качестве пакетов используются архивы pkg.tar.xz.
Особенности
- В Pacman совмещены функции работы с репозиториями и установка пакетов в систему, в отличие от систем Debian или Red Hat.
- В систему устанавливается новейшее ПО, благодаря модели обновлений «плавающий релиз» (rolling-release).
- В репозиториях Pacman располагаются заранее собранные пакеты, что значительно ускоряет процесс инсталляции программ.
- Поддержка работы с репозиторием AUR.
Компиляция программы производится только в том случае, если пакет взят из репозитория AUR (Arch User Repository). Он содержит более 54000 пакетов и активно поддерживается обычными пользователями и администраторами ArchLinux.
Перед тем, как попасть в официальный репозиторий дистрибутива, пакеты проходят тщательный отбор в репозиториях AUR. Репозиторий AUR, в отличие от официального репозитория, содержит скрипты PKGBUILD для самостоятельной сборки пакета в системе пользователя. Для компиляции используется скрипт MakePKG.
Оболочки Pacman
MakePKG
Скрипт, объединяющий работу компилятора, линкера и других вспомогательных приложений для сборки пакета из PKGBUILD. MakePKG установлен по умолчанию в системе с пакетным менеджером Pacman. Компонент входит в пакет base-devel и ABS (Система автоматической сборки пакетов).
Установка или обновление всех компонентов производиться командами:
Для установки программы и зависимостей согласно скрипту PKGBUILD, нужно перейти в каталог с файлом и выполнить команду:
Важно. Запуск скрипта с помощью MakePKG должен проводится без предоставления прав администратора. Это делается для защиты системы от выполнения вредоносных команд, находящихся в файле «pkgbuild».
Программа написана на языке GO и используется для поиска и установки пакета из репозитория AUR. Управления Yay производится посредством командной строки.
Для установки утилиты в дистрибутив с Pacman нужно задать следующие команды:
Утилита Yay упрощает весь алгоритм установки до ввода одной простой команды в консоль. Например, запрос к терминалу для инсталляции пакета из AUR строится следующим образом:
Примечание. Для установки пакетов через Yay не требуется предоставлять административный доступ утилите (добавлять «sudo» перед командой).
Pamac

Графический менеджер пакетов Pamac разработан специально для Manjaro, но может быть установлен в любой дистрибутив на основе Arch Linux. Программа сочетает лёгкость с большим функционалом. В качестве источников используются официальные репозитории дистрибутивов AUR и Snappy.
Установка программы Pamac выполняется командой:
Portage

Portage – система управления пакетами Gentoo или Calculate Linux. Установка программ для данного дистрибутива несколько отличается от остальных систем Linux. В Gentoo пакетный менеджер использует исключительно исходный код, а не готовые пакеты для установки программ.
Особенности
- Программы собираются под пользовательскую систему и железо, что обеспечивает стабильную работу ОС.
- По сравнению с распаковкой программ у других пакетных менеджеров, компиляция в Portage занимает много времени. Например, полный пакет LibreOffice компилируется от 4 часов и более.
- Пользователь может гибко настроить параметры компиляции и полностью управлять процессом сборки. Например, поставить операцию на паузу и продолжить позже.
- Для обновления установленного ПО используется система rolling-release, благодаря которой в репозитории дистрибутива поставляются пакеты последней версии, опубликованные разработчиком в течение 1-2 дней.
Установка программ из репозиториев чаще всего производится с помощью интерфейса Emerge. Для добавления дружелюбности системе, также можно использовать графическую оболочку Kuroo.
Интерфейсы Portage
Emerge
Консольный интерфейс Emerge предназначен для сборки и обновления программ и их зависимостей. Инструмент доступен «из коробки» и используется для работы с системой Portage по умолчанию.
Для компиляции программ используются ebuild-скрипты. Они содержатся в локальных репозиториях Gentoo (overlay), а сам исходный код программ скачивается с GitHub. Настроить список репозиториев можно самостоятельно, в файле «/etc/portage/repos.conf».
Kuroo
Графический интерфейс Kuroo по принципу работы почти не отличается от Emerge. Утилита написана на языке C++ с использованием фреймворка Qt.

Kuroo установлен по умолчанию в систему с рабочим окружением KDE. В случае отсутствия программы, инсталляция выполняется по данной инструкции.
Заключение
Каждый пакетный менеджер имеет собственные преимущества и недостатки, чаще всего не заметные без реального опыта использования. Выбирать систему и дистрибутив стоит, исходя из собственных потребностей и преимуществ каждого ПО.
- DPKG и RPM больше подойдут пользователям, ожидающим от системы лёгкой настройки и стабильной работы.
- Pacman оперативно обеспечивает систему новейшим ПО, благодаря системе rolling-release.
- Portage совмещает преимущества предыдущих пакетных менеджеров, но требует от пользователя внимательности и желания глубоко осваивать систему.
Чтобы даже самый требовательный дистрибутив Linux работал как швейцарские часы — выбирайте VDS от Eternalhost с оперативной техподдержкой 24/7 и бесплатной защитой от DDoS.
Управление пакетами
Мефодий нашел в Internet пакет с заинтересовавшей его программой в подходящем формате rpm и решил попробовать его установить 7 Для установки и удаления пакетов нужны права администратора – это серьезные изменения в системе. :
Однако rpm отказался выполнять установку, ссылаясь на зависимость от другого пакета . Здесь Мефодий впервые столкнулся с тем, что пакеты – не всегда (точнее, почти никогда) бывают независимы от имеющейся системы. В разделе » Архив файлов» уже говорилось о том, что для работы программы нужны различные ресурсы, причем несколько программ могут нуждаться в одном и том же ресурсе. В последнем случае общий ресурс может оказаться в отдельном собственном пакете (чтобы не включать его сразу в несколько), и этот пакет должен быть установлен в системе, чтобы заработали нуждающиеся в нем программы. Потребность пакета в ресурсах, находящихся в другом пакете , называют зависимостью этого пакета от другого. В процедуре установки rpm проверяет,все ли зависимости устанавливаемого пакета удовлетворены (т. е. все ли необходимые пакеты уже установлены в системе), и если чего-то не хватает – прекращает установку. Именно с такой ситуацией и столкнулся Мефодий.
Зависимость пакетов. Ситуация, при которой пакет не может быть установлен в систему, если в ней не установлен хотя бы один из некоторого множества пакетов. Аналогично, пакет не может быть удален из системы до тех пор, пока в ней установлен хотя бы один зависящий от него пакет .
Библиотеки
Мефодию помешала установить пакет самая типичная зависимость– на библиотеку . Библиотеки возникают оттого, что все программы, как бы они ни отличались друг от друга, нуждаются в выполнении одних и тех же операций: вводе и выводе, получении доступа к ресурсам системы (памяти, процессорному времени, файлам), вычислениях, работе с сетью, рисовании окошек, кнопок, меню и т. п. Для выполнения таких операций используются небольшие подпрограммы – функции. Любые функции, необходимые более чем одной программе, есть смысл не включать в текст каждой программы, а собирать в отдельных библиотеках. Тогда программа сможет использовать не собственную подпрограмму, а готовую функцию из библиотеки . Поскольку библиотеки нужны нескольким программам, они обычно оформляются в виде отдельного пакета . Если библиотека не будет установлена, использующая ее программа просто не будет работать.
Библиотеки подвержены тем же изменениям с течением времени, что и все прочие программы: исправлению обнаруженных ошибок, модернизации, оптимизации и пр. Поэтому версии библиотек должны быть согласованы с версией программного обеспечения. Например, программа может отказаться работать даже при наличии библиотеки , если эта библиотека слишком старая либо слишком новая по сравнению с самой программой.
Цепочки зависимостей
Понятие зависимости включает не только зависимость программы от библиотек. Вообще говоря, зависимость возникает там, где программное обеспечение использует любой не поставляемый непосредственно с ним ресурс 8 Имеет смысл исключать из понятия зависимости использование наиболее стандартных ресурсов, без которых немыслима система Linux как таковая. К таким ресурсам можно отнести системные вызовы и некоторые стандартные файлы, вроде /dev/null . . Это могут быть и утилиты, которые запускаются при работе самой программы или во включенных в пакет сценариях, программа-интерпретатор для исполнения этих сценариев и даже определенные файлы, которые должны присутствовать для правильной работы программы (например, утилита passwd предполагает, что существует файл /etc/passwd ).
Зависимость может быть и небезусловной. Например, в некоторых случаях нужно обеспечить наличие ресурса не к моменту запуска программы, а прямо к моменту установки пакета . Так, для выполнения доустановочного сценария нужна программа-интерпретатор. В некоторых случаях требуется ресурс строго определенной версии – ни больше, ни меньше. Бывают случаи, когда зависимость имеет обобщенную форму, например, почтовому клиенту (программе для чтения и написания электронной почты) может требоваться служба доставки электронной почты.В Linux такую услугу предоставляют несколько разных программ, и любая из них удовлетворит зависимость.
Разобравшись с понятием зависимости, Мефодий набрался решимости установить-таки нужный ему пакет , установив все, что он потребует. Но не тут-то было: взявшись устанавливать библиотеки, Мефодий выяснил, что каждой из них требуются какие-то еще пакеты, отсутствующие в системе, у каждого из них тоже есть зависимости и т. п. – один-единственный пакет повлек за собой снежный ком других, вытягивая их по цепочкам зависимостей.
Конфликты и альтернативы
В противоположность зависимости, когда пакет не может быть установлен при отсутствии некоторого другого, конфликт пакетов – это ситуация, когда пакет не может быть установлен при наличии некоторого другого, т. е. они несовместимы в рамках одной системы. Одна из причин возникновения конфликтов уже упоминалась выше – в пакетах есть файлы с совпадающими именами. Самый распространенный источник конфликтов – программы, которые предоставляют разные реализации одной и той же функциональности системы (например, службы доставки электронной почты или печати, программы проверки орфографии, компиляторы и т. п.). Можно было бы, конечно, просто назвать конфликтующие файлы по-разному, но и тогда путаница неизбежна: если, допустим, старый компилятор Си называется gcc2.96 , а новый – gcc3.3 , то что запускается по стандартной команде gcc ? В каждом пакете должна содержаться информация о том, с какими пакетами он конфликтует. Конфликт пакетов может быть разрешен очень просто: следует удалить один из конфликтных пакетов, после чего свободно устанавливать другой.
Каждый пакет , помимо имени, обозначен и номером версии, указывающим степень обновленности содержащегося в пакете программного обеспечения и самого пакета . В системе одновременно может быть установлена только одна версия любого пакета , со всеми остальными версиями она конфликтует. Такой подход вполне понятен, поскольку файлы в пакете имеют строго определенный путь, по которому они должны быть размещены в файловой системе. Поэтому при использовании пакетов не должно (и не может) возникнуть ситуации, когда одна и та же программа установлена в разных местах файловой системы.
Однако не все функции в системе должны эксклюзивно выполняться одной программой. Например, в системе может быть установлено сколько угодно текстовых редакторов и даже несколько разных реализаций одного редактора, например, Vi ( Vim и NVi). Пакеты Vim и NVi не конфликтуют друг с другом, но оба с равным основанием могут быть вызваны по команде vi . Чтобы определить, какой именно из них запускать как vi , во многих дистрибутивах Linux (в частности, в том, который использует Мефодий) применяется механизм альтернатив . Альтернативы – это система символьных ссылок на принадлежащие пакетам файлы. Однотипные файлы из пакетов называются по-разному, а символьная ссылка, к которой обращается пользователь, указывает на один из них. Например, файл /usr/bin/vi будет символьной ссылкой либо на /usr/bin/ vim , либо на /usr/bin/nvi (то же самое относится и к руководствам по этим редакторам). При установке и удалении любого из пакетов с одной из альтернативных программ символьная ссылка автоматически обновляется. На какую из них будет указывать ссылка, решается на основании веса каждого пакета . Вес – это условное число, выбирается та альтернатива из установленных, у которой наибольший вес. Пользователь может вмешаться в выбор альтернатив и вручную. Все необходимые утилиты для работы с альтернативами предоставляет пакет alternatives .
Популярные пакетные менеджеры Linux: характеристики, особенности, сравнение

Операционные системы на ядре Linux ранних версий распространялись в виде исходного кода. Желающий воспользоваться платформой «собирал» свою ОС на локальном компьютере или сервере с учетом «железа». То же относилось к прикладным программам. Но такой подход ограничивал развитие и популяризацию Линукса, потому что разобраться с ним получалось только при наличии опыта.
Но все изменилось с внедрением так называемых «пакетов».
Теоретические основы
Пакеты – это архивы специального формата, в них содержатся бинарные и конфигурационные файлы, информация, куда их разместить в файловой системе накопителя, и список действий, который понадобится для инсталляции. Такой подход дает возможность справиться с установкой и обновлением Linux при минимальной подготовке.
![]()
Есть и другие преимущества решения:
- Просмотр содержимого пакетов доступен при помощи программ-архиваторов.
- Разделение на отдельные блоки возможно даже в рамках одной программы.
- Открывается простор для подключения сторонних модулей, обновлений.
- Обновление можно скачать независимо от дистрибутива Linux.
Если разработчики внесли изменения в какой-либо пакет, скачать понадобится только его, а не весь продукт. При этом ничего не понадобится пересобирать или переустанавливать, достаточно просто заменить конкретный файл. Разработка свободного ПО также заметно упростилась. Отчасти новая фишка в виде «зависимостей» перешла из платформы Microsoft и подобных систем.
![]()
Идея заключается в том, что программист использует наработки других разработчиков и созданные ими библиотеки. В коде он ссылается на них и избавляется от необходимости включать в пакеты «лишние модули». Экономится трафик, место на дисках в репозиториях. Последнее особенно важно из-за резко увеличившегося объема новых разработок.
Чтобы снизить риски установки «сырого» ПО, репозитории делят на категории (на примере Debian):
- Base Repository – основное хранилище, здесь обычно «лежат» полные дистрибутивы.
- Security Updates – обновления безопасности, критически важные для работы платформы.
- Stable Updates – стабильные версии обновленных пакетов, расширяющие функционал Linux.
- Stable Backports – программы с обратной совместимостью, тестовые пакеты.
В Ubuntu категории несколько другие. Так, отдельно хранятся дистрибутивы на свободные-платные программы, поддерживаемое Canonical, и независимо от них пакеты, разрабатываемые сообществом Linux (конкретного релиза). При этом официальные релизы продолжают поставляться с набором пакетов, гарантированно работоспособным на любой машине.
Форматы пакетов в разных версиях Linux
Единственной существенной проблемой с внедрением пакетов стало появление нескольких форматов (фактически каждый вариант Linux работает со своим стандартом). Ранее все использовали файлы с расширением .TGZ или TAR.GZ, теперь же они остались только в наиболее старых версиях вроде Slackware.
![]()
Наиболее популярные форматы пакетов:
- DEB – платформа Debian и его ближайших родственников: Ubuntu, MX Linux, Pop!OS, Elementary OS и других.
- RPM – разработан компанией Red Hat и внедрен в дистрибутив RHEL, также используется в системах Fedora и CentOS.
- TAR.XZ – стандартный формат для дистрибутива Arch Linux и его производных: Anarchy Linux, Artix Linux, Chakra, Manjaro и пр.
Несколько смягчает ситуацию схожесть структуры пакетов разных разработчиков. Поэтому понять, как работать с «другой системой», достаточно легко. Главное, оснастить рабочее место программами для установки, обновления, настройки. Такие функции выполняет менеджер (диспетчер) пакетов – с графическим интерфейсом или только с поддержкой командной строки.
Что такое зависимости пакетов и зачем они нужны
Теперь подробнее о зависимостях. Да, принцип действия внешне схож с теми же библиотеками DLL в Windows, но есть и кардинальные отличия. Например, ссылки обычно делаются только на файлы, интегрированные в полный дистрибутив Linux. Не придется устанавливать пакеты .NET с их «дырками», возникшими при неудачном обновлении.
![]()
Если файлы, указанные в зависимостях, отсутствуют, система автоматически скачает их из того же репозитория. Они также поставляются в виде пакета, который инсталлируется независимо от других программ или их частей. Опытному администратору легко «облегчить» дистрибутив и сэкономить место на диске за счет отказа от установки ненужных модулей.
Менеджеры пакетов – виды, назначение
Пакетные менеджеры нужны, в первую очередь, чтобы упростить использование чужого кода. Без них пользователю остается лишь скачивать файлы «по умолчанию» и ограничиваться стандартным функционалом. Зато при наличии программы-диспетчера легко заменить отдельные модули новыми, пусть даже ради эксперимента. Столь же просто вернуть все обратно, если обнаружились ошибки.
![]()
Менеджер автоматически «распутывает» систему зависимостей, подтягивает файлы, которых еще нет на диске. Это удобно, если обновленный (самописный) пакет разработан другим программистом, и его структура не полностью соответствует оригиналу. Некоторые кодеры стремятся продвигать «свои разработки», но такой подход не создает неудобств именно благодаря автоматизации.
Инструмент DPKG предназначен для операционной системы Debian. Он включает огромный перечень программ для установки, удаления и хранения пакетов формата .DEB. Процесс проходит на низком уровне вплоть до ручного разрешения зависимостей. Это важно при инсталляции свободного ПО с нестандартным набором функций.
![]()
В перечень дополнительных утилит входит:
- APT (Advanced Packaging Tool) – работает в командной строке, расширяет совместимость «базового» инструмента на производные вроде Ubuntu, Linux Mint. Иногда его ставят даже на дистрибутивы, основанные на Mandrake (Mandriva, ALT Linux, PCLinuxOS).
- Advanced Packaging Tool – аналог APT для Debian, но с графической оболочкой Aptitude, хотя поддерживается и работа в консоли. Инструмент встречается в дистрибутивах от компании Red Hat.
- Synaptic – графическая оболочка GUI для управления пакетами в системе Debian или APT-RPM, используемых в дистрибутивах Conectiva Linux. Если операционная система оснащена оконным менеджером GNOME, утилита устанавливается вместе с ним.
- GNOME Software – утилита, поставляемая в комплекте графического интерфейса GNOME с версии 3.10. Поддерживает пакеты формата DEB и RPM, плюс обслуживание системной прошивки.
Еще в репозиториях регулярно запрашивается программа AppGrid. Она позиционируется в качестве конкурента стандартному центру приложений Ubuntu. Она быстрее, проще в работе, хотя и имеет «более простой» интерфейс. На другие производные Debian или оригинальную систему поставить этот инструмент не удастся, есть ограничения и по версиям Ubuntu (релизы от 12.04 до 13.10).
Базовый формат и одновременно пакетный менеджер, созданный компанией Red Hat. Аббревиатура RPM так и расшифровывается – Red Hat Package Manager. Как и DPKG, инструмент имеет несколько утилит для управления пакетами. «Основная» – YUM (Yellowdog Updater, Modified) – дает доступ к общему функционалу через командную строку.
![]()
Программа поставляется «по умолчанию» с дистрибутивами Red Hat. В сравнении с APT работает чуть медленнее, зато обладает всем необходимым функционалом. В системах на ядре Fedora с 22-го релиза «стандартом» интегрируется улучшенная версия утилиты под названием DNF. Она стала быстрее, в том числе за счет уменьшенного потребления оперативной памяти.
PACMAN
В операционных системах Arch Linux и ее производных вроде Manjaro устанавливается программное обеспечение Pacman. Функционал включает необходимые возможности – установку и обновление ранее инсталлированных приложений, автоматическое разрешение зависимостей, удаление пакетов и их загрузку для дальнейшей установки.
![]()
Списки установленных пакетов автоматически сравниваются с основным сервером. Такой подход позволяет всегда иметь на компьютере текущую версию Linux. При желании архивы с расширением файлов TAR.XZ легко просмотреть обычным архиватором. Внутри находятся файлы программы и описание установки PKGBUILD.
ZYPPER
В системах OpenSuse и SUSE Linux используется менеджер командной строки Zypper. Он создан специально под эти платформы и базируется на библиотеке libzypp. Набор функций – установка пакетов с предварительным скачиванием, просмотр содержимого репозитория, автоматическое разрешение зависимости. Все, что нужно для успешного управления программами.
![]()
Поддерживается обновление пакетов с полной заменой файла или в режиме установки патчей. При выборе второго варианта инсталлируется только выбранный блок. Режим актуален для «заплаток» на функции безопасности, когда основной функционал программы остается прежним, зато любые критические ошибки исправляются «под ноль».
PORTAGE
В дистрибутиве Linux под названием Gentoo, несмотря на небольшую распространенность, также имеется собственный инструмент для управления пакетами. Называется такая программа – Portage. Она позволяет собирать комплект из исходников прямо во время установки приложений. В набор функций входит возможность настроить флаги компиляции, собрать пакет под процессор и т.д.
![]()
Есть и необходимый перечень базовых возможностей вроде установки, обновления и деинсталляции выбранного ПО. Интересна особенность, позволяющая интегрировать в операционную систему сразу несколько версий одной программы или библиотеки. Список пакетов хранится в виде дерева, участки которого меняются пользователем.
Выводы
Менеджеры пакетов, в зависимости от релиза Linux, могут обладать уникальными возможностями, как в случае Gentoo. Но основной их задачей остается управление базовыми функциями – установкой, обновлением, удалением пакетов. Поэтому различия в перечне настроек касаются больше любителей поэкспериментировать.
Беда Linux: зависимости
По мнению Ли Шлесингера (Lee Schlesinger), зависимости являются настоящим бичом современного Linux и замедляют рост его популярности. Они превращают установку новой программы в непростую задачу, тогда как в Windows все решается «за один клик». Ли Шлесингера предлагает способы борьбы с этой проблемой.
Re: Беда Linux: зависимости
>Ли Шлесингера предлагает способы борьбы с этой проблемой.
Задолго до него это сделал Патрик Волькердинг, создав Slackware ;)))
Re: Беда Linux: зависимости
тогда как в Windows все решается «за один клик»
Re: Re: Беда Linux: зависимости
Был когда-то в старых версиях Выни. Сейчас такого нет
Re: Беда Linux: зависимости
Re: Беда Linux: зависимости
apt-get install и никаких проблем
Re: Беда Linux: зависимости
Да в Линуксе не только установка программ делается через жопу, там все остально делается на уровне ремонта самолета.
Re: Беда Linux: зависимости
>>»за один клик»
Нуууу не всегда. Иногда доходит до клика молотком или головой.
Re: Беда Linux: зависимости
только потом выкликивать затрхаешся
Re: Беда Linux: зависимости
Без зависимостей невозможна реализация юниксового модульного подхода. А в не к ночи упомянутой винде каждая кривая приблуда таскает с собой все связанное с ней дерьмо, за исключением системных библиотек (glibc).
Re: Беда Linux: зависимости
Упоминание о Slackware Linux здесь не уместно, ибо отсутствие поддержки зависимостей в менеджере пакетов проблему зависимостей не решает. Зато это небольшой и простой дистрибутив в котором пакеты не разбиваются на множество «подпакетов» (в отличие от Mandrake Linux и Debian GNU/Linux). Однако введение поддержки зависимостей не помешала бы, как и расширения гаммы пакетов. PS. Сам я являюсь пользователем и Slackware, и Mandrake, и Debian (Knoppix).
Re: Re: Беда Linux: зависимости
Т.е. забить на зависимости конечно же можно, как сделал вышеупомянутый Патрик, вот только получится помойка, которую мы и можем видеть в лице слаки.
Re: Беда Linux: зависимости
>Был когда-то в старых версиях Выни. Сейчас такого нет
Что значит нет? Чтобы выяснить под rpm-based дистрибутивом, какой пакет принес мне файл или либу на которые я смотрю, я делаю rpm -qf «имя файла». А как Вы это делаете под виндой? Реально, когда приходится работать под виндой мне не хватает именно пакэдж менеджера, остальные неудобства еще можно было бы терпеть. Опять же, под линуксом невозможно случайно снести пакет, который используется другими пакетами. А как под виндой выяснить, какие проги испотзуют данный файл? Так что через #опу это как раз в винде, где нет не то что apt’a, а даже аналога rpm/dpkg.
Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
Просто под виндой такой необходимости не возникает
Re: Re: Re: Беда Linux: зависимости
Уважемый, а Вы вообще пользовались ли когда нибудь «слакой»? Я думаю, что в помойку можно превратить любую систему: от Slackware до RedHat с Debianom и *BSD.
Re: Re: Re: Re: Беда Linux: зависимости
> Уважемый, а Вы вообще пользовались ли когда нибудь «слакой»?
Пользовался. Больше нет такого желания.
> Я думаю, что в помойку можно превратить любую систему: от Slackware до RedHat с Debianom и *BSD.
Разумеется. Но проблема в том, что слаку не превратить в помойку практически нельзя.
Re: Re: Re: Re: Беда Linux: зависимости
Re: Re: Re: Re: Re: Беда Linux: зависимости
Не пойму с чего Вы взяли, что «слака» — это обязательно помойка.
Re: Re: Беда Linux: зависимости
> Опять же, под линуксом невозможно случайно снести пакет, который используется другими пакетами.
В слаке возможно все. 
Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
Давно вы вычищали систему у кого-нибудь из знакомых? Мне вот периодически приходится. Так вот без rpm/dpkg очень, очень и очень плохо. Это и отсутствие нормального shell (хотя тут есть cygwin) самые главные неудобства Windows.
Так, ради примера — используем Debian Unstable (хочется имет всё время новые программы), каждый день устанавливается/обновляется штук 5 минимум. Система жива и живёт достаточно долго — с июня. Можно ли так с Windows? НЕТ! Т.к. главная заповедь нормальной эксплуатации Win — поставить всё что нужно или может понадобиться и не менять больше ничего никогда. Только в этом случае она живёт годами. А debian — и в моём режиме не портится. Разница есть?
Re: Re: Re: Беда Linux: зависимости
Снести пакет можно в любой системе (rpm —force на RedHat-основанных). При это ни кто не гарантирует, что зависимости настроены достаточно правильно, чтобы «случайно» не получилось. Ну а в общем вся дискуссия свелась к «обкакиванию» «слаки» и иже с ними.
Re: Re: Re: Re: Re: Беда Linux: зависимости
4anonymous (*) (22.10.2003 13:00:16)
>> Уважемый, а Вы вообще пользовались ли когда нибудь «слакой»?
> Пользовался. Больше нет такого желания.
Это хорошо. Зачем оно тебе? Зачем нам, такие, как ты?
>> Я думаю, что в помойку можно превратить любую систему: от Slackware до RedHat с Debian`ом и *BSD.
> Разумеется. Но проблема в том, что слаку не превратить в помойку практически нельзя.
Ты знаешь, такие, как ты, всегда, из качественно продукта, в результате плохого пищеварения и, как результат — абсолютного неусвоения, способны сделать только <. >, причем плохого качества (по состоянию кишечной флоры).
Я, конечно, понимаю, что давит так, что крышу сносит.
Но, будь же культурным человеком, делай это в другом месте, не на виду же у всех. Даже твое физиологическое состояние не оправдывает твой словесный понос.
Re: Re: Re: Re: Беда Linux: зависимости
Так ведь тема-то совершенно пустая. Достаточно очевидно, что человек не прав. И всё тут.
Re: Re: Re: Re: Re: Беда Linux: зависимости
да, видать плохи дела microsoft.
Re: Re: Re: Re: Re: Беда Linux: зависимости
>>Так ведь тема-то совершенно пустая. Достаточно очевидно, что человек
>>не прав. И всё тут.
Ну это понятно.
Давайте еще разберемся с группой слака всегда прав.
Re: Re: Беда Linux: зависимости
alt-x (*) (22.10.2003 12:43:09) А зачем выяснять какая прога использует этот файл?
Когда программу деинсталлируешь — все что нужно подчищается автоматом. Если программа не требует инсталяции — то ее просто вытираешь вместе с директорией и все — никакого хлама! :)))
Re: Re: Re: Re: Re: Re: Беда Linux: зависимости
anonymous (*) (22.10.2003 13:45:59) Чем плохи?
Re: Re: Re: Re: Re: Re: Беда Linux: зависимости
Я никак не могу понять, что движет ананимусами, обсирающими слаку здесь в каждом топике. Казалось бы, не нравится — не пользуй, и все тут.
А что касается зависимостей в слаке — состав и размер пакетов в дистрибутиве позволяют без проблем зависимости учитывать, при наличии минимального понимания какой пакет что делает. К тому же в последних версиях очень удобно собраны все пакеты библиотек в группе l.
Лично мне значительно проще разобраться где что лежит в /cdrom/slakware/, чем в /RedHat/RPMS или запустив гуевый rpm-tool, не помню как его правильно называть.
Re: Re: Re: Беда Linux: зависимости
> Когда программу деинсталлируешь — все что нужно подчищается автоматом.
Загляни в *:Program Files, вспомни, какие программы у тебя стояли, а какие ты уже удалил. ты будешь весьма удивлен.
Аналогично, относительно c:win*system32*.* (dll,vxd. )
Re: Re: Re: Беда Linux: зависимости
> Когда программу деинсталлируешь — все что нужно подчищается автоматом.
Ты в этом уверен? Наивный win-user. 
А в реестр заглядывать на пробовал?
Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
> . Можно ли так с Windows? НЕТ!
Можно. 2000 prof живет с октября 2001 года — тогда дали новую машинку. Периодически сносятся и ставятся программы. Системе хоть бы хны.
Про дебиан. Возникли проблемы с инсталляцией gnome 2.4. Я его поставил, конечно, с указанием опций в apt-get install. Только почему-то при этом был снесен начисто кде. Наверное, я забыл прочитать пять томов манов на тему apt. rpm несколько проще
Re: Re: Re: Re: Re: Re: Re: Беда Linux: зависимости
Что не могут уже и статью нормальную заказать, чтоб не так сразу ясно было что полная лажа.
Re: Re: Re: Re: Беда Linux: зависимости
>>> Когда программу деинсталлируешь — все что нужно подчищается автоматом.
>> Ты в этом уверен? Наивный win-user.
> А в реестр заглядывать на пробовал?
Лучше в реестр его не посылать, а то еще удалит чего-нибудь ненароком. а оно не восстанавливается, ведь.
Re: Re: Re: Re: Re: Беда Linux: зависимости
> а оно не восстанавливается, ведь.
тогда пускай и в штаны не заглядывает, мало ли что
Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
>>Наверное, я забыл прочитать пять томов манов на тему apt. rpm
Ну в реестре то Win все интуитивно понятно. Взял да потер немного. Все работает ?
Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
> Про дебиан. Возникли проблемы с инсталляцией gnome 2.4. Я его поставил, конечно, с указанием опций в apt-get install. Только почему-то при этом был снесен начисто кде. Наверное, я забыл прочитать пять томов манов на тему apt. rpm несколько проще
Перед указанием опций рекомендуется ознакомиться с тем, что они делают.
Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
> Перед указанием опций рекомендуется ознакомиться с тем, что они делают.
Это у микрософта во всех инсталляторах «рекомандуется».
А в дебиане где? чтобы найти что рекомендуется, нужно петь томов манов скурить, а потом еще и пол-Linux-HOWTO
Re: Re: Re: Re: Re: Беда Linux: зависимости
>>Когда программу деинсталлируешь — все что нужно подчищается автоматом
Простой тест.
Ставишь демонстрашку любой программы.
Когда срок кончается сносишь.
Устанавливаешь заново и пользуйся на здровье.
Все просто.
Ато Linux Linux.
Re: Беда Linux: зависимости
emerge xxx ивсе дела 
Re: Беда Linux: зависимости
Кстати по поводу что в Винде все просто. А пробовали установить прогу не в дефолтную папку? Сравнивали размер диска до инсталяции и после сноса? Заглядывали в regedit после сноса? (Хотя конечно половина — вина криворуких програмеров) Если там каждий день обновления ставить то через пол-года можно диск форматировать заново.
Так что что угодно только не MS-OS
Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
Периодически — это 3 штуки в день? Я именно об этом писал. И потом, не наблюдается ли у вас некоего роста каталога c:winntsystem32? 
Насчёт apt-get install — если работать с unstable то это действительно может возникнуть, но ведь програмка-то apt-get пишет, что собирается то-то удалить. Такие вещи возникают из-за того, что unstable постоянно модифицируется и иногда возникают конфликты зависимостей, которые обычно разрешаются на следующий день. Т.о. — либо нужно было подождать завтра, либо пользоваться не unstable, а stable.
Честно говоря, хотелось бы узнать ещё и комбинацию опций, которая применялась. Хотя и так ясно, что лучше не писать -y.
В следующий раз пожалуйста читайте, что пишет программа apt-get (она пишет немного до загрузки пакетов) и не используйте ключ -y для нестабильных репозитариев.
Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
man apt-get — 9 страниц, если торопитесь можно ограничиться 2-мя верхними
Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
>Про дебиан. Возникли проблемы с инсталляцией gnome 2.4. Я его поставил, конечно, с указанием опций в apt-get install. Только почему-то при этом был снесен начисто кде. Наверное, я забыл прочитать пять томов манов на тему apt
Наверное, ты KDE по-пьяни снёс, а на apt валишь.

Re: Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
По поводу виндовозов — опять накипело.
Делал прогу — а-ля шабашка. Для админов компового
клуба. На самом деле — обвязка скриптов на Qt.
Так вот, они говорили, что интерейс непонятный и
не могли драг-ндропом машины таскать из неактивной
области в активную. Знаете как всё решилось? Установкой
виндовых цветов и стиля! И всё! Теперь, бл»#* всё понятно.
По поводу дебиана. Срабатывают виндовозные обезьяньи инстинкты:
давить next -> говорить Yes, Yes, Yes I understand it can be bad 
Я на полном серьёзе — знакомый bash так снёс — не поленился такое
вот написать — и потом ругался на дебиан, который сломал его
систему )
Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
> Про дебиан. Возникли проблемы с инсталляцией gnome 2.4.
в дебиане сейчас нет gnome 2.4 даже в unstable. есть только gnome 2.2. если ты ставил пакеты из какого-то «левого» репозитария, то должен знать, что делаешь. дебиан рулит. =)
Re: Re: Re: Re: Re: Увеличить скорость путем пересбора всего из сырцов? Не в этой жизни!
На самом деле инсталляция гнома требовала указать для apt-get версию через опцию -t (по-моему, что-то вроде 2.4) . Я и указал. Иначе он просто ставиться не хотел — полиси так и говорило, что ставить не буду. По какой причине — хез, лень было курить тома (в линуксе же все просто, само работает). После указания этой опции gnome поставился, но при этом был удален кде. Базовые либы остались, достаточные для работы кде-шных программ. Но сама оболочка, включая kdm была просто снесена.
Мне вообщем все равно, так как мне понадобился оракле клиент, а ставить его на линукс путем скачивания 3-х дисков сервера было влом.
Что такое зависимости в линукс

Установка ПО (или пакетов) в дистрибутивах Linux происходит «централизованно», что удобно, но часто вызывает вопросы у новичков. И так, максимально доходчиво я постараюсь объяснить, почему всё не так как в Windows и зачем знать базовые команды консольного менеджера пакетов, если в любом современном дистрибутиве есть графический интерфейс.
Если вы интересуетесь темой Linux, то знаете о существовании множества дистрибутивов и о том, что нередко они несовместимы между собой. Точнее, готовые пакеты одного дистрибутива несовместимы с другими дистрибутивами, особенно если это не производные друг от друг дистрибутивы. Поэтому у каждого дистрибутива есть свои репозитории готовых пакетов, собранных исключительно под конкретный дистрибутив. Из этих репозиториев пакетный менеджер и берёт пакеты. Но это не единственная и далеко не основная причина того, что пакеты для Linux систем распространяются таким образом.
При установке той или иной программы через пакетный менеджер видно, что вместе с пакетом самой программы, в систему устанавливается ещё куча всяких пакетов. Чем сложнее программа и чем «чище» ваша система, тем больше пакетов устанавливается в качестве «зависимостей». Зависимости – это системные библиотеки, а иногда и другие программы, необходимые для работы устанавливаемой программы. Каждый пакет в репозитории содержит файл-манифест, в котором указаны все зависимости. В Windows также, некоторые упакованные программы требуют наличия определённых компонентов в системе. Например, для игр необходимо наличие библиотек DirectX в каталоге «system32» и так далее. Это те же зависимости. Установщик программы видит их наличие и сообщит вам о их отсутствии, если не найдёт соответствующую запись в реестре. На самом деле, в Windows программы часто просто не запускаются или вылетают с ошибкой, но причина именно в отсутствии того или иного компонента. В Linux же пакет просто не будет установлен, если нет возможности соблюсти все зависимости. Разбором зависимостей и занимается пакетный менеджер. В идеале в репозиториях дистрибутива есть всё необходимое для соблюдения всех зависимостей всех пакетов. В этом заключается опасность использования сторонних репозиториев. Если информация о зависимостях в них устарела, или содержит ошибки, то использование пакетов из таких репозиториев может вызвать проблемы той или иной сложности. Имена пакетов, системных библиотек и их версии в разных дистрибутивах отличаются. Поэтому невозможно без плясок с бубном взять пакет из Ubuntu и установить его в OpenSUSE. Теоретически это можно сделать, пересобрав пакет и установив нужные зависимости, но такой пакет не будет обновляться, даже если не вызовет других проблем. Всегда нужно устанавливать пакеты именно для вашего дистрибутива и к другим способам прибегать только в случае крайней необходимости. Если ваш дистрибутив не содержит всего того, что вам нужно, то это серьёзный повод для смены дистрибутива.
Существует несколько пакетных менеджеров со своими плюсами и минусами, а также сам подход к зависимостям у большинства дистрибутив отличается. Кроме пакетов с ПО, существуют так называемые «мета-пакеты», которые содержат только инструкции по зависимостям. Мета-пакеты используются для установки комплексных решений в один клик. Например, мета-пакеты рабочих столов, когда установкой одного мета-пакета можно установить окружение рабочего стола и кучу прикладного ПО. Та же ситуация и с удалением. Рано или поздно вы захотите удалить неиспользуемое ПО, входящее в состав дистрибутива. И, в зависимости от дистрибутива, можете обнаружить, что удаление почтовой программы удаляет также мета-пакет рабочего стола, что помечает половину пакетов в вашей системе как «ненужные». Пакеты, установленные как зависимости, могут быть безболезненно удалены как в процессе удаления основного пакета, так и после. Беда в том, что мета-пакет рабочего стола был указан как жёсткая зависимость почтовой программы. Имеется в виду, что без рабочего стола она работать не будет. Но не учитывается, что рабочий стол без почтовой программы может работать без каких-либо проблем. В итоге, после невнимательного удаления чего-либо действительно ненужного, можно обнаружить, что система стала легче гигабайт на 5, но при этом загружается в чёрный экран и командную строку. Такой подход к зависимостям свойственен, например, Ubuntu, тогда как пакетный менеджер в Arch Linux помечает подобные зависимости как «необязательные», что избавляет пользователя от проблем, приведённых в пример выше, но требует от него определённых знаний. То есть, если утрировать, то рабочий стол без почтовой программы работает, но кому-то может понадобиться её функционал. Таким образом, пользователь должен знать какие необязательные зависимости ему нужны, а какие нет. Большинство же дистрибутивов решают это за пользователя, имея в зависимостях того или иного пакета максимальный набор компонентов «на все случаи жизни». Другими словами, чем меньше знаний требуется для использования дистрибутива, тем больше в нём «мусора». И чем больше опыта у пользователя, тем сложнее его «настольный» дистрибутив. По той же причине в мире существует огромное количество различных дистрибутивов, ориентированных на различную аудиторию. Но не всегда широта возможностей прямо пропорциональна сложности.
Исторически так сложилось, что большая часть пакетов в Linux зависит от наличия системных библиотек. По аналогии с директорией «system32» в Windows, в Linux есть директория «lib». Такой подход экономит место, когда одна и та же системная библиотека используется множеством программ, но он же делает пакеты одного дистрибутива непригодным для установки в другой. Кроме имён системных библиотек отличаются так же их версии, в зависимости от дистрибутива. Во многих пакетах в качестве зависимостей указаны не только сами библиотеки, но и их версии. По той же причине многие дистрибутивы не обновляют версии ПО в пределах жизненного цикла версии дистрибутива. Например, в Debian вы будете получать обновления безопасности, но версии практически всего ПО останутся неизменными. Таким образом ряд дистрибутивов поддерживает стабильность. Тот же подход можно видеть в корпоративных версиях Windows, когда весь функционал заморожен в пределах одной версии, и обновления содержат только исправления и патчи безопасности. Но в Windows это касается только компонентов ОС, тогда как всё остальное устанавливается и обновляется отдельно. В Linux же всё прикладное ПО распространяется централизованно, как и компоненты ОС. Теоретически новая версия определённой программы будет работать с текущей версией определённой системной библиотеки, так же, как и текущая версия программы с более новой библиотекой, но это не тестировалось на пререлизных стадиях дистрибутива. Всегда есть шанс, что что-то пойдёт не так. Поэтому в ряде дистрибутивов есть стадия так называемой «заморозки», когда перед релизом все версии ПО замораживаются и остаются неизменными на протяжении всего жизненного цикла версии дистрибутива. Такой подход даёт свои результаты. Если не использовать сомнительные сторонние репозитории в Debian, то она гораздо стабильнее даже корпоративных версий Windows. Некоторые дистрибутивы могут сочетать в себе стабильность и инновации. То есть, они устанавливают рань между новизной ПО и его стабильностью на более приемлемой для широкого круга пользователей позиции. Роллинг-дистрибутивы так же могут быть стабильными, если разработчики и тестировщики приложили к этому достаточно усилий.
Понятно, что «пакетно-зависимый» подход не всегда оправдывает себя. Попытки унификации пакетов ПО для Linux были всегда. Две самые удачные и современные системы – это Snap от Canonical и Flatpak, которая разрабатывается сообществом. Обе системы не идеальны, но позволяют решить две самые основные задачи: унификация и интеграция. В отличии от более ранних реализаций, установленное таким образом ПО смотрится нативно и интегрировано в систему (ОС знает, что оно установлено, присутствуют все привычные меню, ярлыки и прочее). Основным плюсом является то, что подобный пакет содержит все необходимые зависимости и работает на любом дистрибутиве, способом работать с этой системой пакетов. Разработчикам не нужно разбирать зависимости каждого дистрибутива при создании пакета. Нужно лишь учитывать специфику самой системы Snap или Flatpak. А то, как система в целом работает в дистрибутиве – это дело разработчиков дистрибутива. Как уже было сказано, Snap и Flatpak не идеальны. По ряду причин ПО не всегда выглядит нативно и не всегда учитывается всё возможное. Это зависит как от самих этих систем, так и от интеграции системы на стороне дистрибутива. Но обе системы развиваются и, на мой взгляд, это шаг в правильном направлении, хотя обе системы часто критикуются. В основном критика относится к проприетарной природе серверной части Snap и тому факту, что в Ubuntu, при установке ПО через графический интерфейс, приоритет отдаётся пакетам Snap. Так же критикуется «Windows-подход» при распространении ПО подобным способом. Последнее относится, в основном, к размеру и нагрузке. Размер этих пакетов значительно выше традиционных пакетов, так как каждый пакет содержит все необходимые зависимости локально, и их наличие или отсутствие в системе во внимание не берётся. Но при объёмах современных носителей информации лишний десяток гигабайт менее важен, чем унификация пакетов в Linux.
Для управления пакетами Snap и Flatpak используются их собственные пакетные менеджеры, но многие «традиционные» пакетные менеджеры имеют плагины для работы с этими пакетами.
И так, если с зависимостями и различиями в дистрибутивах всё более или менее ясно, то при чём тут командная строка? Дело всё в той же централизованной системе. При обновлении пакетов, в системе часто обновляются и компоненты рабочего стола, и сам пакетный менеджер. Чем меньше компонентов задействовано в процессе обновления, тем меньше шансов на то, что что-то пойдёт не так. Графический интерфейс для всех пакетных менеджеров – это всего лишь «надстройка». Если установка и удаление пакетов обычно проходит гладко, то при использовании консоли у вас больше возможностей решить ту, или иную проблему, возникшую во время обновления. Особенно это актуально в роллинг-дистрибутивах, где со временем обновляется не только само ПО, но и список его зависимостей. Графический интерфейс может повиснуть при обновлении его компонентов, консоль же менее зависит от окружения рабочего стола, даже если является его частью. Не важно как вы обновляете Snap-пакеты или Flatpak-пакеты, так как они не затрагивают систему, но в остальных случаях обновляться через консоль безопаснее.
В Сети часто можно найти инструкции по сборке того или иного из исходного кода и последующей установке (команда make install), но это плохая идея в пакетных дистрибутивах, где пакетный менеджер – основной и часто единственный инструмент контроля и управления программным обеспечением. Даже в Gentoo, где всё собирается из исходников, есть свои инструменты контроля. В пакетных же дистрибутивах правильным будет собрать пакет и установить его с помощью пакетного менеджера. Исключение можно сделать для чего-то локального, установленного в один отдельный каталог с правами пользователя. Ручное «размазывание» библиотек по системным разделам – плохая идея, так как рано или поздно возникнут проблемы.
И так, резюмируя всё вышесказанное… Пакетные менеджеры в Linux существуют не только для удобства. Они ведут учёт ПО и обеспечивают правильность его установки, от чего зависит стабильность работы как самого ПО, так и операционной системы в целом. Установка ПО другими способами возможна, но с рядом оговорок. На самом деле, подобный подход кажется странным только тем, кто много лет просидел на Windows. В Windows так же есть эксперименты с пакетными менеджерами, но проприетарная модель как самой ОС, так и большей части программ под неё, не позволяет добиться той же слаженности, что мы видим в операционных системах на ядре Linux.






