Менеджеры пакетов в системах linux

Менеджеры пакетов в системах linuxВ двух словах, управление пакетами это установка и поддержка (обновление или удаление при необходимости), программного обеспечения операционной системы.

На ранних стадиях развития операционных систем 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 пакеты, однако он не может автоматически загружать и устанавливать необходимые зависимости для конкретного пакета.

Часто используемые команды dpkg

Apt-get - высокоуровневый пакетный менеджер в Debian linux и производных дистрибутивах. Apt-get представляет из себя простой способ получения и установки необходимых пакетов из различных источников, с разрешением зависимостей, через командную строку. В отличии от dpkg, apt-get не работает напрямую с .deb файлами пакетов, только пакетом по его имени.

Часто используемые команды apt-get и apt-cache

Aptitude, это еще один высокоуровневый инструмент управления пакетами в debian-подобных операционных системах и может быть использован для управления пакетами (установка, обновление и удаление пакетов с автоматическим разрешениме зависимостей), быстрым и простым способом. Он обеспечивает те же функциональные возможности что и apt-get, плюс некоторые расширенные, такие как доступ к нескольким версиям пакета.

Rpm - система управления пакетами, используемая Linux Standard Base (LSB) - совместимыми дистрибутивами для низкоуровневой обработки пакетов. Как и dpkg, он может запрашивать, устанавливать, проверять, обновлять и удалять пакеты, чаще используется в дистрибутивах на базе Fedora, таких как RHEL и CentOS.

Часто используемые команды rpm

Yum - высокоуровневый инструмент для работы с пакетами (установка, удаление, обновление), с управлением зависимостями в системах на основе RPM пакетов. Yum как apt-get и aptitude, работает с репозитариями

Часто используемые команды yum

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

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

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

# dpkg -i file.deb 		[Debian and derivative]
# rpm -i file.rpm 		[CentOS / openSUSE]

Не пытайтесь устанавливать в CentOS, rpm пакет, скомпилированный для OpenSUSE, и наоборот.

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

Обновить пакет ПО не доступный из репозитариев, возможно только вручную.

# dpkg -i file.deb 		[Debian and derivative]
# rpm -U file.rpm 		[CentOS / openSUSE]

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

Если в ваше распоряжение попала уже работающая система, будет не лишним узнать, что на ней установлено:

# dpkg -l 		[Debian and derivative]
# rpm -qa 		[CentOS / openSUSE]

Если вам нужно узнать, установлен-ли какой-то конкретный пакет, можно воспользоваться командой 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 		[Debian and derivative]
# rpm -q package_name 			[CentOS / openSUSE]

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   [Debian-like]
# zypper refresh && zypper search package_name	    [OpenSUSE]
# yum search package_name						    [CentOS]

если 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 		[Debian-like]
# zypper refresh && zypper install package_name 		[openSUSE]
# yum update && yum install package_name 				[CentOS]

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

Удачи.

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
               .oooooo..o    oooooooo  ooo        ooooo  ooooo      ooo  ooooooooooooo 
d8P' `Y8 dP""""""" `88. .888' `888b. `8' 8' 888 `8
oooo ooo Y88bo. d88888b. 888b d'888 8 `88b. 8 888
`88. .8' `"Y8888o. `Y88b 8 Y88. .P 888 8 `88b. 8 888
`88..8' `"Y88b ]88 8 `888' 888 8 `88b.8 888
`888' oo .d8P o. .88P 8 Y 888 8 `888 888
`8' 8""88888P' `8bd88P' o8o o888o o8o `8 o888o


Введите код, изображенный в стиле ASCII-арт.