LINUX.ORG.RU

Собрать deb-пакет: как лучше: CMake или написать свой скрипт с выполнением шагов по официальному мануалу?


1

2

Есть проект, собирающийся CMake. Под линуксом хочется добавить сборку .deb-пакета. В CMake есть какой-то функционал для сборки .deb и для меня наверное это самый лёгкий путь - прописать пяток строчек в свой CMakeLists.txt, но не будет ли проблем?

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

gag ★★★★★ ()
Ответ на: комментарий от gag

То есть, собирать .deb пакет отдельным скриптом? А этап сборки бинарей при этом можно возложить на существующий CMakeLists.txt?

kiverattes ★☆ ()
Ответ на: комментарий от kiverattes

В каталоге debian создать минимальный набор для создания пакета. Тогда сборку самого пакета можно запустить в корне проекта (где и лежит debian) через dpkg-buildpackage -uc -us (или debuild). Вот это последнее может сделать пользователь напрямую и/или это можно добавить в CMakeLists.txt для того, чтобы раздавать готовый бинарный пакет.

gag ★★★★★ ()
Ответ на: комментарий от gag

А для чего иметь возможность отдельного запуска dpkg-buildpackage при условии, что проект собирается только с помощью CMake? То есть, у меня нет обычного Makefile. Как юзер соберёт проект без CMake?

kiverattes ★☆ ()
Ответ на: комментарий от kiverattes

Сорри, в свой CMakeLists.txt ничего вставлять не надо. А в debian/rules и будет вызов cmake. Т.е. при вызове dpkg-buildpackage будет через cmake собран код, а потом ужат в пакет.

gag ★★★★★ ()
Ответ на: комментарий от gag

Почитал этот топег: Правильная сборка deb-пакета

Кто-то пишет, что правильнее всего собирать пакет через dpkg --build. Как это относится с dpkg-buildpackage? Может скайп/джаббер есть? )

kiverattes ★☆ ()
Последнее исправление: kiverattes (всего исправлений: 1)
Ответ на: комментарий от kiverattes

Может скайп/джаббер есть? )

Лучше тут общайтесь, может еще кому пригодится.

Manhunt ★★★★★ ()
Ответ на: комментарий от kiverattes

Выкладывай исходники - соберу, покажу мастер-класс.

anonymous ()

В 99,99% случаев хороший, годный пакет можно собрать только с помощью dpkg-buildpackage (или обёрток вокруг него), написав соответствующие инструкции в директорию debian/. Остальными способами можно сделать (в зависимости от рук и инструментов) от абсолютного непотребства до относительно рабочих в нетребовательных ситуациях.

JackYF ★★★★ ()
Ответ на: комментарий от JackYF

Да, пойдём этим путём. Всё собралось. Осталось настроить всякие пути, а то засираются каталоги в неожиданных местах.

kiverattes ★☆ ()

Лучше ограничиться cmake - если всё правильно сделать, этот же код будет собирать пакеты под другие дистрибутивы без перекомпиляции. Каталог debian это ужасный костыль - ничего дистро-специфичного в приложении быть не должно.

slovazap ★★★★★ ()
Ответ на: комментарий от kiverattes

использование cdbs/debhelper в rules это очень знатная тема. по сути всё делается указанием пары префиксов для cmake.

melkor217 ★★★★★ ()
Ответ на: комментарий от slovazap

Каталог debian это ужасный костыль - ничего дистро-специфичного в приложении быть не должно.

От лишней папки в исходниках вряд ли кому-то станет плохо. К тому же, обычно скрипты сборки (ту самую папочку debian) часто выносят в отдельный репозиторий.

melkor217 ★★★★★ ()
Ответ на: комментарий от gag

Всё здорово, но не всегда удобно привязывать сборку пакета к дебиану. Поэтому мы в своём проекте используем ant-deb для аналогичной задачи.

AlexM ★★★★★ ()
Ответ на: комментарий от AlexM

А почему привязывать к дебиану, собрать деб везде можно изловчиться, везде наверное соответствующие тулзы есть, даже наверное под вендою.

kiverattes ★☆ ()
Ответ на: комментарий от kiverattes

Попробуйте, что сказать. О результатах потом отпишетесь. Предвижу зубовный скрежет и отсиженный зад, там довольно обширное хозяйство, построенное на соглашениях и умолчаниях.

AlexM ★★★★★ ()
Ответ на: комментарий от AlexM

Так а всё, давно уже решена задача. Вон выше я там чё-то отписывал, мол всё, счастье есть.

kiverattes ★☆ ()
Ответ на: комментарий от slovazap

Каталог debian это ужасный костыль - ничего дистро-специфичного в приложении быть не должно.

Например, в ядре есть debian. Кстати, интересно, когда Линуса уговорили.

gag ★★★★★ ()
Ответ на: комментарий от AlexM

Всё здорово, но не всегда удобно привязывать сборку пакета к дебиану.

В смысле дебиан-пакета?

Ну, если бы я сидел под федорой или сусей, то, пожалуй, согласился бы, что мне всё равно, как там именно в дебиане оно работает, лишь бы я мог просто сгенерировать deb. А, кстати, debhelper, dpkg-dev & Co нет для отличных от дебиана дистрибутивов? Ведь с rpm я могу работать под дебианом. Или есть ограничения?

gag ★★★★★ ()
Ответ на: комментарий от gag

Ну, притащить-то можно, но насколько я помню,мейнтейнеры этим, как правило, не заморачиваются. Тем более, если действительно нужно собирать под какую-то определенную версию дебиана, то проще развернуть виртуалку или вообще chroot

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