Обращение с пакетами

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

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

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

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

Резкой границы между средствами установки, системами управления пакетами и системами построения пакетов нет: нередко одна и та же утилита установки пакета, вызванная с различными параметрами, может как осуществить установку или удаление единичного пакета, так и выполнить полное «разруливание» его зависимостей, и со временем мы рассмотрим примеры таких утилит.

Тем не менее, средства установки пакетов и системы пакетного менеджмента — это несколько разные понятия.

Различие между ними проявляются, в частности, в том, что первые жестко привязаны к формату пакетов. Так, утилита rpm обеспечивает установку одноименных пакетов, семейство утилит dpkg предназначено для обращения с deb-пакетами, и так далее.

Подчас такие утилиты носят одинаковые или похожие имена. Например, команду pkg_add, осуществляющую установку тарбаллов, можно видеть во всех системах BSD-семейства. Однако всё это — разные утилиты, и с помощью pkg_add из NetBSD так же нельзя установить пакет из FreeBSD, как и выполнить обратную процедуру. Когда в DragonFleBSD некоторое время сосуществовали система портов, унаследованная из FreeBSD, и pkgsrc, заимствованная из NetBSD, для установки пакетов, сгенерированной той или другой из них, приходилось держать pkg_add, pkg_del и тому подобные утилиты в двух вариантах — из FreeBSD и из NetBSD.

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

Однако довольно быстро оказалось, что одна и та же система управления пакетами, с некоторыми оговорками, может быть использована для работы с пакетами совершенно различных форматов. Так, механизм apt-get, разработанный как надстройка над утилитами dpkg из дистрибутива Debian, был приспособлен для работы с пакетами rpm-формата в рамках дистрибутива Connectiva (ныне -- составляющая часть компании Mandriva), а затем и для чистых тарбаллов Slackware.

С другой стороны, инфраструктура Debian, базирующаяся на его формате пакетов и системе управления оными, нашла свое место и как надстройка над ядрами совершенно других операционных систем, например, FreeBSD (проект Debian GNU/kFreeBSD ) и OpenSolaris
(проект Nexenta).

Даже такой менеджер пакетов, как pacman от Archlinux, привязанный к далеко не самому распространенному дистрибутиву, был перенесен на Slackware, в результате чего появился дистрибутив с труднопроизносимым названием Frugalware.

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

Порты FreeBSD не только послужили прототипом всех остальных систем построения пакетов, но и в своем первозданном виде были заимствованы OpenBSD, а также неоднократно «прикручивались« к различным дистрибутивам Linux, в первую очередь — к Slackware. С другой стороны, уже давно существует и время от времени реанимируется проект обратного портирования портежей Gentoo во FreeBSD.

Система pkgsrc, изначально разработанная для NetBSD, практически сразу также стала кросс-платформенной, и ныне список поддерживаемых ею операционок насчитывает чёртову дюжину позиций. в их числе — BSD-системы (кроме NetBSD — также DragonFlyBSD, в которой она стала единственным средством пакетного менеджмента, OpenBSD, где она конкурирует с портами из FreeBSD, и, если Darwin тоже считать BSD-отростком, то MacOS X), Linux (ряд клонов Slackware обрёл в pkgsrc недостающую родительнице систему управления пакетами), практически все ныне живущие коммерческие UNIX'ы и даже QNX.

Иными словами, кросс-платформенность и мультиформатность нынче скорее правило, чем исключение для систем управления пакетами и систем построения оных. Остались не охваченными этим движением только пакетные менеджеры — выходцы из среды rpm-based дистрибутивов, такие, как yum и urpmi. Вероятно, потому что на других платформах с более иными форматами они оказались просто не востребованы.

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


Теги: