Андрей Коврин
OpenPKG: кроссплатформенная система пакетов
Несмотря на немалую, на мой взгляд, амбициозность проекта OpenPKG, знают о нем отнюдь не многие. А ведь он возник не на пустом месте, и его разработчики, создав систему пакетов с уникальными функциями, взялись за решение актуальной проблемы.
Концепция проекта OpenPKG
OpenPKG – это свободная кроссплатформенная (т.е. с претензией на независимость от ОС) система пакетов программного обеспечения, распространяемого под открытыми лицензиями, и набор утилит для работы с ними. Как известно, мир Open Source – это мир альтернативных решений, и данное его свойство породило множественность не только в выборе конкретных программных продуктов для конечного пользователя, но и в принципах разработки, в самых базовых аспектах построения свободных операционных систем вообще. Наглядным отображением этого является разнообразие, наблюдаемое даже в таких «субкультурах» Open Source, как GNU/Linux-дистрибутивы. Ядро ОС у всех одно (хотя и тут не обходится без вариаций на тему – в виде общих и специализированных патчей от сторонних разработчиков), но дальше, что называется, «кто во что горазд». Несомненно, создатели постоянно оглядываются на какие-то привычные и устоявшиеся положения архитектуры, но всякий хочет привнести что-то новое и неповторимо-эксклюзивное в свой мир (неспроста уже давно не только трубят о необходимости стандартизации GNU/Linux-дистрибутивов, но и предпринимают попытки добиться этого путем создания сертификаций вроде Linux Standard Base). Одной из ключевых составляющих каждого дистрибутива является система управления программным обеспечением – без этого затруднительно называть ОС готовой для конечного использования. И здесь отчетливо прослеживаются концептуальные расхождения в подходах. Конечно, не каждый в состоянии разработать с нуля свою систему пакетов, и это положение значительно повлияло на численность подобных систем, однако единого решения нет даже среди GNU/Linux-дистрибутивов. Кто-то использует RPM, кто-то – DEB, некоторые – систему портов, всегда найдутся любители собирать приложения самостоятельно из исходников. И это только в Linux. А теперь добавьте к данному семейству FreeBSD ports, NetBSD Packages Collection, DMG-пакеты Mac OS X...Такое многообразие заставляет задуматься и разработчиков. Несомненно, самый простой способ – ограничиться публикацией обычных архивов с исходниками продукта, а пользователи сами смогут собрать пакеты как для себя, так и для всех обладателей определенной среды. Ничуть не странно, что желающих искать и вручную компилировать каждую программу не так уж много. В то же время скучающих альтруистов, собирающих все новые релизы каких-то пакетов под свою систему и выкладывающих это ко всеобщему удовольствию, тоже зачастую не хватает. Все эти (а также и упущенные в написанном выше) проблемы побудили к рождению проекта OpenPKG, регулярно подготавливающего наборы из унифицированных пакетов с отобранным программным обеспечением для различных систем.
Кроссплатформенность и пакеты
Последним релизом OpenPKG (2.5) официально поддерживаются следующие платформы: Linux (Fedora Core 4, Red Hat Enterprise Linux 4, OpenSUSE Linux 10, SUSE Linux 9.3 и 10.0, Gentoo Linux, Mandriva 10.2, Debian GNU/Linux 3.1), FreeBSD (4.11-SOLID, 5.4-STABLE, 6.0-STABLE, 7.0CURRENT), NetBSD 2.0.2, Solaris (8, 9, 10). Кроме того, известно, что основные функции OpenPKG работают в AIX 5.1 и HP-UX 11.11. Общее число существующих и поддерживаемых на момент последнего релиза пакетов – 579. Конечно, это существенно меньше, чем в Debian-репозитарии или в FreeBSD-портах, но стоит отметить, что OpenPKG – это, во-первых, не просто коллекция всех доступных приложений вообще, а отобранное лучшее и самое нужное, и во-вторых, проект ориентирован на применение на серверных станциях. То есть OpenPKG практически не содержит приложений для настольных ПК. Тем не менее, представлены и некоторые базовые программы для удобной работы в консоли: оболочки Bash и Zsh, текстовые редакторы Emacs и Vim, веб-браузеры Lynx и Links, почтовый клиент Mutt, FTP-клиенты lftp и ncftp, файловый менеджер MC и т. п. Из серверного программного обеспечения можно выделить наличие Apache, BIND, INN, MySQL, OpenLDAP, OpenSSH, OpenSSL, Postfix, PostgreSQL, ProFTPD, PureFTPd, Samba, Sendmail, SpamAssassin, SQLite, Squid. В общем, привычный набор знакомых и распространенных среди серверов пакетов. Не забыто и ПО для разработчиков: GCC, GDB, Subversion, Autoconf, Automake, Make, Perl, PHP, Python, Ruby, Tcl...
Подробности об устройстве OpenPKG
Продукция OpenPKG распространяется в виде модифицированных для поддерживаемых платформ RPM-пакетов (спецификации для каждой ОС написаны разработчиками OpenPKG с нуля) двух традиционных типов: binary и source. При этом рекомендуемыми к использованию считаются, естественно, пакеты с исходниками – единые для всех платформ. К бинарным сборкам, существующим в виде отдельных для каждой ОС коллекций, советуют обращаться только в исключительных случаях, когда нет возможности уделить процессу компиляции необходимое для этого время. Связано такое положение вещей хотя бы с тем, что зачастую некоторые функции приложений «вшиваются» в бинарные файлы, в результате чего встроенные опции могут быть изменены только путем пересборки. Выбор формата RPM разработчики объясняют тем, что это единственное из всех рассмотренных ими решений (к слову, исследовать они успели еще и Debian dpkg/apt, FreeBSD ports с pkg_xxx, SVR4 pkgxxx, epkg, Build’n’Play, GNU Stow, OptDepot, а также другие утилиты), удовлетворяющее всем основным требованиям и предоставляющее поддержку полного цикла жизни пакета. Помимо пакетов с самим программным обеспечением в дистрибутив релиза OpenPKG входят и средства для создания собственного окружения системы пакетов и удобной работы с ними. Shell-скрипт openpkg-.src.sh, доступный в директории с исходниками, формирует базовое окружение для OpenPKG, после чего за работу берется специфичный для структуры скрипт openpkg--.--openpkg.sh, устанавливающий менеджер пакетов в систему (для его запуска требуются права root). Для первой установки OpenPKG или ее обновления далее необходимо проинсталлировать пакет openpkg (как отмечают разработчики в своем руководстве, «воспользуйтесь OpenPKG для обновления OpenPKG!»). Далее с помощью удобного консольного менеджера openpkg можно управлять всеми доступными пакетами (устанавливать, удалять, собирать из исходников, просматривать информацию и т.п.).Основные административные операции осуществляются через команду openpkg rpm, принимающую параметры, знакомые любому пользователю RPM-основанных систем. Действие некоторых ключей распространяется только на binary- или только на source-пакеты, а, например, -Uvh для бинарного проводит установку или обновление, а для src – распаковку. Существует и собственный «загрузочный скрипт» (<корень_opkg>/etc/rc), позволяющий запускать/останавливать/перезапускать отдельные (или все вообще) пакеты, а также выводящий различные конфигурационные значения (при вызове с --config). В качестве дополнения представлен пакет openpkg-tools – после его инсталляции появляются утилиты, которые, используя при своей работе make, binutils и gcc, позволяют автоматизировать процесс сборки и установки пакетов из исходников с учетом их зависимостей (команда openpkg build).
Подводя итоги
OpenPKG – основанная исключительно на Open Source технология, предназначенная для упрощения работы с пакетами на множестве разнородных UNIX/Linux-серверов. Проект предоставляет всю необходимую унифицированную инфраструктуру управления программным обеспечением на различных платформах, облегчая тем самым жизнь системному администратору в инсталляции и обновлении привычных пакетов, общее количество которых превышает 500.С помощью OpenPKG можно как быстро развертывать серверы из бинарных пакетов, так и (почти?) полностью автоматизировать процесс сборки программных компонентов (с учетом необходимых оптимизаций и особенностей платформ). OpenPKG позволяет создавать множество полностью самодостаточных, изолированных сущностей с пакетами в единой системе (причем с возможностью использования одной сущностью пакетов из другой, что сводит на нет необходимость установки одинаковых пакетов в различных сущностях – это своего рода система зависимостей? Нет, это больше похоже на случай, когда на одном сервере множество VPS под Gentoo Linux, а база портежей для всех виртуальных серверов монтируется одна). Инсталлируемое ПО максимально обособлено от системы и независимо, может быть полностью удалено менеджером без потребности в дополнительных манипуляциях. Разработчики OpenPKG беспокоятся и о безопасности поставляемых пакетов, что особенно важно, учитывая серверную специализацию, подразумевающую возможность использования поставляемого ПО на общедоступных (через локальную или глобальную сеть) машинах. На регулярной основе для всех официально поддерживаемых пакетов выпускаются предупреждения об уязвимостях в безопасности (security advisories, SA) и исправляющие эти проблемы обновления в виде UPD-файлов формата SRPM. Поддержка распространяется только на последние версии OpenPKG (на данный момент это 2.4 и 2.5). Для цифровой подписки уведомлений о безопасности и SRPM-пакетов официальных релизов OpenPKG используются GnuPG и OpenPGP. С этого года поддержкой проекта занимается некоммерческая организация OpenPKG Foundation e.V. Финансы и ресурсы ей (на данный момент) предоставляет тройка немецких спонсоров. Следующий релиз OpenPKG – 2.6 – намечен на апрель 2006 года.
Ссылки
- Сайт OpenPKG – http://www.openpkg.org.
- OpenPKG FAQ – http://www.openpkg.org/faq.html.
- OpenPKG Quick Reference – http://www.openpkg.org/doc/quickref/openpkg.txt.
- OpenPKG 2.5 на FTP – ftp://ftp.openpkg.org/release/2.5.