Мнение про механизм дистрибуции программ
Не моё, наткнулся в http://vitus-wagner.livejournal.com/1153225.html?thread=39454153#t39454153 Не готов сказать, что оно совершенно правильное, но очень заинтересовало.
make (and/or its versions) plus «paco» on Linux == the full solution.
Пакеты когда-то были способами обособить distributions и подражать миру коммерческих ОС. В этом их ОГРОМНЫЙ вред: пользователь полностью не знает, что внутри этих кем-то созданных executables, туда можно подсунуть что угодно (несмотря на криптосуммы, ибо они подписаны постфактум, и ваша вера в создателя пакета обязана быть абсолютной).
Все distros ввели собственные скрипты и методы компиляции, т.е. открытая программа как она есть НЕ становится «пакетом», она обязана быть модифицирована.
Первым преступление совершил RedHat с его rpm-ами, которые модифицировали cpio так, чтобы его перестала читать сама cpio. Нас «успокоили» тем, что сам rpm тоже открытая как бы программа - и проложили прокладку.
Единственно верный подход к package management - никогда не использовать ничего кроме стандартных инструментов (e.g. tar.gz), и только подкладывать информационные текстовые файлы (с зависимостями, версиями и т.д.) внутрь tar-архива. Можно на худой конец и cpio, и сжимать xz-м, bz-ом и т.д. Тогда любая стандартная GNU программа компилируется как она есть.
А для учета и контроля что куда когда и как было установлено на машину, должен быть отдельный менеджер - и идеальное решение было создано для distro, которое делалось с 0ля (from scratch) — это «paco».
Он ловит обращения к libc calls, system calls - и подменяет их через LD_PRELOAD механизм. Таким образом после стандартной компиляции make install превращается в «paco -lD --ignore-erors — make install» — и ваш пакет учтен, все файлы и их места зафиксированы, размеры посчитаны — и из этой установки можно тут же сгенерировать tar.gz для повторной установки на любых других машинах.
Множество менеджеров пакетов, отказ от компиляции непавленных исходников, и перевод пользователей на центральные depositories, которым вы обязаны верить - часть той войны за захват открытого программирования, которая сегодня ведется повсеместно (вспомните хотя бы подрыв Линукса с помощью systemd), и которая открытые системы постепенно побеждает, делая их кальками коммерческих ОС и механизмов слежки и отбора самостоятельности, которые они жёстко внедряют.
------------ P.S. Все, абсолютно все postinstall scripts создатели distros обязаны делать на стандартной shell (e.g. bash), и собирать их в маленький Makefile. Сказав «make» без аргументов получим перечисление возможных команд (i.e. make targets), и затем говорим то, что нам надо в случае пакета. //очевидно, что этот подход универсален и может использоваться как для модулей языков, так и для отдельных программ в ОС//
Современная мерзость - особенно мерзость «rolling distributions» - непереносима.
P.P.S Современные системы configuration management - мерзость и непереносимы. Они ПЕРЕПИСЫВАЮТ внутри себя кучу уже существующих shell utilities, make и т.д. - и вместо полной гибкости и стандартных инструментов предлагают учить новый внутренний их язык, на котором можно сделать лишь то, что вам написали авторы.
Необходима современная открытая configuration and package management system, основанная на paco, make, и системе контроля версий.