Менеджер пакетов или система управления пакетами — это набор программных средств, которые последовательно автоматизируют процесс установки, обновления, настройки и удаления компьютерных программ для компьютера . [1]
Менеджер пакетов имеет дело с пакетами , дистрибутивами программного обеспечения и данными в архивных файлах . Пакеты содержат метаданные , такие как название программного обеспечения, описание его назначения, номер версии, производителя, контрольную сумму (предпочтительно криптографическую хэш-функцию ) и список зависимостей , необходимых для правильной работы программного обеспечения. После установки метаданные сохраняются в локальной базе данных пакетов. Менеджеры пакетов обычно поддерживают базу данных зависимостей программного обеспечения и информацию о версии, чтобы предотвратить несоответствие программного обеспечения и отсутствие необходимых компонентов. Они тесно сотрудничают с репозиториями программного обеспечения , менеджерами бинарных репозиториев имагазины приложений .
Менеджеры пакетов предназначены для устранения необходимости ручной установки и обновления. Это может быть особенно полезно для крупных предприятий, операционные системы которых обычно состоят из сотен или даже десятков тысяч различных программных пакетов. [2]
Ранние менеджеры пакетов, выпущенные примерно в 1994 году, не имели автоматического разрешения зависимостей [3] , но уже могли значительно упростить процесс добавления и удаления программного обеспечения из работающей системы. [4]
Примерно к 1995 году, начиная с CPAN , менеджеры пакетов начали выполнять работу по загрузке пакетов из репозитория, автоматически разрешая его зависимости и устанавливая их по мере необходимости, что значительно упростило установку, удаление и обновление программного обеспечения из системы. [5]
Программный пакет представляет собой архивный файл, содержащий компьютерную программу, а также необходимые метаданные для ее развертывания. Компьютерная программа может быть в исходном коде , который должен быть скомпилирован и собран в первую очередь. [6] Метаданные пакета включают описание пакета, версию пакета и зависимости (другие пакеты, которые необходимо установить заранее).
Менеджеры пакетов отвечают за поиск, установку, поддержку или удаление пакетов программного обеспечения по команде пользователя. Типичные функции системы управления пакетами включают в себя:
Компьютерные системы, которые полагаются на динамическое связывание библиотек, а не на статическое связывание библиотек, совместно используют исполняемые библиотеки машинных инструкций для пакетов и приложений. В этих системах сложные отношения между различными пакетами, требующими разных версий библиотек, приводят к проблеме, в просторечии известной как « ад зависимостей ». В системах Microsoft Windows это также называется « ад DLL » при работе с динамически подключаемыми библиотеками. Хорошее управление пакетами жизненно важно для этих систем. [7] Система Framework от OPENSTEPбыла попыткой решить эту проблему, разрешив одновременную установку нескольких версий библиотек, а для пакетов программного обеспечения указать, с какой версией они связаны.
Системные администраторы могут устанавливать и поддерживать программное обеспечение с помощью инструментов, отличных от программного обеспечения для управления пакетами. Например, локальный администратор может скачать неупакованный исходный код, скомпилировать его и установить. Это может привести к рассинхронизации состояния локальной системы с состоянием базы данных менеджера пакетов . Локальный администратор должен будет принять дополнительные меры, например вручную управлять некоторыми зависимостями или интегрировать изменения в диспетчер пакетов.
Доступны инструменты для обеспечения интеграции локально скомпилированных пакетов с системой управления пакетами. Для дистрибутивов, основанных на файлах .deb и .rpm , а также Slackware Linux, есть CheckInstall , а для систем на основе рецептов, таких как Gentoo Linux и гибридных систем, таких как Arch Linux , можно сначала написать рецепт, который затем гарантирует что пакет помещается в локальную базу данных пакетов. [ нужна ссылка ]
Особенно проблематичными при обновлении программного обеспечения являются обновления файлов конфигурации. Поскольку менеджеры пакетов, по крайней мере в системах Unix, возникли как расширения утилит архивации файлов , они обычно могут либо перезаписывать, либо сохранять файлы конфигурации, а не применять к ним правила. Есть исключения из этого, которые обычно относятся к конфигурации ядра (в случае поломки компьютер станет непригодным для использования после перезагрузки). Проблемы могут быть вызваны изменением формата конфигурационных файлов; например, если старый файл конфигурации явно не отключает новые параметры, которые следует отключить. Некоторые менеджеры пакетов, такие как dpkg Debian, разрешить настройку во время установки. В других ситуациях желательно установить пакеты с конфигурацией по умолчанию, а затем перезаписать эту конфигурацию, например, при безголовой установке на большое количество компьютеров. Этот тип предварительно сконфигурированной установки также поддерживается dpkg.
Чтобы предоставить пользователям больший контроль над видами программного обеспечения, которые они разрешают устанавливать в своей системе (а иногда и по юридическим причинам или по соображениям удобства со стороны дистрибьюторов), программное обеспечение часто загружается из ряда репозиториев программного обеспечения . [8]
Когда пользователь взаимодействует с программным обеспечением для управления пакетами, чтобы выполнить обновление, обычно пользователю предоставляется список действий, которые необходимо выполнить (обычно список пакетов, которые необходимо обновить, и, возможно, указание старых и новых номеров версий) , и разрешить пользователю принять пакетное обновление или выбрать отдельные пакеты для обновления. Многие менеджеры пакетов можно настроить так, чтобы они никогда не обновляли определенные пакеты или обновляли их только при обнаружении критических уязвимостей или нестабильности в предыдущей версии, как это определено упаковщиком программного обеспечения. Этот процесс иногда называют закреплением версии .
Например:
Некоторые из более продвинутых функций управления пакетами предлагают «каскадное удаление пакетов» [10] , при котором также удаляются все пакеты, зависящие от целевого пакета, и все пакеты, от которых зависит только целевой пакет.
Хотя команды специфичны для каждого конкретного менеджера пакетов, они в значительной степени переводимы, поскольку большинство менеджеров пакетов предлагают аналогичные функции.
Действие | молния [13] | пакман | подходящий | днф ( ням ) | перевозка | Никс | Домашний |
---|---|---|---|---|---|---|---|
Установить пакет | zypper in ${PKG} | pacman -S ${PKG} | apt install ${PKG} | dnf install ${PKG} | emerge ${PKG} | nix-env -i ${PKG} | brew install ${PKG} |
Удалить пакет | zypper rm -RU ${PKG} | pacman -R ${PKG} | apt remove ${PKG} | dnf remove --nodeps ${PKG} | emerge -C ${PKG} илиemerge --unmerge ${PKG} | nix-env -e ${PKG} | brew rm ${PKG} ( rm сокращение от remove или uninstall ) |
Удалить пакет (и сирот) | zypper rm -u --force-resolution ${PKG} | pacman -Rs ${PKG} | apt autoremove ${PKG} | dnf remove ${PKG} | emerge -c ${PKG} илиemerge --depclean ${PKG} | nix-env -e ${PKG} && nix-env -u | варить rm ${ PKG } && \варить автоудаление |
Обновление базы данных программного обеспечения | 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 -u --pretend @world ( -D является сокращением для --deep и -u является сокращением для --update .) | nix-канал --upgrade && \
nix-env -u && \Никс-собирать-мусор | brew outdated |
Удалить сирот и конфиг | zypper rm -u | pacman -Rsn $(pacman -Qdtq) | apt autoremove | dnf erase ${PKG} | emerge --depclean | nix-collect-garbage -d | brew unlink ${PKG} && brew clean |
Показать сирот | zypper pa --orphaned --unneeded | pacman -Qdt | package-cleanup -q --leaves --exclude-bin ( -q сокращение от --quiet .) | emerge -caD илиemerge --depclean --pretend | |||
Обновить все | zypper up | pacman -Syu | apt upgrade | dnf update | emerge -u -D --with-bdeps=y @world | nix-env -u && nix-collect-garbage | brew upgrade |
Вики Arch Linux Pacman/Rosetta предлагает обширный обзор. [14]
Менеджеры пакетов, такие как dpkg , существовали еще в 1994 году. [15]
Дистрибутивы Linux, ориентированные на двоичные пакеты, в значительной степени полагаются на системы управления пакетами как на основное средство управления и обслуживания программного обеспечения. Мобильные операционные системы, такие как Android (на основе Linux), iOS ( на основе Unix ) и Windows Phone , полагаются почти исключительно на магазины приложений своих поставщиков и, таким образом, используют свои собственные специализированные системы управления пакетами.
apt-get
, утилита CLI , устанавливающая MediaWiki
Aptitude также имеет TUI
Synaptic — графический интерфейс для многих менеджеров пакетов Linux.
pacman
, утилита CLI для дистрибутивов на основе Arch
Octopi, графический интерфейс Qt для менеджера пакетов Pacman
Pamac, графический интерфейс GTK+ для менеджера пакетов Pacman
Apper , графический интерфейс Qt для PackageKit
Программное обеспечение GNOME , графический интерфейс GTK для PackageKit и Flatpak
winget
, утилита командной строки диспетчера пакетов Windows для Windows 10 .
Менеджер пакетов часто называют «менеджером установки», что может привести к путанице между менеджерами пакетов и установщиками . Различия включают в себя:
Критерий | Менеджер пакетов | Установщик |
---|---|---|
Поставляется с | Обычно операционная система | Каждая компьютерная программа |
Расположение информации об установке | Единая центральная база данных установки | Это полностью на усмотрение установщика. Это может быть файл в папке приложения или среди файлов и папок операционной системы. В лучшем случае они могут зарегистрироваться в списке деинсталляторов, не раскрывая информацию об установке. |
Объем обслуживания | Потенциально все пакеты в системе | Только продукт, с которым он был связан |
Разработано | Один поставщик менеджера пакетов | Несколько поставщиков установщиков |
Формат пакета | Несколько известных форматов | Форматов может быть столько, сколько приложений |
Совместимость форматов пакетов | Может использоваться до тех пор, пока это поддерживает менеджер пакетов. Либо более новые версии менеджера пакетов продолжают его поддерживать, либо пользователь не обновляет менеджер пакетов. | Установщик всегда совместим со своим форматом архива , если он его использует. Однако установщики, как и все компьютерные программы, могут быть подвержены гниению программного обеспечения . |
Большинство систем управления конфигурацией программного обеспечения рассматривают создание программного обеспечения и развертывание программного обеспечения как отдельные независимые шаги. Утилита автоматизации сборки обычно берет удобочитаемые файлы исходного кода , уже находящиеся на компьютере, и автоматизирует процесс их преобразования в двоичный исполняемый пакет на том же или удаленном компьютере. Позже менеджер пакетов, обычно работающий на каком-то другом компьютере, загружает эти предварительно созданные двоичные исполняемые пакеты через Интернет и устанавливает их.
Тем не менее, оба вида инструментов имеют много общего:
make install
.Некоторые инструменты, такие как Maak и AAP , предназначены как для сборки, так и для развертывания, и могут использоваться либо как утилита автоматизации сборки, либо как менеджер пакетов, либо и то, и другое. [16]
Также известный как менеджер двоичных репозиториев , это программный инструмент, предназначенный для оптимизации загрузки и хранения двоичных файлов, артефактов и пакетов, используемых и создаваемых в процессе разработки программного обеспечения . [17] Эти менеджеры пакетов стремятся стандартизировать способ, которым предприятия обрабатывают все типы пакетов. Они дают пользователям возможность применять метрики безопасности и соответствия для всех типов артефактов. Универсальные менеджеры пакетов считаются центральным элементом цепочки инструментов DevOps . [18]
Каждый менеджер пакетов полагается на формат и метаданные пакетов, которыми он может управлять. То есть менеджерам пакетов нужны группы файлов, которые будут объединены для конкретного менеджера пакетов вместе с соответствующими метаданными, такими как зависимости. Часто основной набор утилит управляет базовой установкой из этих пакетов, и несколько менеджеров пакетов используют эти утилиты для предоставления дополнительных функций.
Например, yum полагается на rpm как на серверную часть. Yum расширяет функциональность серверной части, добавляя такие функции, как простая настройка для обслуживания сети систем. В качестве другого примера Synaptic Package Manager предоставляет графический пользовательский интерфейс с помощью библиотеки Advanced Packaging Tool (apt) , которая, в свою очередь, использует dpkg для основных функций.
Alien — это программа, которая выполняет преобразование между различными форматами пакетов Linux , поддерживая преобразование между пакетами .rpm , совместимыми со стандартной базой Linux (LSB) , .deb , Stampede (.slp), Solaris (.pkg) и Slackware ( .tgz , .txz , . tbz, .tlz) пакеты.
В мобильных операционных системах Google Play использует формат пакета приложений Android (APK), а Microsoft Store использует форматы APPX и XAP . (И в Google Play, и в Microsoft Store есть одноименные менеджеры пакетов.)
По характеру бесплатного программного обеспечения с открытым исходным кодом, пакеты под аналогичными и совместимыми лицензиями доступны для использования в ряде операционных систем. Эти пакеты можно комбинировать и распространять с помощью настраиваемых и внутренне сложных систем упаковки, чтобы обрабатывать множество вариантов программного обеспечения и управлять зависимостями и конфликтами, зависящими от версии. Некоторые системы упаковки бесплатного программного обеспечения с открытым исходным кодом сами также выпускаются как бесплатное программное обеспечение с открытым исходным кодом. Одно типичное различие между управлением пакетами в проприетарных операционных системах, таких как Mac OS X и Windows, и в бесплатном программном обеспечении с открытым исходным кодом, таком как Linux, заключается в том, что системы бесплатного программного обеспечения с открытым исходным кодом также позволяют устанавливать сторонние пакеты и обновляется с помощью того же механизма, в то время как менеджеры пакетов Mac OS X и Windows будут обновлять только программное обеспечение, предоставленное Apple и Microsoft, соответственно (за исключением некоторых сторонних драйверов в Windows). Возможность непрерывного обновления стороннего программного обеспечения обычно добавляется путем добавленияURL -адрес соответствующего репозитория в файле конфигурации управления пакетами.
Помимо менеджеров приложений системного уровня, есть несколько дополнительных менеджеров пакетов для операционных систем с ограниченными возможностями и для языков программирования, для которых разработчикам нужны новейшие библиотеки .
В отличие от менеджеров пакетов системного уровня, менеджеры пакетов прикладного уровня сосредоточены на небольшой части программной системы. Обычно они находятся в дереве каталогов, которое не поддерживается менеджером пакетов системного уровня, например c:\cygwin или /opt/sw . [19] Однако это может быть не так для менеджеров пакетов, которые имеют дело с программными библиотеками, что может привести к конфликту, поскольку оба менеджера пакетов могут заявить, что они «владеют» файлом, и могут нарушить обновления.
Ян Мердок заметил, что управление пакетами — это «самое большое достижение , которое Linux привнес в индустрию», что оно стирает границы между операционной системой и приложениями и упрощает внедрение инноваций [...] marketplace и [...] развивать ОС». [20]
Существует также конференция для разработчиков менеджеров пакетов, известная как PackagingCon. Он был создан в 2021 году с целью понять различные подходы к управлению пакетами. [21]
{{cite web}}
: CS1 maint: неподходящий URL ( ссылка )