Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Пакеты Debian

Заблуждение, которое я развеял, как только более-менее изучил тему, что пакеты Debian — простой архив с хорошо формализованным простым порядком создания. На деле оказалось, что это несколько однобокий framework с двумя языками программирования: make (язык описания файлов make) и (обычно, но не обязательно) UNIX shell. Всё.

Соответственно, каждый процесс начальной сборки самой первой версии пакета следует рассматриваться как отдельный проект, где есть все стадии: проектирование, программирование, тестирование и выкладка.

Так же такое понимание сборки должно отвечать на вопрос «почему так долго» в отношении первой версии. Уложить в пакет какой-нибудь не совсем элементарное приложение действительно невесёлое занятие, а если ещё и делать всё «по правилами», занятие требующее допиливания этого самого приложения, если изначально оно не писалось с тем расчётом, что ставится будет из пакета. В нашей группе некоторые приложения укладываются в первую версию буквально неделями.

Конечно, дальше идёт всё сильно веселее и следующие версии пакета, часто, готовятся за время близкое ко времени ввода комманд, плюс упаковка пакета.

6 комментариев
isagalaev (softwaremaniacs.org/about/) 2009

На деле оказалось, что это несколько однобокий framework

Если речь идёт офреймворке, то я бы сказал, что он наоборот -​-​ слишком «многобокий»:

  • это формат пакета с зависимостями, chnagelog’ом и т. д.
  • де-факто устоявшаяся система сборки, но не имеющая на самом деле отношения к формату
  • хелперы над устоявшейся системой сборки
  • система скачивания, каталогизации, установки и maintenance’а пакетов (apt), которая тоже в общем-то не имеет отношения к формату
  • организация репозитория на сервере

И всё это, а не только первый пункт, обычно имеют в виду, когда говорят про «Debian пакеты».

make (язык описания файлов make)

Кстати, это не обязательно :-). Файл rules -​-​ исполняемый, и может быть написан как угодно. Единственное требование -​-​ это чтобы он создал конечные файлы в определённом формате. Но конечно на практике это всегда make, потому что глупо игнорировать весь написанный вокруг фреймворк с кучей неявных соглашений и традиций.

Соответственно, каждый процесс начальной сборки самой первой версии пакета следует рассматриваться как отдельный проект

Я тоже так думал, когда собрал свой первый пакет :-). Потом привыкаешь, и сборка первой версии своего пятого проекта уже далеко не такое необъятное приключение. Они (пакеты), всё таки, во многом похожи.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для softwaremaniacs.org/about/:

Я тоже так думал, когда собрал свой первый пакет :-). Потом привыкаешь, и сборка первой версии своего пятого проекта уже далеко не такое необъятное приключение. Они (пакеты), всё таки, во многом похожи.

Да-да, Ваня, у вас, наверное, так и есть :) А у нас куча опенсорса, который писался не для пакетов, а заворачивать его надо в пакеты. Одна Вики чего стоит.

arikon (sergeybelov.ru) 2009

Комментарий для Евгения Степанищева:

Всё правильно, «Debian пакеты» — это отдельный пласт знаний. Если погрузится в эту тему достаточно глубокого, то время сборки первой версии пакета сократится с нескольких недель до нескольких дней, если нужно допиливать софт и до пары часов, если не нужно.
Ещё нужно иметь в виду, что для многих вещей сделаны вспомогательные штуки. Например, используя CDBS можно питоновую либу завернуть в пакет не дольше, чем за 15-30 минут.
Скоро мы будем уметь так же быстро заворачивать в первую версию пакета все наши сервисы на Django.

Евгений Степанищев (bolknote.ru) 2009

Комментарий для sergeybelov.ru:

Пакет, в связи с которым я упомянул несколько недель — это Вики. Там долго не потому что пакеты это что-то сложное, потому что Вики надо допилить до пакета. Какими знаниями не обладай по сборке пакетов, процесс этот до нескольких дней не сократишь.

Про сервисы, которые пишутся изначально под пакеты, я написал: «занятие требующее допиливания этого самого приложения, если изначально оно не писалось с тем расчётом, что ставится будет из пакета». Понятно, что это не то место, где возникают проблемы.

arikon (sergeybelov.ru) 2009

Комментарий для Евгения Степанищева:

Если параллельно с этим не заниматься разработкой нового функционала, то можно всё сделать за, примерно, неделю. Это на примере Рассылок, которые не сильно отличаются от Вики (та же дикая смесь php + django).

Евгений Степанищев (bolknote.ru) 2009

Комментарий для sergeybelov.ru:

Вики плоха не смесью технологий, а тем, что она дикая сама по себе.