LINUX.ORG.RU

Правильная сборка .deb пакета

 , , , ,


4

4

Добрый день. Я задался таким вопросом - как правильно собрать для Debian Jessie .deb пакет с некоторой прогой?

В случае, если проги в репозиториях debian принципиально нет, как я понимаю, есть два варианта развития событий: либо я подготавливаю полноценную «дебианизацию» в соответствии с инструкцией по созданию пакетов Debian, либо использую checkinstall. Вопрос: Если речь идёт только о личном использовании, то есть ли смысл идти длинным путём (дебианизация), или checkinstall является оптимальным решением? Как я понимаю, checkinstall позволит создать .deb пакет из уже собранной программы и заполнить всю ту информацию в пакете, которая должна там быть, в то время как для полноценной дебианизации придётся писать много разного в том числе и для сборки, а значительная часть информации не попадёт в .deb пакет, т.е. окажется для меня ненужной.

Если пакет есть в репозиториях debian, но мне нужна более новая версия, то имеет ли смысл брать готовый каталог debian и адаптировать под новую версию, или лучше самому (возможно) наложить патчи из debian, а потом собрать и заcheckinstall'ить? Заранее спасибо.

★★

Для себя по-барабану как - лишь бы пакет, а не make install.

Если пакет есть в репозиториях debian, но мне нужна более новая версия, то имеет ли смысл брать готовый каталог debian

this

Difrex ★★★★ ()

Если по-быстрому для себя - dh_make.

tailgunner ★★★★★ ()

Если речь идёт только о личном использовании

Тут вопрос скорее в том, представляет ли эта прога интерес для других или нет. Если нет, тогда всё ясно.

в то время как для полноценной дебианизации придётся писать много разного в том числе и для сборки

Если это качественная прога, а не специфический монстр типа openfoam, то много писать не придётся. Вкратце:

  • переименовать каталог с исходниками в формат имя-версия: foo-0.1
  • перейти в этот каталог, убедиться, что он в чистом состоянии (только исходники) и выполнить dh_make --single --createorig. В итоге: появится каталог debian с метаинфой, а на уровень выше появится архив и исходниками foo_0.1.orig.tar.xz (без debian).
  • собрать пакет: dpkg-buildpackage -uc -us

В зависимости от исходников понадобится подправить debian/rules.

Если пакет есть в репозиториях debian, но мне нужна более новая версия, то имеет ли смысл брать готовый каталог debian и адаптировать под новую версию, или лучше самому (возможно) наложить патчи из debian, а потом собрать и заcheckinstall'ить

Я делаю так:

  • беру последний доступный xxx.debian.tar.xz для пакета
  • беру исходники свежей upstream версии
  • переименовываю архив в ver-orig-формат (см. выше), распаковываю
  • захожу в каталог, распаковываю xxx.debian.tar.xz.
  • запускаю debchange.
  • собираю dpkg-buildpackage -uc -us

Для большинства пакетов между предпоследним и последним шагом приходится повозиться с patch refresh с помощью quilt.

gag ★★★★★ ()

Если речь идёт только о личном использовании, то есть ли смысл идти длинным путём (дебианизация), или checkinstall является оптимальным решением?

checkinstall'а достаточно.

Как я понимаю, checkinstall позволит создать .deb пакет из уже собранной программы и заполнить всю ту информацию в пакете, которая должна там быть,

Он запускает make install (или любую другую команду, если указать в качестве параметра), отслеживает её действия и собирает все установленные ею файлы в пакет. Потом устанавливает этот пакет.

Если пакет есть в репозиториях debian, но мне нужна более новая версия, то имеет ли смысл брать готовый каталог debian и адаптировать под новую версию, или лучше самому (возможно) наложить патчи из debian, а потом собрать и заcheckinstall'ить?

А тебе очень надо накладывать патчи из Дебиана?

proud_anon ★★★★★ ()

Если речь идёт только о личном использовании, то есть ли смысл идти длинным путём (дебианизация), или checkinstall является оптимальным решением?

Для себя достаточно того, что проще.

Если пакет есть в репозиториях debian, но мне нужна более новая версия, то имеет ли смысл брать готовый каталог debian

Имеет смысл просто uscan + uupdate

spv82 ()

Если вам нужна более новая версия, чем та, которая в репозитории, то качаете исходники:

apt-get source package
Качаете зависимости для сборки:
apt-get build-dep package
Качаете новую версию:
uscan
Обновляете ее:
uupdate ../new-version.tar.gz
Переходите в папку с новой версией и собираете через dpkg-buildpackage.

ValdikSS ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.