LINUX.ORG.RU

Как сделать установочный пакет

 , ,


0

1

Добрый день.

Искал везде инфу, но так до конца и не понял как быть. Я написал десктопную программу на Qt 5.2 и хочу ее распространять под все платформы. С Windows и Mac я разобрался, но как быть с линуксом?

У меня есть скомпилированный выполняемый файл и как мне сделать пакет, который бы при установке создал иконку на рабочем столе (или в меню с программами), а также чтобы потом все это удалялось правильно? К тому же выполняемый файл имеет зависимости от некоторых сторонних библиотек (Qt5, и другие). Как определить, что нужно с собой положить в этот пакет, куда записывать файлы, ну и так далее... ?

Заранее спасибо за ответ.

P.S. В качестве примера смотрел пакет от skype.com, но толком ничего не понял.


как мне сделать пакет, который бы при установке создал иконку на рабочем столе (или в меню с программами)

Напишите для него desktop-файл и положите в /usr/share/applications/.

К тому же выполняемый файл имеет зависимости от некоторых сторонних библиотек (Qt5, и другие). Как определить, что нужно с собой положить в этот пакет, куда записывать файлы, ну и так далее... ?

Руководствуйтесь Linux Standard Base. Это не самая удачная спецификация, и не все дистрибутивы следуют ей «из коробки», но лучше так, чем вообще ничего.

Возможно, для Linux лучше будет опубликовать исходники с инструкциями для сборки.

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

Ну если зайти на сайт Скайп, (http://www.skype.com/ru/download-skype/skype-for-linux/) то он предлагает такие варианты:

Ubuntu 10.04 32-bit</option> Ubuntu 12.04 (multiarch) Debian 7.0 (multiarch) Fedora 16 32bit OpenSUSE 12.1 32bit Dynamic - это что такое не знаю.

Это как пример. То есть, нужны самые распространенные дистрибутивы.

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

А куда класть файлы библиотеки Qt ? Просто у меня коммерческая версия. К тому же используются еще некоторые другие библиотеки.

Куда класть сам выполняемый файл? А также иконки...

Ну и собственно, как создать пакет на основе моих файлов?

P.S. Исходники открыть не могу, это коммерческий продукт.

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

пакет под какой из 400 дистрибутивов вас интересует? ;)

Ну уж так не пугай, пакетных менеджеров несколько меньше. :-)

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

Ну и собственно, как создать пакет на основе моих файлов?

deb-пакет? http://www.debian.org/doc/manuals/maint-guide/. rpm-пакет? Не знаю, погуглите «rpm build howto».

А куда класть файлы библиотеки Qt ? Просто у меня коммерческая версия. К тому же используются еще некоторые другие библиотеки.
Куда класть сам выполняемый файл? А также иконки...

Варианты:

  1. /opt/имяприложения, там директории bin для исполняемых файлов, lib для всех библиотек, share для иконок и т.п.
  2. приложение в /usr/bin, все свои (не-LSB и не указанные в зависимостях пакета) библиотеки в /usr/lib/имяприложения (чтобы не конфликтовать с установленными из пакетов, если таковые будут), иконки в /usr/share/icons, прочие данные в /usr/share/имяприложения.

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

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

А куда класть файлы библиотеки Qt ?

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

AS ★★★★★
()

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

x_hash
()

да поправят меня гуру, но имхается мне, что нужно копать на предмет make-файла и checkinstall как сборщик rpm/deb-пакета.

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

(либо есть у того, кто лучше тебя умеет пакеты под свой дистрибутив собирать).

Он исходники раздавать не собирается, так что перепаковкой никто заниматься не будет. И да, ALT Linux тот же вполне есть на десктопах. Особенно в районе СНГ. Но аккуратно собранный rpm-пакет, если не задействовать специфику конкретного дистрибутива, вполне встаёт и в Федоре, и в SuSe, и в ALT. Так что не всё так уж страшно.

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

Спасибо всем за ответы... Я в Линуксе только начинающий :)

В общем, скомпилил я Qt5 статически, сделал каталог для пакета и добавил описание и иконки. Все нормально, но прога не стартует. Разобрался, что она не находит на чистой системе нужных библиотек (тестирую под ubuntu 13).

ldd дал такой список:

	linux-gate.so.1 =>  (0xb770d000)
	libX11-xcb.so.1 => /usr/lib/i386-linux-gnu/libX11-xcb.so.1 (0xb76f1000)
	libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb76e8000)
	libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb76cd000)
	libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb76ac000)
	libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb76a1000)
	libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb756c000)
	libicui18n.so.48 => /usr/lib/i386-linux-gnu/libicui18n.so.48 (0xb7396000)
	libicuuc.so.48 => /usr/lib/i386-linux-gnu/libicuuc.so.48 (0xb7230000)
	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb722b000)
	libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb7127000)
	librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb711e000)
	libGL.so.1 => /usr/lib/i386-linux-gnu/mesa/libGL.so.1 (0xb70c5000)
	libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb70a9000)
	libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb6fc0000)
	libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6f7d000)
	libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb6f60000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6dac000)
	/lib/ld-linux.so.2 (0xb770e000)
	libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb6da5000)
	libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb6da1000)
	libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb6d9a000)
	libicudata.so.48 => /usr/lib/i386-linux-gnu/libicudata.so.48 (0xb5c29000)
	libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb5be8000)
	libglapi.so.0 => /usr/lib/i386-linux-gnu/libglapi.so.0 (0xb5bd1000)
	libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb5bbe000)
	libXdamage.so.1 => /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xb5bba000)
	libXfixes.so.3 => /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xb5bb4000)
	libxcb-glx.so.0 => /usr/lib/i386-linux-gnu/libxcb-glx.so.0 (0xb5b9c000)
	libxcb-dri2.so.0 => /usr/lib/i386-linux-gnu/libxcb-dri2.so.0 (0xb5b95000)
	libXxf86vm.so.1 => /usr/lib/i386-linux-gnu/libXxf86vm.so.1 (0xb5b8f000)
	libdrm.so.2 => /usr/lib/i386-linux-gnu/libdrm.so.2 (0xb5b82000)

Вопрос в том, как получить список пакетов с этими библиотеками, чтобы добавить в зависимости ?

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