Как создать пакет и добавить туда рандомный файл (изучаем инструмент equivs*)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
жучара
Сообщения: 1075
ОС: астралинукс

Как создать пакет и добавить туда рандомный файл (изучаем инструмент equivs*)

Сообщение жучара »

Друзья! Создать пакет проще простого:
https://debian-handbook.info/browse/ru-RU/stable/sect.building-first-package.html

$ equivs-control foo
Offtopic
ту поправим создавшийся файл foo, напишем туда корректное имя пакета, например "Package: bar"
После чего вот так команднём
$ equivs-build foo ... $

И создастся пакет файл bar_1.0_all.deb, его можно даже установить. Но как быть, если мы захотим добавить туда авторский файл?

Shell

$ man equivs-build
...
File:
Files to be copied into some directory of the created package, specified inline in the source
control file. The field syntax is the name of the files to be created, followed by lines
indented by 1 space denoting file content; leading space will be trimmed. An octal file mode
may be specified after the filename; it defaults to 644, and will be normalised to 644 or 755.
Example:

File: /usr/local/bin/true 755
#!/bin/sh
exit 0
То есть в файле foo нужно вот это написать и в файле bar_1.0_all.deb будет файл true указанного содержания, который при установке распакуется в директорию /usr/local/bin. То есть файл foo должен выглядеть теперь так

Shell

$ cat foo
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: bar
File: /usr/local/bin/true 755
#!/bin/sh
exit 0
Description: <short description; defaults to some wise words>
long description and info
.
second paragraph
$
Само собой, ничего не создаётся:

Shell

$ equivs-build foo
dpkg-buildpackage: инфо: пакет исходного кода bar
dpkg-buildpackage: инфо: версия исходного кода 1.0
dpkg-buildpackage: инфо: дистрибутив исходного кода unstable
dpkg-buildpackage: инфо: исходный код изменён Equivs Dummy Package Generator <user@debian>
dpkg-buildpackage: инфо: архитектура узла amd64
dpkg-source --before-build .
debian/rules clean
dh clean
dh_clean
debian/rules binary
dh binary
dh_update_autotools_config
dh_autoreconf
create-stamp debian/debhelper-build-stamp
dh_prep
dh_auto_install --destdir=debian/bar/
dh_install
dh_installdocs
dh_installchangelogs
dh_perl
dh_usrlocal
dh_usrlocal: error: debian/bar/usr/local/bin/true is not a directory
make: *** [debian/rules:3: binary] Ошибка 255
dpkg-buildpackage: ошибка: debian/rules binary subprocess returned exit status 2
Error in the build process: exit status 2
$

Shell

$ equivs-build -f foo
dpkg-buildpackage: инфо: пакет исходного кода bar
dpkg-buildpackage: инфо: версия исходного кода 1.0
dpkg-buildpackage: инфо: дистрибутив исходного кода unstable
dpkg-buildpackage: инфо: исходный код изменён Equivs Dummy Package Generator <user@debian>
dpkg-buildpackage: инфо: архитектура узла amd64
dpkg-source --before-build .
debian/rules clean
dh clean
dh_clean
dpkg-source -b .
dpkg-source: инфо: используется формат исходника «3.0 (native)»
dpkg-source: инфо: сборка bar в bar_1.0.tar.xz
dpkg-source: инфо: сборка bar в bar_1.0.dsc
debian/rules binary
dh binary
dh_update_autotools_config
dh_autoreconf
create-stamp debian/debhelper-build-stamp
dh_prep
dh_auto_install --destdir=debian/bar/
dh_install
dh_installdocs
dh_installchangelogs
dh_perl
dh_usrlocal
dh_usrlocal: error: debian/bar/usr/local/bin/true is not a directory
make: *** [debian/rules:3: binary] Ошибка 255
dpkg-buildpackage: ошибка: debian/rules binary subprocess returned exit status 2
Error in the build process: exit status 2
$
С опцией -s создаются просто-напросто исходники, но не *.deb файл:

Shell

$ equivs-build -s foo
dpkg-buildpackage: инфо: пакет исходного кода bar
dpkg-buildpackage: инфо: версия исходного кода 1.0
dpkg-buildpackage: инфо: дистрибутив исходного кода unstable
dpkg-buildpackage: инфо: исходный код изменён Equivs Dummy Package Generator <user@debian>
dpkg-source --before-build .
debian/rules clean
dh clean
dh_clean
dpkg-source -b .
dpkg-source: инфо: используется формат исходника «3.0 (native)»
dpkg-source: инфо: сборка bar в bar_1.0.tar.xz
dpkg-source: инфо: сборка bar в bar_1.0.dsc
dpkg-genbuildinfo --build=source -O../bar_1.0_source.buildinfo
dpkg-genchanges --build=source -O../bar_1.0_source.changes
dpkg-genchanges: инфо: в закачку включён весь исходный код
dpkg-source --after-build .
dpkg-buildpackage: инфо: закачка только пакетов исходного кода: родной пакет Debian

The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!
$
Про ошибку debian/bar/usr/local/bin/true is not a directory даже не знаю, что и скзать. Я и сам знаю, что debian/bar/usr/local/bin/true не директория. В мане ничего не сказано про создание директорий каких бы то ни было. ЧЯДНТ? Спасибо, кто откликнется.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21229
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как создать пакет и добавить туда рандомный файл (изучаем инструмент equivs*)

Сообщение Bizdelnick »

Очевидно, такой путь не дружит с dh_usrlocal (см. man dh_usrlocal). Чтобы его отключить, надо править rules. А для этого скопировать весь каталог с шаблонами, в который и вносить изменения. Но если это чисто для поиграться, то просто поместите файл в каталог за пределами /usr/local.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: