LINUX.ORG.RU

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


0

1

Заморочен я этим вопросом. Гуглёж и вопросы на других форумах сказали что для сборки deb-пакета могут использоваться следующие способы:
с помощью checkinstall
с помощью dpkg --build
с помощью dpkg-buildpackade
с помощью dh_make

Во-первых, статьи в которых это было описано противоречат друг другу, я так и не понял какой из четырёх перечисленных способов является более правильным.
Во-вторых, данный способ пригоден только для того сборки пакетов программ, скомпилированных с помощью make. А как быть с программами, что компилируются с помощью scons, или программами, что устанавливаются с помощью запуска бинарного файла (например firefox, skype, vmware).

Я читал, что deb-пакет состоит из: архива data.tar.gz, который содержит все файлы включаемые в пакет, скриптов preinst, postinst, config и других, а также файла control. Ну с control всё понятно, в нём содержится информация мейнтейнера, наиболее выжной здесь является информация о зависимостях, которые можно вычислить если собирать пакет в чистой системе. А вот где взять скрипты и где make сохраняет файллист с помощью которого можно собрать data.tar.gz? И опять же если не make?
И ещё вопрос, а сборкой пакетов в принцыпе возможно заниматься если не знаешь bash-скриптинг или всё же придётся изучить?

★★★★★

> с помощью checkinstall
Точно не самый правильный.

с помощью dpkg-buildpackade

Использую этот.

А вот где взять скрипты и где make сохраняет файллист с помощью которого можно собрать data.tar.gz? И опять же если не make?

debian/rules - исполняемый файл, занимающийся сборкой пакета. Попробуйте сделать apt-get source для программы, которая собирается при помощи scons и посмотреть, как он для неё устроен.

AITap ★★★★★ ()

>с помощью checkinstall

с помощью dpkg --build

с помощью dpkg-buildpackade


с помощью dh_make



Брр. Здесь путаются вещи разного назначения и порядка.

http://www.debian.org/doc/maint-guide/ - читай.

JackYF ★★★★ ()

>программами, что устанавливаются с помощью запуска бинарного файла (например firefox, skype, vmware)

например firefox, skype, vmware

например firefox



апупеть .... зайди сюда: http://releases.mozilla.org/pub/mozilla.org/firefox/releases/ , потом в директорию любого релиза, затем в директорию source и объясни мне, что там за тарболы лежат, и самое главное, покажи мне «бинарник с помощью которого оно запускается» ....

по сабжу .... а тут: http://www.debian.org/doc/manuals/maint-guide/index.ru.html не пробовал почитать? ну или хотябы тут: http://www.debian.org/doc/manuals/maint-guide/ch-final.ru.html#s-build

novitchok ★★★★★ ()

Ну раз уж руководство на сайте Дебиана выложено значит оно самое правильное.

Если я прочитал его не слишком по диагонали то понимаю следующее:
1.вместо make нужно использовать dh_make, которая не только компилирует программу, но и формирует каталог debian
2.dpkg-buildpackage создаёт deb-пакет из данных в каталоге debian, содержимое файлов в каталоге предварительно подредактировать

А никто не знает где можно взять исходники пакета gentoo, на примере которого в руководстве объясняется процесс? Хочу тоже попробовать. Кстати я не понимаю как вообще работает dh_make.

Пока решил попробовать на пакете libtorrent. Правда не получается. С помощью make всё компилировалось нормально, а тут выдаёт:

Could not find libtorrent_0.12.orig.tar.gz
Either specify an alternate file to use with -f,
or add --createorig to create one.
Кстати я не понимаю, в руководстве написано нужно давать команду:
dh_make -e ваш@электронный.адрес -f ../gentoo-0.9.12.tar.gz
Зачем "-f ../gentoo-0.9.12.tar.gz", нам же нужен не тарбол, а наоборот из тарбола программу компилировать. А если я исходники получит не из тарбола, а при помощи svn?

sunny1983 ★★★★★ ()

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

с помощью checkinstall

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

с помощью dpkg --build

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

man dpkg-deb
(dpkg --build на самом деле вызывает dpkg-deb --build)

с помощью dpkg-buildpackade

Это средство для автоматизации сборки пакетов, фронтэнд для других утилит. Автоматически компилирует, подписывает, упаковывает и грабит корованы.

с помощью dh_make

Это утилита для быстрой сборки deb-пакетов разных видов из исходников.

где взять скрипты и где make сохраняет файллист с помощью которого можно собрать data.tar.gz

Вручную упаковывать не надо, dpkg-deb сам все упакует. Файл control надо будет написать (man deb-control). Скрипты тоже, если нужны. Маны про все есть.

а сборкой пакетов в принцыпе возможно заниматься если не знаешь bash-скриптинг или всё же придётся изучить?

Можно. Но хотя бы основы лучше изучить, в жизни пригодится.

proud_anon ★★★★★ ()

proud_anon писал

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

То есть, если checkinstall собирает пакет без скриптов, то и «make install» тоже устанавливает программу без скриптов. А как же некоторые пакеты, которые без скриптов установить в принцыпе невозможно: slim например или mdadm?

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

>если checkinstall собирает пакет без скриптов, то и «make install» тоже устанавливает программу без скриптов

Я имел в виду, что, если я не ошибаюсь, checkinstall не позволяет добавлять preinstall/postinstall-скрипты. Но я на самом деле ошибаюсь, позволяет.

proud_anon ★★★★★ ()

Вообще-то я имел в виду не checkinstall, а все методы, то есть и checkinstall, и dpkg-deb. А ещё я имел в виду не preinstall/postinstall-скрипты, добавляемые мейнтейнером, а preinstall/postinstall-скрипты добавляемые автором.

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