» »

В каком менеджере пакетов лучше с зависимостями. Что такое пакетные менеджеры и зачем их использовать. Другие менеджеры пакетов

16.04.2020

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

Распространяется ОС в соответствии с принятыми правилами свободного ПО. Различные версии для сервера и для десктопа. Ubuntu обладает эмулятором Windows-приложений, который позволяет не только инсталлировать новые приложения, но производить миграцию настроек из действующей системы. Таким образом, все избранные страницы любимых браузеров, обои рабочего стола, контакты и др. могут без потерь перейти в Ubuntu. Есть утилиты, которые помогут в установке проприетарных кодеков мультимедиа файлов, отыщут и поставят новые драйвера к железу. Каждый релиз Ubuntu поддерживается обновлениями безопасности в течение 18 месяцев. Ubuntu поставляется с самой свежей версией GNOME и с такой подборкой программного обеспечения для серверов и рабочих станций, которая позволяет создать удобное рабочее окружение c помощью всего лишь одного установочного CD. На диске также находится Live-CD и версии некоторых программ под Windows (Mozilla Firefox, Mozilla Thunderbird, Gaim, OpenOffice.org и GIMP), чтобы пользователи перед установкой могли ознакомиться с системой. Диски Ubuntu не только бесплатны, но и могут быть бесплатно доставлены.

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

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

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

Пакеты могут быть сгруппированы по функциональности (текстовые редакторы, документация, почтовые клиенты и т.д.). Для этого используется кнопка «Разделы». После нажатия на нее вы сможете выбирать пакеты из различных секций.

Интерфейс Synaptic немного напоминает Центр приложений: слева находится колонка с категориями пакетов, под ней - переключатель способа сортировки по категориям, а справа находится собственно список пакетов и под ним описание текущего выбранного пакета:


Также на верхней панели есть строка поиска, а кроме неё кнопки, позволяющие совершать некоторые операции.

При нажатии на кнопку «Обновить» будет произведено обновление индексов всех репозиториев (подробней про это я расскажу чуть позже в статье про репозитории), при нажатии на кнопку «Отметить для обновления» собственно будут отмечены для обновления все пакеты, для которых доступны новые версии (об этом тоже чуть позже), ну а кнопка «Применить» нужна для применения всех внесённых изменений.

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

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

операционный программный пакет linux


В отличие от Центра приложений внесённые через Synaptic изменения вступают в силу только после нажатия на кнопку «Применить» на панели инструментов.

Тут можно было бы провести теоретический экскурс в дебри пакетной системы Ubuntu на тему возможных состояний пакетов, но я пожалуй скажу лишь, что удалить пакет можно одним из двух способов: либо просто удалить файлы пакета, либо удалить их вместе со всеми пользовательскими настройками, относящимися к удаляемому пакету. Отличаются эти способы вот чем: многие программы создают в домашних папках пользователей файлы со своими настройками, так вот, при простом удалении эти программы удалятся без пользовательских настроек, а при полном - с ними 3) .

Synaptic, как и остальные инструменты управления пакетами, автоматически следит за разрешением всех зависимостей и ликвидацией различных конфликтов. Мало того, при совершении любых действий Synaptic выдаст вам окно с подробным описанием вносимых изменений.

В качестве примера я попробую удалить один ненужный мне пакет, pptp-linux. Сначала мне нужно его найти, для этого я просто введу его имя в строку быстрого поиска, убедившись, что у меня выбран пункт «Все» в списке категорий:

Мне, пожалуй не хочется, чтоб от пакета оставались какие-нибудь следы, поэтому я выберу полное удаление:

От этого пакета зависят два других, поэтому Synaptic мне выдаёт предупреждение, что удалить их можно только вместе:

Что ж, эта парочка мне тоже не нужна, поэтому не вижу причин не соглашаться. Обратите внимание, как изменилась иконка рядом с именем пакета. И вы ведь ещё помните, что все изменения вступают в силу только после нажатия кнопки «Применить» на главной панели программы?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Иногда может возникнуть вопрос: чьих этот файл, откуда вообще взялась эта библиотека ? Удобный менеджер пакетов решает очень многие проблемы ОС. Можно с уверенностью сказать, что если вы подружитесь с МП, то подружитесь и с дистрибутивом как таковым. Причем важно освоить именно набор основных команд, и знать где найти дополнительную информацию.


Далее следует джентльменский набор необходимых для повседневной рутины команд основных Linux дистрибутивов: установить, обновить и удалить пакет, накатить обновления, проверить зависимости, установить принадлежность файла пакету и пр.

Debian и родственные

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


То, что в примерах aptitude не значит, что он правильнее, чем apt-get . Для меня это всего лишь дело привычки.


