https://www.debian.org/doc/manuals/maint-guide/index.ru.html
Собирать будем этот пакет
hello-2.1.1
(http://s.arboreus.com/2006/11/blog-post_16.html)
1) Распакуем архив *tar.gz и зачем-то выполним команду dh_make (пункт 2.8 книги)
Shell
user@debian:~/Desktop$
user@debian:~/Desktop$ cd hello
user@debian:~/Desktop/hello$ wget ftp://ftp.gnu.org/pub/gnu/hello/hello-2.1.1.tar.gz > /dev/null
--2019-05-14 00:06:43-- ftp://ftp.gnu.org/pub/gnu/hello/hello-2.1.1.tar.gz
=> «hello-2.1.1.tar.gz»
Распознаётся ftp.gnu.org (ftp.gnu.org)… 209.51.188.20, 2001:470:142:3::b
Подключение к ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:21... соединение установлено.
Выполняется вход под именем anonymous ... Выполнен вход в систему!
==> SYST ... готово. ==> PWD ... готово.
==> TYPE I ... готово. ==> CWD (1) /pub/gnu/hello ... готово.
==> SIZE hello-2.1.1.tar.gz ... 389363
==> PASV ... готово. ==> RETR hello-2.1.1.tar.gz ... готово.
Размер (байт): 389363 (380K) (не достоверно)
hello-2.1.1.tar.gz 100%[============================================================>] 380,24K 362KB/s за 1,1s
2019-05-14 00:06:48 (362 KB/s) - «hello-2.1.1.tar.gz» сохранён [389363]
user@debian:~/Desktop/hello$ tar -xzf hello-2.1.1.tar.gz
user@debian:~/Desktop/hello$ cd hello-2.1.1/
user@debian:~/Desktop/hello/hello-2.1.1$ dh_make -f ../hello-2.1.1.tar.gz
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n] s
Maintainer name : user
Email-Address : user@debian
Date : Tue, 14 May 2019 00:07:34 +0500
Package Name : hello
Version : 2.1.1
License : blank
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. hello
uses a configure script, so you probably don't have to edit the Makefiles.
user@debian:~/Desktop/hello/hello-2.1.1$
2) Поправим исходники. В книге (пункт 3.2) правкой исходного кода называется почему-то правка Makefile. Мы же на самом деле будем править исходники.
Shell
user@debian:~/Desktop/hello/hello-2.1.1$ kate src/hello.c
Код: Выделить всё
int main (argc, argv)
int argc;
char *argv[];
{
printf ("cafebabe\n")
...
3) Теперь пересоберём пакет. (Пункт 6.1 книги.)
Сперва посмотрим, все ли сборочные завиимости удовлетворены:
Shell
user@debian:~/Desktop/hello/hello-2.1.1$
user@debian:~/Desktop/hello/hello-2.1.1$ cat debian/control | grep Build-Depends:
Build-Depends: debhelper (>= 9), autotools-dev
user@debian:~/Desktop/hello/hello-2.1.1$ dpkg -l | grep debhelper
ii debhelper 9.20150101+deb8u2 all helper programs for debian/rules
user@debian:~/Desktop/hello/hello-2.1.1$ dpkg -l | grep autotools-dev
ii autotools-dev 20140911.1 all Update infrastructure for config.{guess,sub} files
user@debian:~/Desktop/hello/hello-2.1.1$
user@debian:~/Desktop/hello/hello-2.1.1$ cat debian/control | grep Build-Depends-indep:
user@debian:~/Desktop/hello/hello-2.1.1$
Shell
user@debian:~/Desktop/hello/hello-2.1.1$
user@debian:~/Desktop/hello/hello-2.1.1$ dpkg-buildpackage -us -uc
dpkg-buildpackage: пакет исходного кода hello
dpkg-buildpackage: версия исходного кода 2.1.1-1
dpkg-buildpackage: дистрибутив исходного кода unstable
dpkg-buildpackage: исходный код изменён user <user@debian>
dpkg-buildpackage: архитектура узла amd64
dpkg-source --before-build hello-2.1.1
fakeroot debian/rules clean
dh clean --with autotools-dev
dh_testdir
dh_auto_clean
dh_autotools-dev_restoreconfig
dh_clean
dpkg-source -b hello-2.1.1
dpkg-source: инфо: используется формат исходника «3.0 (quilt)»
dpkg-source: инфо: сборка hello с использованием существующего ./hello_2.1.1.orig.tar.gz
dpkg-source: инфо: обнаружены локальные изменения, изменённые файлы:
hello-2.1.1/src/hello.c
dpkg-source: инфо: вы можете встроить локальные изменения в dpkg-source --commit
dpkg-source: ошибка: прерывание работы из-за неожиданных изменений авторского кода, смотрите /tmp/hello_2.1.1-1.diff.YzN34b
dpkg-buildpackage: ошибка: dpkg-source -b hello-2.1.1 возвратил код ошибки 2
user@debian:~/Desktop/hello/hello-2.1.1$
А если ничё не менять, то собирается нормально
Shell
user@debian:~/Desktop/hello/hello-2.1.1$ uname -a
Linux debian 3.16.0-6-amd64 #1 SMP Debian 3.16.57-2 (2018-07-14) x86_64 GNU/Linux
user@debian:~/Desktop/hello/hello-2.1.1$