LINUX.ORG.RU

Сделать пакет для Debian


0

1

Здравствуйте. Есть у меня одна программулина на Qt написанная. Она платная. Хочу я ее на Линукс портировать чтобы народ ее качал, радовался и покупал ее. Прочитав ман о том как сделать пакет возникли вопросы

1) У меня же лицензия есть. Как мне сделать чтобы юзеру надо было «ОК, я согласен» нажать перед установкой? Хотелось бы окно. Там вроде какие-то скрипты есть в DEBIAN (preins, postinst). Вот надо их заюзать как-то.

2) Дебиан (и стабл и тестинг) содержит старое ПО, старее чем говно мамонта. А я с новой версией Куте собирал. И че делать мне теперь? Собирать статически не хочется. Где юзер возьмет новые библиотеки? Или мне их самому распространять?

3) А есть утилитка какая-нибудь которой скормить бинарник а она тебе список зависимостей вывалит? Не ldd, а именно пакетов.

Ну вот вроде бы все вопросы. Кто-нибудь уже пакеты делал?



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

Или мне их самому распространять?

в пакет положи нужные версии, куда-нибудь в /opt

А есть утилитка какая-нибудь которой скормить бинарник а она тебе список зависимостей вывалит?

для этого в спеках есть shlibs:Depends, насколько я понимаю

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

Че за /opt? А он у людей в путях есть?

для этого в спеках есть shlibs:Depends, насколько я понимаю

Это что такое? В Debian есть файл control, там надо зависимости от пакетов писать. А это куда добавлять?

facelift
() автор топика

>Как мне сделать чтобы юзеру надо было «ОК, я согласен» нажать перед установкой? Хотелось бы окно. Там вроде какие-то скрипты есть в DEBIAN (preins, postinst). Вот надо их заюзать как-то.
За это можно и по пальцам. Делай окно при первом запуске. Так Опера делает, например.

>Дебиан (и стабл и тестинг) содержит старое ПО, старее чем говно мамонта. А я с новой версией Куте собирал. И че делать мне теперь?
Не выёживаться и собрать с версией в дистрибутиве или положить все Qt либы и наслаждаться LD_LIBRARY_PATH, но это не Ъ.

Deleted
()
Ответ на: комментарий от lazyklimm

Какое же это говно - пакетный менеджер оказывается.

man hier

Дык нету его у меня. И у людей тоже его нет. Папка есть а в путях его нету. Есть /lib/i386-linux, /usr/lib, /usr/local/lib, /lib, /usr/lib.

Может его туда и запихать. Прямо так как есть. На то место где они и должны быть. У меня зависимости от libQtGui.so.4 а это симлинк на libQtGui.so.4.6.3 вот есть я туда запихаю новые дллки и симлинки изменю юзер не очень обидется?

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

Не выёживаться и собрать с версией в дистрибутиве или положить все Qt либы и наслаждаться LD_LIBRARY_PATH, но это не Ъ.

Пофиг что не Ъ. LD_LIBRARY_PATH - вот это вот куда запихать? Кароче надо как под виндой сделать - все в одну папку свалить и чтобы бинарь потом в той папке дллки и искал.

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

BTW, там пара багов в 4.6.1 и сигнала одного нет - он только в новой версии. Поэтому со старой куте будет глючить у меня.

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

Я кароче сделаю папку /usr/lib/PROG_NAME и туда все скину. Но как сказать чтобы бинарь там дллки искал?

facelift
() автор топика

http://www.debian.org/doc/debian-policy/
Здесь всё, что нужно знать о пакетах для Debian.

1) debconf
2) Соберите со старой версией Qt.
Можно, конечно, поднимать свой репозиторий с новым Qt и пакетом со своей программой, но это может сломать всю остальную систему. Может быть, вариант со статической линковкой или всем, что нужно, в /opt не так уж и плох.
3) p d-shlibs - Debian shared library package building helper scripts

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

Хорошо. Я все это в /opt запихаю (смотрю щас как раз как chrome сделан) но а как бинарю сказать чтобы он там дллки искал?

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

Какое же это говно - пакетный менеджер оказывается.

обоснуй

Дык нету его у меня

дык создай

У меня зависимости от libQtGui.so.4

перелинкуй на свои, сделай скрипт-враппер

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

Или под Линкуксом так же как и под виндой дллки ищутся сначала в папке с бинарником, а уже потом в путях? Я не знаю просто.

facelift
() автор топика
Ответ на: комментарий от facelift
QMAKE_LFLAGS += "-Wl,-rpath,/usr/lib/PROG_NAME"

скорее всего. Как раз почти такую же проблему только что помогли решить.

Кстати, как ты собираешь пакет? Курил ман мэйнтейнера, но так и не понял что делать с qmake.

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

>У меня зависимости от libQtGui.so.4 а это симлинк на libQtGui.so.4.6.3 вот есть я туда запихаю новые дллки и симлинки изменю юзер не очень обидется?

Так делать нельзя.

Deleted
()
Ответ на: комментарий от facelift

Блин, гуглохром весь в /opt лежит. Там и дллки. А в /usr/bin симлинк на /opt/google/chrome. И там дллки лежат. Но там не бинарь а скрипт, и он путь и изменяет. Типа LD_LIBRARY_PATH=$HERE:$HERE/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

Ну все ясно как с дллками быть. А че с лицензией делать?

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

