Менеджер пакетов или система управления пакетами представляет собой набор программных средств, который автоматизирует процесс установки, обновления, настройки и удаления компьютерных программ для компьютера «s операционной системы последовательным образом.
Ранние менеджеры пакетов, такие как pms 1994 года, не имели автоматического разрешения зависимостей, но уже могли значительно упростить процесс добавления и удаления программного обеспечения из работающей системы. Примерно к 1998 году, начиная с APT, менеджеры пакетов начали выполнять работу по загрузке пакетов из репозитория, автоматически разрешая его зависимости и устанавливая их по мере необходимости, что значительно упростило установку, удаление и обновление программного обеспечения из системы.
Менеджер пакетов работает с пакетами, дистрибутивами программного обеспечения и данными в архивных файлах. Пакеты содержат метаданные, такие как название программного обеспечения, описание его назначения, номер версии, поставщика, контрольную сумму (предпочтительно криптографическую хеш-функцию ) и список зависимостей, необходимых для правильной работы программного обеспечения. После установки метаданные сохраняются в локальной базе данных пакетов. Менеджеры пакетов обычно поддерживают базу данных о зависимостях программного обеспечения и информации о версиях, чтобы предотвратить несоответствие программного обеспечения и отсутствие необходимых условий. Они тесно сотрудничают с репозиториями программного обеспечения, менеджерами двоичных репозиториев и магазинами приложений.
Диспетчеры пакетов разработаны, чтобы исключить необходимость установки и обновления вручную. Это может быть особенно полезно для крупных предприятий, операционные системы которых обычно состоят из сотен или даже десятков тысяч отдельных программных пакетов.
Пакет программного обеспечения - это архивный файл, содержащий компьютерную программу, а также необходимые метаданные для ее развертывания. Компьютерная программа может быть в исходном коде, который необходимо сначала скомпилировать и собрать. Метаданные пакета включают описание пакета, версию пакета и зависимости (другие пакеты, которые необходимо установить заранее).
На менеджеров пакетов возложена задача поиска, установки, обслуживания или удаления пакетов программного обеспечения по команде пользователя. Типичные функции системы управления пакетами включают:
Компьютерные системы, которые полагаются на динамическое связывание библиотек вместо связывания статических библиотек, совместно используют исполняемые библиотеки машинных инструкций между пакетами и приложениями. В этих системах сложные отношения между различными пакетами, требующими разных версий библиотек, приводят к проблеме, в просторечии известной как « ад зависимостей ». В системах Microsoft Windows это также называется « адом DLL » при работе с динамически подключаемыми библиотеками. В этих системах жизненно важно хорошее управление пакетами. Система Framework от OPENSTEP была попыткой решить эту проблему, позволяя устанавливать несколько версий библиотек одновременно, а для пакетов программного обеспечения указывать, с какой версией они связаны.
Системные администраторы могут устанавливать и поддерживать программное обеспечение, используя инструменты, отличные от программного обеспечения для управления пакетами. Например, локальный администратор может загрузить распакованный исходный код, скомпилировать его и установить. Это может привести состояние локальной системы выпасть из синхронизации с состоянием менеджера пакетов в базе данных. От локального администратора потребуется принять дополнительные меры, например, вручную управлять некоторыми зависимостями или интегрировать изменения в диспетчер пакетов.
Существуют инструменты, обеспечивающие интеграцию локально скомпилированных пакетов с системой управления пакетами. Для дистрибутивов, основанных на файлах.deb и .rpm, а также на Slackware Linux, существует CheckInstall, а для систем на основе рецептов, таких как Gentoo Linux, и гибридных систем, таких как Arch Linux, можно сначала написать рецепт, который затем гарантирует что пакет помещается в локальную базу данных пакетов.
В частности, при обновлении программного обеспечения возникают проблемы с обновлением файлов конфигурации. Поскольку менеджеры пакетов, по крайней мере в системах Unix, возникли как расширения утилит архивирования файлов, они обычно могут либо перезаписывать, либо сохранять файлы конфигурации, а не применять к ним правила. Есть исключения из этого, которые обычно применяются к конфигурации ядра (которая, если она сломана, сделает компьютер непригодным для использования после перезагрузки). Проблемы могут быть вызваны изменением формата файлов конфигурации; например, если старый файл конфигурации не отключает явно новые параметры, которые должны быть отключены. Некоторые менеджеры пакетов, такие как Debian «s DPKG, позволяют конфигурации во время установки. В других ситуациях желательно установить пакеты с конфигурацией по умолчанию, а затем перезаписать эту конфигурацию, например, при автономной установке на большое количество компьютеров. Этот тип предварительно настроенной установки также поддерживается dpkg.
Чтобы предоставить пользователям больший контроль над видами программного обеспечения, которые они разрешают устанавливать в своей системе (а иногда и по юридическим причинам или по соображениям удобства со стороны дистрибьюторов), программное обеспечение часто загружается из ряда репозиториев программного обеспечения.
Когда пользователь взаимодействует с программным обеспечением для управления пакетами, чтобы выполнить обновление, обычно представляет пользователю список действий, которые необходимо выполнить (обычно это список пакетов, подлежащих обновлению, и, возможно, с указанием старых и новых номеров версий)., и позволить пользователю либо принять обновление сразу, либо выбрать отдельные пакеты для обновлений. Многие менеджеры пакетов можно настроить так, чтобы они никогда не обновляли определенные пакеты или обновляли их только тогда, когда в предыдущей версии обнаруживаются критические уязвимости или нестабильности, как определено упаковщиком программного обеспечения. Этот процесс иногда называют закреплением версий.
Например:
Некоторые из более продвинутых функций управления пакетами предлагают «каскадное удаление пакетов», при котором все пакеты, зависящие от целевого пакета, и все пакеты, от которых зависит только целевой пакет, также удаляются.
Хотя команды специфичны для каждого конкретного менеджера пакетов, они в значительной степени переводимы, поскольку большинство менеджеров пакетов предлагают аналогичные функции.
Действие | зиппер | Пакман | подходящий | dnf ( ням ) | перевозка | Nix | Домашнее пиво |
---|---|---|---|---|---|---|---|
установить пакет | zypper in PKG | pacman -S PACKAGE | apt install PACKAGE | dnf install PACKAGE | emerge PACKAGE | nix-env -i PACKAGE | brew install PACKAGE |
удалить пакет | zypper rm -RU PKG | pacman -R PACKAGE | apt remove PACKAGE | dnf remove --nodeps PACKAGE | emerge -C PACKAGE или emerge --unmerge PACKAGE | nix-env -e PACKAGE | brew uninstall PACKAGE |
удалить пакет + сироты | zypper rm -u --force-resolution PKG | pacman -Rs PACKAGE | apt autoremove PACKAGE | dnf remove PACKAGE | emerge -c PACKAGE или emerge --depclean PACKAGE | nix-env -e PACKAGE amp;amp; nix-env -u | brew uninstall PACKAGE amp;amp; brew autoremove |
обновить базу данных программного обеспечения | zypper ref | pacman -Sy | apt update | dnf check-update | emerge --sync | nix-channel --upgrade | brew update |
показать обновляемые пакеты | zypper lu | pacman -Qu | apt list --upgradable | dnf check-update | emerge -avtuDN --with-bdeps=y @world или emerge --update --pretend @world | nix-channel --upgrade amp;amp; nix-env -u amp;amp; nix-collect-garbage | brew outdated |
удалить сирот + конфиг | zypper rm -u | pacman -Rsn $(pacman -Qdtq) | apt autoremove | dnf erase PKG | emerge --depclean | nix-collect-garbage -d | brew unlink PACKAGE amp;amp; brew clean |
показать сирот | zypper pa --orphaned --unneeded | pacman -Qdt | package-cleanup --quiet --leaves --exclude-bin | emerge -caD или emerge --depclean --pretend | |||
обновить все | zypper up | pacman -Syu | apt upgrade | dnf update | emerge --update --deep --with-bdeps=y @world | nix-env -u amp;amp; nix-collect-garbage | brew upgrade |
В Arch Linux вики предлагает Pacman / Rosetta обширный обзор.
Менеджеры пакетов, такие как dpkg, существовали еще в 1994 году.
Дистрибутивы Linux, ориентированные на двоичные пакеты, в значительной степени полагаются на системы управления пакетами как на основное средство управления и поддержки программного обеспечения. Мобильные операционные системы, такие как Android (на базе Linux), iOS (на основе Unix ) и Windows Phone, полагаются почти исключительно на магазины приложений своих поставщиков и, таким образом, используют свои собственные специализированные системы управления пакетами.
Synaptic, графический интерфейс для многих менеджеров пакетов Linux
pacman
, утилита CLI для дистрибутивов на основе Arch
Octopi, графический интерфейс Qt для диспетчера пакетов Pacman
Pamac, графический интерфейс GTK + для менеджера пакетов Pacman
Apper, графический интерфейс Qt для PackageKit
Программное обеспечение GNOME, графический интерфейс GTK + для PackageKit
winget
, утилита командной строки Windows Package Manager для Windows 10
Менеджер пакетов часто называют «менеджером установки», что может привести к путанице между менеджерами пакетов и установщиками. Отличия включают:
Эта коробка:Критерий | Менеджер пакетов | Установщик |
---|---|---|
Поставляется с | Обычно операционная система | Каждая компьютерная программа |
Расположение информации об установке | Единая центральная база данных установки | Это полностью на усмотрение установщика. Это может быть файл в папке приложения или среди файлов и папок операционной системы. В лучшем случае они могут зарегистрироваться в списке деинсталляторов, не раскрывая информацию об установке. |
Объем обслуживания | Потенциально все пакеты в системе | Только товар, с которым он был в комплекте |
Разработано | Один поставщик диспетчера пакетов | Несколько поставщиков установщиков |
Формат упаковки | Горстка известных форматов | Может быть столько форматов, сколько приложений |
Совместимость формата пакета | Может использоваться, пока это поддерживается менеджером пакетов. Либо новые версии диспетчера пакетов продолжают поддерживать его, либо пользователь не обновляет диспетчер пакетов. | Программа установки всегда совместима со своим форматом архива, если он его использует. Однако установщики, как и все компьютерные программы, могут быть подвержены гниению программного обеспечения. |
Большинство систем управления конфигурацией программного обеспечения рассматривают создание программного обеспечения и развертывание программного обеспечения как отдельные независимые шаги. Автоматизации сборки утилита обычно занимает удобочитаемый исходный код файлы уже на компьютере, и позволяет автоматизировать процесс их преобразований в двоичный исполняемый файл на одном компьютере. Позже менеджер пакетов, обычно работающий на каком-то другом компьютере, загружает эти предварительно созданные двоичные исполняемые пакеты через Интернет и устанавливает их.
Однако у обоих инструментов много общего:
make install
.Некоторые инструменты, такие как Maak и AAP, предназначены для управления как сборкой, так и развертыванием, и могут использоваться либо как утилита автоматизации сборки, либо как менеджер пакетов, либо и то, и другое.
Также известный как менеджер двоичного репозитория, это программный инструмент, предназначенный для оптимизации загрузки и хранения двоичных файлов, артефактов и пакетов, используемых и создаваемых в процессе разработки программного обеспечения. Эти менеджеры пакетов стремятся стандартизировать способ, которым предприятия обращаются со всеми типами пакетов. Они дают пользователям возможность применять показатели безопасности и соответствия для всех типов артефактов. Универсальные менеджеры пакетов считаются центральным элементом цепочки инструментов DevOps.
Каждый менеджер пакетов полагается на формат и метаданные пакетов, которыми он может управлять. То есть менеджерам пакетов необходимо объединить группы файлов для конкретного менеджера пакетов вместе с соответствующими метаданными, такими как зависимости. Часто основной набор утилит управляет базовой установкой из этих пакетов, и несколько менеджеров пакетов используют эти утилиты для обеспечения дополнительных функций.
Например, yum использует rpm как бэкэнд. Yum расширяет функциональность серверной части, добавляя такие функции, как простая конфигурация для обслуживания сети систем. В качестве другого примера Synaptic Package Manager предоставляет графический пользовательский интерфейс с помощью библиотеки Advanced Packaging Tool (apt), которая, в свою очередь, полагается на dpkg для выполнения основных функций.
Иностранец это программа, которая преобразует между различными форматами пакетов Linux, поддерживает преобразование между Linux Standard Base (LSB), совместимые .rpm пакеты, .deb, Stampede (.slp), Solaris (.pkg) и Slackware ( .tgz, .txz,. tbz,.tlz) пакеты.
В мобильных операционных систем, Google Play потребляет Android пакет приложений (APK) формат пакета, а Windows Store использует APPX и XAP форматы. (И в Google Play, и в Windows Store есть одноименные менеджеры пакетов.)
По природе бесплатного программного обеспечения с открытым исходным кодом, пакеты под аналогичными и совместимыми лицензиями доступны для использования в ряде операционных систем. Эти пакеты можно объединять и распространять с помощью конфигурируемых и внутренних сложных систем упаковки для обработки множества изменений программного обеспечения и управления зависимостями и конфликтами, зависящими от версии. Некоторые системы упаковки бесплатного программного обеспечения с открытым исходным кодом также сами выпускаются как бесплатное программное обеспечение с открытым исходным кодом. Одно из типичных различий между управлением пакетами в проприетарных операционных системах, таких как Mac OS X и Windows, и в бесплатном программном обеспечении с открытым исходным кодом, таком как Linux, заключается в том, что бесплатные программные системы с открытым исходным кодом позволяют также устанавливать сторонние пакеты и обновляется с помощью того же механизма, тогда как менеджеры пакетов Mac OS X и Windows будут обновлять только программное обеспечение, предоставленное Apple и Microsoft, соответственно (за исключением некоторых сторонних драйверов в Windows). Возможность непрерывного обновления стороннего программного обеспечения обычно добавляется путем добавления URL-адреса соответствующего репозитория в файл конфигурации управления пакетами.
Помимо менеджеров приложений системного уровня, есть несколько дополнительных менеджеров пакетов для операционных систем с ограниченными возможностями и для языков программирования, для которых разработчикам нужны новейшие библиотеки.
В отличие от менеджеров пакетов системного уровня, менеджеры пакетов прикладного уровня сосредотачиваются на небольшой части системы программного обеспечения. Обычно они находятся в дереве каталогов, которое не поддерживается менеджером пакетов системного уровня, например c: \ cygwin или / opt / sw. Однако это может быть не так для менеджеров пакетов, которые имеют дело с библиотеками программирования, что может привести к конфликту, поскольку оба менеджера пакетов могут заявить, что они «владеют» файлом, и могут нарушить обновления.
Ян Мердок прокомментировал, что управление пакетами - это «самое крупное достижение, которое Linux принес в отрасль», что оно стирает границы между операционной системой и приложениями и что «упрощает внедрение новых [...] инноваций в систему». маркетплейс и [...] развивать ОС ».
Также существует конференция для разработчиков менеджеров пакетов, известная как PackagingCon. Он был основан в 2021 году с целью понять различные подходы к управлению пакетами.