…где как часть стандарта прописан (sic!) rpm. 4 и 5 версии которого как-то слабо совместимы. ещё есть такие мантры: sus, fhs, posix. повторять по мере необходимости в течение дня.
Там только разновидности rpm перечислены. Ещё столько же примерно .deb, плюс строго соблюдая "принцип Арча" .tar.gz ну и прочей твари по паре. И каждой - пожалуйста "чистую систему" для сборки.
А что, для чего-то кроме rpm требуется спек? По ссылке как раз описано, как использовать один спек для разных дистрибутивов. Под deb - ещё кучка файлов, но там различий между дистрибутивами практически нет. Чистая система разворачивается в chroot'е меньше чем за минуту, но это забота билд-системы. А поддержкой арча/слаки/генты редко кто заморачивается, это да.
Если не брать в расчёт трудоёмкий вариант со сборкой пакетов под все дистрибутивы непосредственно разработчиком, можно вспомнить ещё один довольно удачный пример распространения проприетарного софта. Драйверы AMD, которые fglrx, распространяются в виде бинарного инсталлятора, который определяет дистрибутив, собирает пакеты под него, а потом устанавливает их. Сборочные скрипты сопровождаются представителями сообщества, как правило - официальными майнтейнерами дистрибутивов.
Если не брать в расчёт трудоёмкий вариант со сборкой пакетов под все дистрибутивы непосредственно разработчиком,
А почему, cобственно, это трудоёмкий вариант? Что мешает собрать программу статически? Ну, если в лом пакетировать, то распространять просто архив с бинарником, а там все заинтересованные его упакуют (точнее напишут скрипт утаскивающий этот бинарник со стандартного мест и упаковывающий).
Вот тот же TeX Live использует одни и те же бинарники для всех дистрибутивов. Причём актуальная версия 2011 запускается на платформе более чем десятилетней давности.
Я собираю универсальные пакеты так.
Установил 2 виртуалки на 32bit и на 64bit (безразницы какие, но я выбрал Ubuntu, где dpkg предустановлен для сборки deb-пакета).
Задача сводится к сборке сначала deb-пакета и конвертации его через alien в rpm-пакет (можно и для Арча конвертировать из deb-пакета тоже, alien это умеет).
Я написал простенькие скрипты: http://code.google.com/p/vpnpptp/source/br...untu.compile.sh http://code.google.com/p/xroot/source/brow...bian.compile.sh
То есть ничего сложного нет. Обязательно только сначала собирать deb-пакеты и конвертировать именно их. Для сборки deb-пакета в rpm-дистрибутиве достаточно установить dpkg.
romkaromka, я давно говорил, что куда правильнее было бы осилить OBS.
Это не то. OBS позволяет собрать пакеты для многих популярных дистрибутивов, но не для всех. alien же делает для всех дистрибутивов универсальные пакеты - именно с этой целью alien и создавался как универсальный инструмент.
От пакета требуется в основном только распихать файлы по папкам
Ну да. А ещё, например, есть такая штука, как зависимости. Посмотрите, что в provides и requires у аналогичных пакетов из Федоры, Суси и Мандривы, узнаете много интересного.
Для некоторых программ зависимости можно не делать, Кипер и Vpnpptp как раз те программы. А если зависимости только от иксов , как в случае msegui или GTK2 , то вообще нет смысла цеплять зависимости, программа будет работать в любом случае
Никто и не говорит, что нет проблемы зависмостей, но иногда нет и зависимостей, но если они есть, то надо делать одинаковые зависимости, то есть унифицировать. И все это сделать можно. В любом случае alien.
Ладно, а как насчёт скриптов? Требования к ним во вcех дистрибутивах свои, и меняются от версии к версии. Свежий пример: в openSUSE 12.1 стало (опять) нужно в %post и %postun прописывать обновление меню.
Скрипты добавляются автоматически очень во многих случаях, даже если они не прописаны явно. Например, если в пакете есть хоть одна библиотека, после установки/удаления нужен вызов ldconfig - как правило вручную его не указывают, а он всё равно есть. И да, зачастую автоматически добавленные скрипты дистрибутивоспецифичны. Поэтому единственно правильный способ собрать прямой пакет - собирать его под конкретную версию конкретного дистрибутива.
И обновление меню, кстати, зачастую добавляется автоматически. Только в разных дистрибутивах для этого вызываются разные утилиты...
Практика показала, что ничего этого не надо делать.
При установке пакета, сделанного через alien, пакетный менеджер делает всё необходимое сам уже при установке пакета.