У вас там что-то болело? У меня всё работало. А почему так было написано — инжой ё говнокод, который там уже есть :}

Deleted
()
Ответ на: комментарий от Kalashnikov

Курил ман мэйнтейнера, но так и не понял что делать с qmake.

Причем здесь пакет? qmake собирает бинарь, а пакет уже сам. Вот тут мануал хороший лежит http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/

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

Кароче осталось

1) Как окошко показать с лицензией?

2) Как ярлычки добавить на гномовский и кутешный столы рабочие и в меню?

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

qmake собирает бинарь

Эээ, qmake генерит мэйкфайл же. Он то и нужен для сборки пакета собственно, но я так и не осилил как его генерить правильно. Толи просто у себя на машине сгенерить раз и собрать пакет с этим мэйкфайлом, толи как-то это в предустановочные скрипты затолкать. Потом осознал что ещё будут те же проблемы с Qt что у тебя и забил.

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

>У койота болело из-за хлама в корне
Так он сам его там создал.

>у юзеров болело от необходимости плясать с LD_LIBRARY_PATH
С ним плясать было не надо, оно там уже написано было. Что-то не работало у людей когда либ не хватало.

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

Так он сам его там создал.

Ну да, щас походу взялся разгребать.

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

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

Генери, собирай, все в /opt, пляши с LD_LIBRARY_PATH и вперед, все ок.

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

>QtCreator ругается на них потому что они не бинарники, ему приходится LD_LIBRARY_PATH кормить.
Creator же линкует с системными либами и запускаться должно напрямую из него же без враппера, нет?

Deleted
()
Ответ на: комментарий от Kalashnikov

Ну кто не согласится с тем что пакетный менеджер - это говно? Да и почему линукс не ищет дллки в папке с бинарником? И какой тогда толк от пакетного менеджера? Лищний гемор с зависимостями, которые все равно решаются тем что все дллки ты таскаешь с собой. Я вот щас ставил pppoe без интернета. Ну и накой черт все это надо? Один setup - вот что решает.

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

Это было когдя я плагины тыкал, либы он точно найти не мог. В пути к бинарю указал скрипт - выругался, пришлось указывать настоящий бинарь и в переменные окружения добавлять нужный LD_LIBARY_PATH.

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

Не виноватая я, к плагинам отношения не имею :)

Deleted
()
Ответ на: комментарий от facelift

>Ну кто не согласится с тем что пакетный менеджер - это говно?
Да полно народу.

>Да и почему линукс не ищет дллки в папке с бинарником?
Потому что дыра.

Deleted
()
Ответ на: комментарий от facelift

Ну кто не согласится с тем что пакетный менеджер - это говно?

Все кроме упоротых вендузятников.

Да и почему линукс не ищет дллки в папке с бинарником?

Что-что, дллки? Потому что они шарятся между софтом и для этого лежат в заранее предназначенных местах и искать их нигде не надо. Если очень хочется, $ORIGIN тебе в RPATH.

Kalashnikov ★★★
()

Речи твои свидетельствуют о том, что ты имеешь очень искажённое представление о распространении программ под Unix. Закажи лучше дебианизацию кому-нибудь, кто в теме.

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

Ну кто не согласится с тем что пакетный менеджер - это говно? Да и почему линукс не ищет дллки в папке с бинарником? И какой тогда толк от пакетного менеджера? Лищний гемор с зависимостями, которые все равно решаются тем что все дллки ты таскаешь с собой. Я вот щас ставил pppoe без интернета. Ну и накой черт все это надо? Один setup - вот что решает.

Вкуснотища какая. В толксы бы этот топик...

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

Вот тут ты не прав.

1) То, что у тебя ПО будет лагать с более старыми либами, скажи спасибо

  • ребятам из нокиатрольтеха
  • себе, за то что не адаптировал код

и вообще, почему Qt? Почему на GTK или wxWidgets?

2) Почему дебиан? Собири под Ubuntu и Fedora для домохозяек. Остальные, как правило, не дураки - если надо, то запилят.

Да и почему линукс не ищет дллки в папке с бинарником?

патамушта это

  • не правильно
  • не винда
  • есть шелл и LD_PRELOAD
solo1h
()
Ответ на: комментарий от JackYF

Я даже кажется знаю человека, который может нормально все под Линукс запилить) У него правда обычно другая задача - с линукса в винду все перенести)

Топикстартер, судя по всему тебе и правда нужен кто то знающий для этого дела. Поищи среди знакомых, если код не можешь никому доверить, если можешь - то создай тему в разделе Job этого форума. Так будет проще, поскольку мозги у тебя явно работают не в том направлении, в котором надо. Привык к другим вещам. А перестроиться тебе будет долго и сложно.

TheKnight ★★★
()

Qt линковать только статически. Это позволит проприетарному софту иметь меньше зависимостей и с большей вероятностью работать в новых версиях дистра или в других дистрах. Требует лицензии на коммерческий Qt. Также это позволяет быть уверенным, что софт не поломается от изменения во внешней библиотеке.

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

Мы можем как-то в зависимостях указать конкретные либы? Типа: shlibs: libQtCore.so.4 и чтобы пакетный менеджер сам разрулил в каком они для этого дистра пакете?

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

Да, или же твой софт должен быть под GPL.

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

Требует лицензии на коммерческий Qt

Для статической линковки?

Да, попробуй на свежей винде свой бинарь запустить, увидишь кучу ошибок QtGUI.dll не найден.

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

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