Часть будет описываться в терминах, используемых в Gentoo.
Имеем задачи:
1. полное конфигурирование пакетов(все явки и пароли).
2. без необходимости ручного создания пакетов для pear/cpan.
3. как следствие -- появление нормальных мета-пакетов и алиасов.
4. обновлять SVN и прочие Live-пакеты на автомате.
5. узнавать о конфликтах USE-флагов ДО начала компиляции пакета.
6. развитую систему бинарных пакетов, соответственно, более-менее классическое определение релизов.
7. ориентированность на несколько источников пакетов.
8. локальные USE-флаги, которые нужно явно задавать для пакета(так как local.use в зависимости от пакета может менять своё значение), также USE-флаги, не требующие пересборки пакета(например, добавляется только какой-то зависимый пакет).
Код:
package.espec:
Name: (auto) -- только для бинарных пакетов
Type: package|alias|meta|manager
License: GPL-2
Homepage: http://www.epkg.org/
Description:
abcd
efgh
Repository: (auto) -- адрес репозитория, только для бинарных пакетов
Maintainer: John Smith [www@example.com]
Slots: -- если не задано, то все версии идут в 0 слот, задаётся в виде -- номер версия версия...
5 5*
4 4*
Version: (auto) -- только для бинарных пакетов
Revision: (auto) -- только для бинарных пакетов
Revision-Type: none|config|install|all -- что изменилось(конфигурация, установка, и то, и другое, ничего принципиального)
Revision-Date: 2009-08-07 -- дата выходы
Release: any|release -- в каких дистрибутивах работает
Arch: x86 ~amd64 !ia64 -mips -- стабильные -- без отметок, нестабильные -- ~, в процессе создания пакета -- !, точно не работает -- -
Use: .bc mysql pgsql sql docs? -- . -- локальный, ? -- не требует переустановки(зависимости изменились и тп)
Use-Check: (mysql|pgsql)&sql -- проверка конфликтов, | -- только ОДИН из нескольких, || -- как минимум один, && -- оба
Depend: sql?? php-sql[$mysql $pgsql] -- ?? -- для модулей в основном -- либо добавляет сам поддержку(из исходников), либо через другой пакет(бинарные пакеты и уже установленные исходники, чтобы не пересобирать), $ -- текущее значение флага, [] -- с включенными/выключенными флагами
RuntimeDepend: php-cgi
CompileDepend: php-dbg
Provide: virtual/mta -- реализует mta
Binary: -- только для бинарных пакетов, варианты -- Binary-Live, Source, Source-Live
Use: bc pgsql -mysql sql docs -- флаги, с которыми создан пакет
URL: http://www.epkg.org/pkg.ebin [pkg.ebin] -- адрес пакета, [] -- локальное имя
package.econf: -- sh-скрипт
sys_config() -- конфиг системы(пути, пользователи, группы)
pkg_config() -- конфиг проги
sys_clean() -- удаление системных конфигов
pkg_clean() -- удаление/перемещение конфигов проги
src_espec() -- получение espec-файла(в основном для manager и live-версий при необходимости)
package.src.econf: -- sh-скрипт для установки из исходников
src_fetch() -- скачивание
src_unpack() -- распаковывание, патчи
src_configure() -- конфигурация
src_compile() -- компиляция
src_install() -- образ для установки в систему
В стадии жестокого обдумывания, довольно на скорую руки, так что могло остаться много неясного. Интересует мнение в основном насчёт актуальности задач.