LINUX.ORG.RU

Правильная сборка deb-пакета (часть 2)


0

1

http://www.linux.org.ru/forum/general/5401371 - часть 1

Во второй части попытаюсь упорядочить ту инфу, что получил о сборке пакетов на этом форуме, а также на unixforum.org. Debian - дистрибутив на котором полгода назад я решил остановиться, он более стабилен чем многие другие дистрибутивы, и хорошо документирован. Использую репозитории «stable („lenny“), а также некоторые проприетарные: opera, google, qutim. Другие использовать не хочу, так как не хочу нарушать стабильнось своей системы. К сожалению в репозиториях есть не всё, приходится собирать программы из исходников. Меня интересует как создать пакет программы, поставляемой в виде исходников и как создать пакет проприетарной программы, чтобы этот пакет не нанёс урона стабильности системы как при его установке, так и при удалении.

Убедительно прошу не отсылать меня к руководствам. У меня и так некоторые руководства по сбрке deb-пакетов имеются и даже распечатаны. Вот эти:
http://www.debian.org/doc/maint-guide/
http://wiki.debian.org/DebianRussian/DebinstPackages
http://wiki.debian.org/DebianRussian/deb-inside
http://www.opennet.ru/base/sys/debian_backport.txt.html

Многое я из этих руководств не понимаю. Например во всех них сказано, что нужно использовать инструмент dh_make. А вот make для компиляции я так понимаю использовать не нужно, dh_make сама вызовет make и создаст скелет будущего пакета (каталог debian с файлами control и rules). Затем нужно подредактировать файлы в каталоге debian: control, changelog, сценарии preinst, postinst и другие. После окончательная сборке пакета и его упаковка осуществляется dpkg-buildpackade. Вот тут начинается и первое разногласие. Разные статьи говорят о разных инструментах: dpkg-buildpackade, dpkg --build, dpkg-deb. В первой части мне сказали, что лучше использовать dpkg --build.

Второй вопрос. Может я чётко не понимаю как действует dh_make, но вот что непонятно из её синтаксиса:

dh_make -e ваш@электронный.адрес -f а../архив.orig.tar.gz
Такой командой согласно первой статье следует запускать dh_make. Я вот не понимаю зачем нужна опция »-f а../архив.orig.tar.gz", без этой опции я получал ошибку, когда пытался собрать пакет libtorrent (подробно все попытки описаны в первой части):
Could not find libtorrent_0.12.orig.tar.gz
Either specify an alternate file to use with -f,
or add --createorig to create one.

Зачем мне нужен архив исходников, если этот архив уже распакован и в каталоге, куда распаковано его содержимое я сейчас нахожусь? А если исходники я получал вообще не из архива, а с помощью svn как в случае с libtorrent.

Дальше. А конфигурировать программу перед компиляцией надо или это тоже сделает dh_make. Просто некоторые программы конфигурируются с помощью configure, некоторые с помощью autoconf.sh+configure, некоторые с помощью cmake. В первой статье сказано что нужно редактировать Makefile.am или Makefile.in. Означает ли это, что ./configure запускать не нужно, а все параметры передаваемые этому скрипту вручную прописать в Makefile.am или Makefile.in? А как быть в случае с cmake? А как быть если программа компилируется не при помощи make, а при помощи scons?

И наконец, как делать пакеты проприетарных программ. Например такая программа как vmware устанавливается при помощи запуска бинарного файла VMware-Workstation-Full-7.1.0-261024.x86_64.bundle, а удаляется вообще неизвестно как. Возможно ли сдалать из неё пакет чтобы она могла корректно удаляться при помощи aptitude?

★★★★★

>Зачем мне нужен архив исходников, если этот архив уже распакован и в каталоге, куда распаковано его содержимое я сейчас нахожусь?

Он не нужен, но тогда вместо опции -f <путь-к-архиву> нужно использовать --createorig и dh_make создаст его самостоятельно. То же самое написано в сообщении об ошибке.

reader ()

А конфигурировать программу перед компиляцией надо или это тоже сделает dh_make.

"debian/rules build" runs "dh build"; which in turn runs the following:

  dh_testdir
  dh_auto_configure
  dh_auto_build
  dh_auto_test

dh_auto_configure usually executes the following if ./configure exists (arguments abbreviated for readability).

  ./configure --prefix=/usr --sysconfdir=/etc--localstatedir=/var ...

http://www.debian.org/doc/maint-guide/ch-dreq.en.html#s-rules

А как быть в случае с cmake? А как быть если программа компилируется не при помощи make, а при помощи scons?

Смотреть в сторону cdbs.

reader ()

>И наконец, как делать пакеты проприетарных программ. Например такая программа как vmware устанавливается при помощи запуска бинарного файла VMware-Workstation-Full-7.1.0-261024.x86_64.bundle, а удаляется вообще неизвестно как. Возможно ли сдалать из неё пакет чтобы она могла корректно удаляться при помощи aptitude?

Насчет Vmware не знаю. Например, бинарник с сайта Nvidia это просто набор блобов + скрипты, которые распаковываются и затем уже запихиваются в deb.

reader ()

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

novitchok ★★★★★ ()

Если нужно создать пакет, не требующий зависимостей, можно просто упаковать сперва содержимое в tar.gz и затем сконвертировать его в deb с помощью alien (конвертация тарбола в деб пакет).

Я так делал.

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

firestarter писал

Если нужно создать пакет, не требующий зависимостей, можно просто упаковать сперва содержимое в tar.gz и затем сконвертировать его в deb с помощью alien (конвертация тарбола в деб пакет).

Ну возможно и можно упаковать /opt/vmware в тарбол, но этого мало. vmware взаимодействует с ядром с демонами, а значит при установке изменяет системные файлы. Значит нужен инструмент, который при установке отслеживал бы изменение файловой системы.

novitchok писал

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

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

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

reader

Смотреть в сторону cdbs.

Что-что за ссылку вы мне дали?

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