LINUX.ORG.RU

Правильное создание пакета для Debian/Ubuntu

 , , , ,


0

1

Я клонировал amarok из git (git clone git://anongit.kde.org/amarok.git), переименовал каталог в amarok-2.8.1-git, внутри него запустил dh_make, выбрал multiple binaries, файлы внутри debian не трогал, запустил dpkg-buildpackage -rfakeroot -j9

Сборка завершилась успехом, в amarok-2.8.1-git/debian/tmp у меня лежит каталог usr со всем необходимым содержимым - bin/бинарники, lib/либы и так далее. Тем не менее, в созданных .deb пакетах (amarok и amarok-doc) присутствует только /usr/share/doc. Скажите, пожалуйста, что я сделал не так и как сделать правильно.

★★

Последнее исправление: CYB3R (всего исправлений: 1)

Возьми spec из sid, посмотри, какие патчи накладывают в Debian. Он сделан для версии 2.8.0. Скорее всего, и тебе подойдет. Сделай отдельный branch для debian и залей туда этот debian. Измени changelog, пробуй собрать.

http://anonscm.debian.org/cgit/pkg-kde/kde-extras/amarok.git/tree/debian

Вводных у тебя никаких нет.

файлы внутри debian не трогал,

Никто не знает, что у тебя там. Откуда вообще папка debian? Апрстрим свой debian делает? Забудь про него. Использую из дистрибутива - там правильнее готовят.

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

Нальзя определенно сказать из твоего рассказа. Скорее всего, все неправильно. :)

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

Каталог debian является порождением команды dh_make, выполненного мною.

Думаю, патчи тут не важны - что-то не так я сделал именно при использовании сборочной системы debhelper. Если нужны какие-то файлы из debian - я их процитирую.

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

Думаю, патчи тут не важны - что-то не так я сделал именно при использовании сборочной системы debhelper. Если нужны какие-то файлы из debian - я их процитирую.

Все овтеты тут:

https://www.debian.org/doc/manuals/maint-guide/

Еще раз: скачай рабочий спек из Debian и собирай с ним. Если хочешь обязательно со своим, то все равно скачай рабочий спек из Debian и сравнивай, что там, а что у тебя.

Если ты думаешь, что dh_make сразу делает подходящий для использования спек, то это сильно зря. Он только делает начальную дебианизацию. В самых простых случаях он может сразу заработать, но это никак не касается amarok. В любом случае требуется последующее ручное вмешательство.

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

Я сравнил спеки от 2.8.0 из убунты и созданные dh_make спеки, увидел разницу в файлах amarok.install, amarok-common.install, amarok-utils.install - у меня их нет, в спеке от убунты - там весь состав соответствующих пакетов

Из инструкции по ссылке:

Если есть файлы, которые необходимо установить в пакет, но стандартная команда make install не делает этого, поместите их имена и пути назначения в файл install.

Как это понимать? Чистый make install в случае с Amarok всё делает отлично, да и в debian/tmp всё то, что должно бы оказаться в пакете, присутствует.

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

После того, как я взял из Ubuntовских исходников *.install и положил в свои, клонированные из Гита, dpkg-buildpackage дал мне нормальные пакеты с содержимым. Вопрос: почему они не образоивались сами/почему они оказались необходимы, несмотря на то, что я прочитал в мане?

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

Как это понимать? Чистый make install в случае с Amarok всё делает отлично, да и в debian/tmp всё то, что должно бы оказаться в пакете, присутствует.

А какая структура каталогов в debian/tmp? Он случайно не в /usr/local ставит?

А что в debian/rules?

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

Слева - Убунтовский, справа - мой.

Так, ну вроде dh должен запускать dh_install. У меня пока с ходу предположение:

Ты создал multiple binaries. Поэтому dh_install уже ищет файлы *.install для каждого пакета. Те, пакеты, которые должны установиться, у тебя в debian/common указаны (их несколько? а какие?). Иначе он не сможет решить, какие файлы в какой пакет направлять. Поэтому ничего не делает. В Debian, например, из одного исходника собираются несколько пакетов: amarok, amarok-common, amarok-doc, amarok-utils, amarok-dbg. Раз у тебя нет файлов *.install, то как он узнает, какие файлы в какой пакет направлять, если они все в куче (утилиты с бинарниками amarok). Вот поэтому файлы *.install обязательны.

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

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

у тебя в debian/common

В debian/control только. Опечатался.

Zubok ★★★★★
()

А что-нибудь компилял? Весь процесс, по идее, в rules описан. Там можно вручную install делать. А можно через dh_install, он как раз через файлы. Ну и вывод интересно было бы посмотреть, конечно же.

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

В моём control - один лишь amarok. В Ubuntu-вском - amarok, amarok-common и прочие. Попробовал single binary без изменения вообще каталога debian - получил отличный пакет со всем тем, что должно быть в Амароке, спасибо! То есть, суть такова: если я указываю multiple binary - я обязан расписать, что в какой пакет пойдёт, иначе, ничего не будет?

Немного странно, что Амарок поделили на пакеты amarok-common, amarok, amarok-utils. amarok требует amarok-common, amarok-utils; amarok-utils требует amarok; amarok-common в одиночку бесполезен.

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

Немного странно, что Амарок поделили на пакеты amarok-common, amarok, amarok-utils

amarok-common — потому что архитектурно независимый.
amarok-utils — потому что

This package contains command line utilities that are typically used by Amarok media player but might also be useful on systems without Amarok installed. They are designed to be lightweight as they do not depend on KDE libraries.

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

Косяк мейнтейнеров?

Скорее невнимательность. У пакета amarok-utils не описано явных зависимостей, только автоматические по
Depends: ${shlibs:Depends}, ${misc:Depends}
А в последних версиях amarokcollectionscanner стал зависеть от libamarokshared.so, которая в пакете amarok, который и стал тянуться по директиве shlibs. Можешь повесить им баг, пусть либо выдирают libamarokshared.so (возможно, с другими библиотеками) в какой-нибудь пакет amarok-libs, либо содержимое amarok-utils вносят в amarok, а сам пакет дропают.

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

пусть либо выдирают libamarokshared.so (возможно, с другими библиотеками) в какой-нибудь пакет amarok-libs

Я смотрю, что в Debian эту библиотеку засунули как раз в amarok-utils.

https://packages.debian.org/sid/i386/amarok-utils/filelist

И при этом совершенно понятно, что amarok зависит от amarok-utils (из-за библиотеки). Но зато -utils без amarok будут работать.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 4)
Ответ на: комментарий от redgremlin

В Росе, к слову, библиотеки амарока аж на 6 пакетов libamarok* раскиданы, о как. Хрен знает зачем, на самом деле, ибо всё остальное, кроме скриптов, в основном пакете, безо всяких amarok-utils.

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