Найти тему

Как собрать debian пакет?

Для начала немного теории:

Каждый Debian-пакет имеет расширение ".deb" и содержит в себе компоненты, такие как бинарные файлы, исходный код, скрипты установки и метаданные, такие как имя пакета, версия, автор и описание. Debian-пакеты управляются с помощью инструментов управления пакетами, таких как apt-get, aptitude и dpkg.

Пакеты Debian имеют следующую структуру:

  • Контрольный файл (control file), который содержит информацию о пакете, такую как имя пакета, версия, описание, зависимости, конфликты и многое другое.
  • Архив с бинарными файлами (binary archive), который содержит бинарные файлы, которые будут установлены на вашей системе.
  • Архив с исходным кодом (source archive), который содержит исходный код пакета. Этот архив может быть использован для компиляции пакета на вашей системе.

Управление пакетами Debian осуществляется с помощью инструментов, которые могут скачивать, устанавливать, обновлять и удалять пакеты из официальных репозиториев Debian. Одним из наиболее распространенных инструментов является apt-get, который может быть использован для установки и обновления пакетов, а также для управления зависимостями между ними.

Для создания своего собственного Debian-пакета необходимо создать файлы контрольного файла и архивов с бинарными исходными файлами, а затем использовать инструменты dpkg и debuild для создания и установки пакета.

Теперь давайте от теории перейдем к практике:

Для наглядности представлю вам структуру директории, в которой вы хотите собрать deb-пакет.

1) Создайте директорию (напр. test)

mkdir test

2) в директории test создайте директорию debian

cd test

mkdir debian

3) Также в директорию test поместите ваш пакет (разберем пакет на python)

В директории вашего python пакета обязательно должен быть файл __init__.py. Его вы можете оставить пустым (он нужен только для того, чтобы система понимала, что это и есть python пакет). Не забудьте про файл setup.py !

4) В то же время в директории test могут храниться второстепенные файлы, необходимые для вашего будущего пакета (напр. файлы перевода)

Теперь перейдем к файлу debian:

В данной директории у вас должно быть 5 файлов:

changelog, compat, control, install и rules

*Важно: имя директории, название пакета в файлах debian/changelog и debian/control должны быть одинаковые.

  • Файл changelog создается командой dh_make.

В этом файле вы будете вести логгирование вашего пакета

Про файл compat лучше прочитать в официальной документации (https://www.debian.org/doc/manuals/maint-guide/dreq.ru.html#changelog) , но в этой статье для простоты понимания просто запишите в него число 11

  • В файл control введите следующую информацию:

Source: package_name

Section: non-free/fly

Priority: optional

Maintainer: name <name@domain.ru>

Build-Depends: debhelper (>=10), dh-python, python3-all

Standards-Version: 3.8.0

Homepage: https://domain.ru/

Package: package_name

Architecture: any

Depends: ${shlibs:Depends}, python3, bash

Description: Libraries for fly applicati

Description here

  • Теперь про файл install. В данной статье мы не будем его использовать, так как возьмем альтернативный способ, но для общего понимания: файл install содержит в себе строки, которые будут указывать, что (из директории test) и куда (в любое место системы) должно быть установлено вместе с пакетом.
  • В файле rules внесите следующие строки:

%:
   dh $@ --with python3 --buildsystem=pybuild

*Первая строка обязательно должна быть пустая.

Ура, мы на финишной прямой:

  • Немного инфы про файл setup.py (он лежит в директории test):


from setuptools import setup, find_packages

setup(
   name=
'package_name',
   version=
'1.0.1',
   entry_points={
'console_scripts': [
'имя_будующей_команды = имя_python_проекта.нужный_файл:нужная_функция', ]
   },
   packages= find_packages(),
   data_files=[
       (
'/путь_до_места_установки', ['установочный_второстепенный файл']),
   ]
)

Данный контент избавляет нас от ведения файла install в директории debian.

Теперь смело запускайте команду: sudo dpkg-buildpackage в директории test и переходите на уровень ниже (cd ..). Там и будет ваш созданный пакет, чтобы его установить выполните команду sudo dpkg -i имя_пакета.deb.

Приятного пользования!