$ aptitude install package #установить пакет; $ aptitude safe-upgrade package #обновить пакет; $ aptitude update #проверить и установить обновления; $ aptitude remove package #удалить пакет; $ aptitude purge package #удалить пакета с концами, все данные и настройки; $ apt-get dist-upgrade #обновить ОС, killer-feature и оно работает! $ aptitude search package #искать пакет. $ apt-cache depends package #зависимости пакета; $ apt-cache rdepends package #обратные зависимости от пакета.

Некоторые функции доступны с дополнительным МП dpkg .


$ dpkg -l #список установленных программ; $ dpkg -L package #список файлов пакета

Иногда может возникнуть вопрос: чьих этот файл, откуда вообще взялась эта библиотека ? Удобный менеджер пакетов решает очень многие проблемы ОС. Можно с уверенностью сказать, что если вы подружитесь с МП, то подружитесь и с дистрибутивом как таковым. Причем важно освоить именно набор основных команд, и знать где найти дополнительную информацию.


Далее следует джентльменский набор необходимых для повседневной рутины команд основных Linux дистрибутивов: установить, обновить и удалить пакет, накатить обновления, проверить зависимости, установить принадлежность файла пакету и пр.

Debian и родственные

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


То, что в примерах aptitude не значит, что он правильнее, чем apt-get . Для меня это всего лишь дело привычки.


$ aptitude install package #установить пакет; $ aptitude safe-upgrade package #обновить пакет; $ aptitude update #проверить и установить обновления; $ aptitude remove package #удалить пакет; $ aptitude purge package #удалить пакета с концами, все данные и настройки; $ apt-get dist-upgrade #обновить ОС, killer-feature и оно работает! $ aptitude search package #искать пакет. $ apt-cache depends package #зависимости пакета; $ apt-cache rdepends package #обратные зависимости от пакета.

Некоторые функции доступны с дополнительным МП dpkg .


$ dpkg -l #список установленных программ; $ dpkg -L package #список файлов пакета

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

Менеджеры пакетов на базе Debian

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

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

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

Именно здесь вступают в действие интерфейсы, такие как apt и aptitude. APT, сокращенный для Advanced Package Tool, намного более совершенен по функциональности по сравнению с dpkg. Он также может устанавливать, удалять и создавать пакеты, однако его функциональность идет гораздо дальше. APT может автоматически обновлять ваши пакеты, устанавливать зависимости, а также автоматически загружать ваши пакеты из Интернета. Это один из самых распространенных менеджеров пакетов, установленных на современных дистрибутивах, с предустановленным на Ubuntu, Debian и большинством других операционных систем на базе Debian.

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

Aptitude очень похожа на APT, предлагая большую часть той же функциональности. Но он может предложить несколько дополнительных функций, таких как безопасные обновления, позволяющие пользователям обновлять свои пакеты, не удаляя их существующие пакеты из системы. Также доступен пакет, который предотвращает автоматическое обновление определенных пакетов.

Оба этих менеджера пакетов фактически используют dpkg для основных операций и используют только свое собственное программное обеспечение для загрузки и управления пакетами.

Менеджеры пакетов RedHat Enterprise Linux (RHEL)

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

RedHat и CentOS - одна из наиболее широко используемых серверных операционных систем, найденных сегодня на серверах. Основным программным обеспечением управления пакетами, установленным в этих системах, является RPM, что сокращает работу Red Hat Package Manager. Этот менеджер пакетов также выполняет основные операции, такие как установка и удаление пакетов, и, как и dpkg, также не может управлять пакетами или устанавливать их непосредственно из Интернета.

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

Как и операционные системы на базе Debian, операционные системы RHEL также имеют собственное программное обеспечение для управления пакетами. YUM, сокращение от Yellow Dog Updater, является самым популярным выбором в качестве интерфейса RPM. Он открывает намного больше возможностей для файлов RPM через репозитории, отслеживает, что установлено в системе, упрощает обновление и многое другое. Это эквивалент менеджера пакетов APT на основе RHEL.

DNF, сокращенный для Dandified Packaging Tool, является более модернизированной и расширенной версией менеджера YUM, включающей функции YUM, одновременно повышая производительность и использование ресурсов. На данный момент только Fedora использует эту версию YUM следующего поколения, но, надеюсь, мы увидим, что в будущем она будет распространяться на большее количество операционных систем.

Есть несколько других инструментов управления пакетами, доступных для систем на основе RPM, таких как up2date, urpmi и ZYpp. Однако они не так широко используются как YUM или DNF.

Другие менеджеры пакетов

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

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

Конструктор пакетов ABS

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

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

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

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

PS. Если вам понравился этот пост при сравнении разных менеджеров пакетов Linux, поделитесь им со своими друзьями в социальных сетях, используя кнопки слева, или просто оставьте ответ ниже. Благодарю.

Обновление (апрель 09, 2018): Исправлены некоторые неточности в отношении набора инструментов компоновщика пакетов ABS.