Пакеты Debian
Заблуждение, которое я развеял, как только более-менее изучил тему, что пакеты Debian — простой архив с хорошо формализованным простым порядком создания. На деле оказалось, что это несколько однобокий framework с двумя языками программирования: make (язык описания файлов make) и (обычно, но не обязательно) UNIX shell. Всё.
Соответственно, каждый процесс начальной сборки самой первой версии пакета следует рассматриваться как отдельный проект, где есть все стадии: проектирование, программирование, тестирование и выкладка.
Так же такое понимание сборки должно отвечать на вопрос «почему так долго» в отношении первой версии. Уложить в пакет какой-нибудь не совсем элементарное приложение действительно невесёлое занятие, а если ещё и делать всё «по правилами», занятие требующее допиливания этого самого приложения, если изначально оно не писалось с тем расчётом, что ставится будет из пакета. В нашей группе некоторые приложения укладываются в первую версию буквально неделями.
Конечно, дальше идёт всё сильно веселее и следующие версии пакета, часто, готовятся за время близкое ко времени ввода комманд, плюс упаковка пакета.
Если речь идёт офреймворке, то я бы сказал, что он наоборот -- слишком «многобокий»:
И всё это, а не только первый пункт, обычно имеют в виду, когда говорят про «Debian пакеты».
Кстати, это не обязательно :-). Файл rules -- исполняемый, и может быть написан как угодно. Единственное требование -- это чтобы он создал конечные файлы в определённом формате. Но конечно на практике это всегда make, потому что глупо игнорировать весь написанный вокруг фреймворк с кучей неявных соглашений и традиций.
Я тоже так думал, когда собрал свой первый пакет :-). Потом привыкаешь, и сборка первой версии своего пятого проекта уже далеко не такое необъятное приключение. Они (пакеты), всё таки, во многом похожи.
Комментарий для softwaremaniacs.org/about/:
Да-да, Ваня, у вас, наверное, так и есть :) А у нас куча опенсорса, который писался не для пакетов, а заворачивать его надо в пакеты. Одна Вики чего стоит.
Комментарий для Евгения Степанищева:
Всё правильно, «Debian пакеты» — это отдельный пласт знаний. Если погрузится в эту тему достаточно глубокого, то время сборки первой версии пакета сократится с нескольких недель до нескольких дней, если нужно допиливать софт и до пары часов, если не нужно.
Ещё нужно иметь в виду, что для многих вещей сделаны вспомогательные штуки. Например, используя CDBS можно питоновую либу завернуть в пакет не дольше, чем за 15-30 минут.
Скоро мы будем уметь так же быстро заворачивать в первую версию пакета все наши сервисы на Django.
Комментарий для sergeybelov.ru:
Пакет, в связи с которым я упомянул несколько недель — это Вики. Там долго не потому что пакеты это что-то сложное, потому что Вики надо допилить до пакета. Какими знаниями не обладай по сборке пакетов, процесс этот до нескольких дней не сократишь.
Про сервисы, которые пишутся изначально под пакеты, я написал: «занятие требующее допиливания этого самого приложения, если изначально оно не писалось с тем расчётом, что ставится будет из пакета». Понятно, что это не то место, где возникают проблемы.
Комментарий для Евгения Степанищева:
Если параллельно с этим не заниматься разработкой нового функционала, то можно всё сделать за, примерно, неделю. Это на примере Рассылок, которые не сильно отличаются от Вики (та же дикая смесь php + django).
Комментарий для sergeybelov.ru:
Вики плоха не смесью технологий, а тем, что она дикая сама по себе.