Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Сборка .deb-пакетов из исходников (Debian)

Практика



Иногда возникают веселые проблемы: нам нужно поставить определенную программу, а нужной нам версии нет (например, PHP-5.3) и мы не можем (не хотим, нам нельзя) добавлять лишние (нестабильные, ненадежные) репозитории в нашу систему либо просто не нашли. Зато имеем исходники с оффсайта. Казалось бы что проще: взял и собрал из исходников. Но мы ведь люди ленивые и понимаем, что надо будет и в следующий раз собирать из исходников или надо будет то же самое проделать еще на нескольких машинах. Зачем?

И мы идем иным путем - собираем сам пакет для себя. Весь процесс описан в официальном руководстве, а в данной статье рассмотрим его проще.


Подготавливаем систему.

Для компиляции программы и сборки пакета нам нужны будут инструменты разработчика:

# aptitude install binutils cpp cpio dpkg-dev file gcc libc6-dev make patch perl5-5.005 dh-make debhelper devscripts fakeroot lintian debian-policy developers-reference

(подробнее о каждом пакете можно узнать в официальном руководстве руководстве)


Чтобы было удобно создадим отдельную папку, например packages, затем поместим в нее дерево исходников пакета, который будем собирать.

Итак получаем ~/pkg/pkg-1.1

Каталог с исходниками обязательно должен иметь имя типа: <packetName>-<version>.


Подготовим пакет к сборке

cd ~/pkg/
tar -c packet-3.2|gzip -9 >pkg-1.1.tar.gz
cd pkg-1.1/
dh_make -e your@email.com -f ../pkg-1.1.tar.gz

Или для архива:

mv ~/Downloads/pkg-1.1.tar.gz ~/pkg/
cd ~/pkg/
tar xvzf pkg-1.1.tar.gz
cd  pkg-1.1
dh_make -e your@email.com -f ../pkg-1.1.tar.gz

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

Будут созданы архив pkg.tar.gz и дополнительная директория ~/pkg/pkg-1.1/debian с необходимыми файлами.

$ ls
changelog
compat
control
copyright
cron.d.ex
dirs
docs
emacsen-install.ex
emacsen-remove.ex
emacsen-startup.ex
init.d.ex
init.d.lsb.ex
manpage.1.ex
manpage.sgml.ex
manpage.xml.ex
menu.ex
postinst.ex
postrm.ex
preinst.ex
prerm.ex
README.Debian
rules
packet-default.ex
packet.doc-base.EX
watch.ex

dh_make хорошо потрудился в создании файлов, вот только не все они нам нужны.


Файл control

Source: Имя пакета
Section: contrib/net - раздел
Priority: optional
Maintainer: Andry Bel <name@mail.domain>
Build-Depends: debhelper (>= 7) зависимости для построения пакета
Standards-Version: 3.7.3  - версия Debian Policy - тут я не стал вдаваться в подробности
Homepage: http://your.domain.name/name/of/project - url откуда можно скачать пакет
Package: Имя пакета
Architecture: any - архитектура для которой собран (i386,ppc,sparc и т.д.)
Depends: ${shlibs:Depends}, ${misc:Depends} - от каких пакетов зависит
Description: apache log analyzer
Apache log files analyzer, generates single-file-report in html format

Description - краткое описание пакета. На следующей строке должно быть полное описание. Внимание, первый символ должен быть пробелом.


Файл changelog:

packet (3.2-1) unstable; urgency=low
  * Initial release (Closes: #nnnn)  <nnnn is the bug number of your ITP>
-- Your Name <your@mail.name>  Wed, 03 Sep 2008 11:02:51 +0400

Вроде все понятно.


Файл copyright - вопросов нет, пример:

This package was debianized by Andry Bel <zaezzz@how-it.ru> on
Wed, 03 Sep 2008 11:02:51 +0400.
It was downloaded from http://yourdomain.name/project/name
Upstream Author(s):
       
Andry Bel <zaezzz@how-it.ru>

Copyright:      Copyright (C) 2011 Andry Bel  License:      GPL  The Debian packaging is (C) 2011, Andry Bel <zaezzz@how-it.ru> and is licensed under the GPL, see `/usr/share/common-licenses/GPL'.  # Please also look if there are files or directories which have a # different copyright/license attached and list them here.

Тут отступы обязательны.


Файл dirs - имена директорий, которые должны существовать для установки. Начальный слэш опущен.

usr/bin
usr/sbin


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

rm docs init.d.ex init.d.lsb.ex cron.d.ex manpage.* menu.ex README.Debian watch.ex packet-default.ex packet.doc-base.EX


Файлы emacsen-install.ex, emacsen-remove.ex, emacsen-startup.ex оставляем без изменений.

Файлы postinst.ex postrm.ex preinst.ex prerm.ex являются скриптами выполняющиеся до/после установки/удаления. Содержат исчерпывающие комментарии и пустой каркас.


Главный файл, rules.

Изменен:

#$(MAKE) DESTDIR=$(CURDIR)/debian/pkg install
install -m 0755 pkg $(dstdir)/usr/bin

Если его не менять, то наш пакет будет устанавливаться в корень, что естественно неприемлимо


Все готово.


Собираем:

cd ~/pkg/pkg-1.1/
dpkg-buildpackage -rfakeroot

Готово. В каталоге ~/pkg/ появился установочный файл pkg-1.1.deb.


Просмотрим его, чтобы убедиться все-ли прошло правильно:

dpkg-deb -I ../packet_3.2-1_i386.deb
dpkg --contents ../packet_3.2-1_i386.deb


Вроде все нормально. Ставим.

sudo dpkg -i ../packet_3.2-1_i386.deb
создано: 2017-05-10
обновлено: 2020-12-29
132925



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX