Может быть много причин для создания пакета из исходного кода. Вот несколько причин, о которых я мог подумать сейчас:
Чтобы собрать двоичный пакет из исходного кода, сначала нам нужно установить необходимые инструменты сборки. В зависимости от инструмента командной строки для сборки двоичного пакета вам может потребоваться установить любой из следующих пакетов:
Эти пакеты предоставляют множество инструментов для создания двоичных пакетов из исходного кода.
Чтобы установить «dpkg-dev», запустите:
$ sudo apt install dpkg-dev
Чтобы установить пакет “devscripts”, используйте следующую команду:
$ sudo apt install devscripts
Убедитесь, что вы включили исходные репозитории.
Для этого откройте файл /etc/apt/sources.list :
$ sudo vim /etc/apt/sources.list
Вы увидите в нем несколько строк, как показано ниже:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
В приведенном выше файле все строки, начинающиеся с одного или двух хешей (#), являются просто комментариями, только для информации. А строки без хэшей – подходящие репозитории .
Строки репозитория apt, начинающиеся с «deb», относятся к двоичным пакетам, которые могут быть установлены пользователями с помощью диспетчера пакетов apt. Строки, начинающиеся с «deb-src», относятся к исходным пакетам. Это полезно для разработчиков. По умолчанию “deb-src” закомментирован в списке источников.
Чтобы загрузить пакеты с исходным кодом, вам нужно раскомментировать строку «deb-src». Удалите символ #, чтобы раскомментировать строку. После раскомментирования строки репозитория должны выглядеть следующим образом:
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
Сохраните и закройте файл. Обновите список репозиториев с помощью команды:
$ sudo apt update
Загрузите исходный код пакета с помощью команды “apt source <package-name>”. Например, следующая команда загрузит исходный код “andreyex World!” программа:
$ apt source andreyex
Пример вывода:
Reading package lists... Done Need to get 734 kB of source archives. Get:1 http://in.archive.ubuntu.com/ubuntu focal/main andreyex 1.10-2ubuntu2 (dsc) [1847 B] Get:2 http://in.archive.ubuntu.com/ubuntu focal/main andreyex 1.10-2ubuntu2 (tar) [726 kB] Get:3 http://in.archive.ubuntu.com/ubuntu focal/main andreyex 1.10-2ubuntu2 (diff) [6560 B] Fetched 734 kB in 2s (336 kB/s) dpkg-source: info: extracting andreyex in andreyex-1.10 dpkg-source: info: unpacking andreyex_1.10.orig.tar.gz dpkg-source: info: unpacking andreyex_1.10-2ubuntu2.debian.tar.xz
Как видите, мы загрузили исходный код программы andreyex World.
$ ls andreyex-1.10 andreyex_1.10-2ubuntu2.debian.tar.xz andreyex_1.10-2ubuntu2.dsc andreyex_1.10.orig.tar.gz
Просмотрите фактическое содержимое исходного кода:
$ ls andreyex-1.10/ ABOUT-NLS ChangeLog INSTALL NEWS README-release aclocal.m4 configure debian lib man tests AUTHORS ChangeLog.O Makefile.am README THANKS build-aux configure.ac doc m4 po COPYING GNUmakefile Makefile.in README-dev TODO config.in contrib andreyex.1 maint.mk src
Затем нам нужно установить зависимости для этого пакета. Для этого запустите:
$ sudo apt build-dep andreyex
Теперь мы загрузили исходный код пакета и установили зависимости, необходимые для сборки этого пакета. Затем внесите изменения в исходный код.
Cd в каталог, содержащий исходный код пакета. В нашем случае это andreyex-1.10.
$ cd andreyex-1.10
Измените код по своему желанию. Код находится в файле «andreyex.c» в каталоге «src».
$ vi src/andreyex.c
Измените код и/или внесите какие-либо изменения. После редактирования кода сохраните и закройте файл.
Пришло время создать собственно пакет .deb.
Мы скачали исходный код и изменили код. Давайте соберем пакет из исходников. Мы можем сделать это тремя способами:
Убедитесь, что вы установили пакет «dpkg-dev».
А затем выполните следующую команду, чтобы собрать пакет из исходного кода:
$ dpkg-buildpackage -rfakeroot -b -uc -us
Здесь:
Убедитесь, что вы запускаете указанную выше команду в основном каталоге исходного дерева. Иначе ничего не получится.
Если сборка прошла успешно, вы увидите сообщение, подобное приведенному ниже:
[...] dpkg-deb: building package 'andreyex' in '../andreyex_1.10-2ubuntu2_amd64.deb'. dpkg-deb: building package 'andreyex-dbgsym' in 'debian/.debhelper/scratch-space/build-andreyex/andreyex-dbgsym_1.10-2ubuntu2_amd64.deb'. Renaming andreyex-dbgsym_1.10-2ubuntu2_amd64.deb to andreyex-dbgsym_1.10-2ubuntu2_amd64.ddeb dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../andreyex_1.10-2ubuntu2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included)
Поздравляю! Мы успешно создали пакет .deb из исходников. Теперь вернитесь в родительский каталог, и вы увидите недавно созданный файл .deb:
$ cd ..
$ ls
Пример вывода:
andreyex-1.10 andreyex_1.10-2ubuntu2.dsc andreyex_1.10-2ubuntu2_amd64.deb andreyex-dbgsym_1.10-2ubuntu2_amd64.ddeb andreyex_1.10-2ubuntu2_amd64.buildinfo andreyex_1.10.orig.tar.gz andreyex_1.10-2ubuntu2.debian.tar.xz andreyex_1.10-2ubuntu2_amd64.changes
Убедитесь, что вы установили пакет “devscripts”.
Затем соберите двоичный пакет, выполнив следующую команду из исходного дерева:
$ debuild -b -uc -us
После успешной сборки полученный пакет .deb будет сохранен в родительском каталоге.
Это самый простой и понятный метод, чем два вышеупомянутых метода. В этом методе мы загружаем исходный код пакета и передаем параметр «–compile» для сборки двоичного файла в одной командной строке ниже:
$ sudo apt-get source --compile andreyex
Приведенная выше команда загрузит исходный код программы “andreyex”, соберет пакет .deb и сохранит его в текущем каталоге.
Перейдите в место, где сохранен файл .deb, и установите его, как показано ниже:
$ sudo dpkg -i andreyex_1.10-2ubuntu2_amd64.deb
Если вы видите сообщение об ошибке отсутствия зависимостей, запустите:
$ sudo apt install -f
Как видите, собрать пакет debian из исходного кода очень просто!
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята