Пакетный менеджмент

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

Из систем пакетного менеджмента наиболее известны и распространены семейство утилит apt, особенно механизм apt-get. Появившийся сначала в Debian'е и рассчитанный, соответственно, на deb-пакеты, он очень быстро стал универсальным кросс-пакетным механизмом установки, удаления и обновления программ, успешно работая с пакетами rpm (дистрибутивы Connectiva, Altlinux), тарбаллами Slackware (механизм slapt-get). И в принципе не видно препятствий к прикручиванию его к тарбаллам любого формата -- от «чистых» до сколь угодно насыщенных метаинформацией.

Кроме собственно apt, в Debian'е и его клонах используется родственная система пакетного менеджмента -- aptitude, а также ряд графических фронт-эндов (Synaptic, Adept), некоторые из которых получили распространение за пределами родительского семейства.

Под явным влиянием apt возникли и иные системы пакетного менеджмента -- yum, urpmi и так далее. Однако они ориентированы только на rpm-пакеты (вероятно, их можно использовать и для иных форматов, но кому это нужно при наличии apt?) и потому не получили столь широкого распространения, оставаясь принадлежностью «родительских» дистрибутивов и более-менее точных их клонов. Так, yum, насколько мне известно, используется только в RHEL/Fedora и их прямых клонах, urpmi — только в Mandriva.

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

Наибольшую известность из таких «облегчённых» систем управления пакетами получил pacman, разработанный для Archlinux, но, как уже говорилось, «прикрученный» и к чистым тарбаллам Slackware (пакеты самого Archlinux'а информацию о зависимостях содержат примерно в том же виде, что и в пакетах FreeBSD).

К слову говоря, пакеты Archlinux, являют собой пример эффективного контроля зависимостей за счет внешних баз данных -- базы пакетного репозитория (на установочном диске и на сервере проекта) и базы пакетов, установленных на локальной машине. Гибкость такого «внешнего» метода пакетного менеджмента определяется тем, что пользователь может легко создать собственный пакетный репозиторий в базой данных, в которой описаны только нужные ему зависимости.

Другим, еще более простым, пакетным менеджером, ориентированным как раз на «чистые» тарбаллы, стала утилита netpkg, разработанная в рамках проекта Zenwalk и пока еще никуда не прикрученная.

Следует отметить, что собственно для Slackware была создана и собственная утилита установки, обеспечивающая отслеживание зависимостей — swaret, но в штатный комплект этого дистрибутива она так и не включена. Однако она в своей графической ипостаси Gswaret -- принята в качестве штатной в новом дистрибутиве Salix, недавно отпочковавшемся от Zenwalk'а.

Наконец, в Slackware, начиная с версии 12.2, в базовую группу программ (так называемую main) была включена утилита управления пакетами slackpkg, каковую, следовательно, отныне можно рассматривать в качестве штатной для этого дистрибутива.

Все упомянутые выше менеджеры пакетов возникли как дистрибутив-специфичные и ориентировались на первоначально на определённый формат архивов. Однако в последнее время наметилась тенденция создания изначально кросс-форматных и кросс-дистрибутивных систем, которые можно назвать пакетными метаменеджерами. Наиболее ярким примером является PackageKit, включающий бэк-энды для отдельных менеджеров пакетов, таких, как yum или apt, консольную утилиту pkcon и несколько графических фронт-эндов, которые служат интерфейсом собственно управления пакетами. В качестве штатной эта система применяется в Fedora, но как дополнительный инструментарий включена в ряд дистрибутивов, например, в Ubuntu.


Теги: , , , , , , , , , , ,