Linux create install package

How to Create a Simple (.deb) Debian Package

The software package format for Debian-based Linux distributions and their associated derivatives can easily be identified by the .deb extension. Debian packages are also attributed to two tar archives. The first archive file contains control information and the second one installable data.

This article will walk us through the creation of a simple Debian package and later demonstrate its installation on any Debian-based system. To cover all the basics needed in creating a Debian package, we will create and package a simple trivial application from scratch.

Creating a Binary Executable in Linux

We are going to come up with a simple C++ program that prints a text string on the standard output. To be certain that this program works, we will have to compile and test it.

So open your terminal editor and create the following file using nano editor.

add the following code snippet.

The g++ compiler needed to compile the above program can be found in the build-essentials package.

$ sudo apt install build-essential

Let us now compile our C++ program and test the program for the anticipated output:

$ g++ debpackage.cc -o debpackage $ ./debpackage

Compile C++ Program in Linux

The above screen capture reveals that we have compiled our C++ code to an executable called debpackage which now prints the string “LinuxShellTip’s Simple Debian Package!” on demand.

Creating a Debian Package in Linux

The executable binary (debpackage) created from compiling the above C++ program is all we need to start creating our Debian package.

Firstly, we need a Debian package structure. The necessary package files need to be hosted under a root package directory:

$ mkdir mypackage $ mkdir mypackage/DEBIAN

Create a control file inside the DEBIAN directory.

$ nano mypackage/DEBIAN/control

Populate it with the following info:

Package: debpackage Version: 0.1 Section: custom Priority: optional Architecture: amd64 Essential: no Installed-Size: 1024 Maintainer: ubuntumint.com Description: Acknowledge ubuntumint.com tutorials

The Debian package structure is almost complete. Let us create the following final directories:

Читайте также:  Load file java linux

The created mypackage/usr/bin directory is the installation directory for the executable binary program debpackage we created earlier. This program executable needs to be copied to this directory:

$ cp debpackage mypackage/usr/bin

The dpkg-deb tool is needed to create a Debian package, we, therefore, need to point it to the above-created directory structure in the following manner:

Create Debian Package

We can confirm that the .deb package was created:

Check Debian Package

Please note that the steps followed to create the above .deb package reference a simplified approach as creating an official package will require a more detailed workaround.

Now that our .deb package is created, and we can attempt to install it using the dpkg command.

Install Debian Package

We can also run the Debian package from our terminal to make sure it is executing as per its functional objective.

Run Debian Package

We have successfully created and tested a simple Debian package. This article should serve as the perfect reference template for exploring the creation of more detailed and sophisticated Debian packages.

Источник

Создание deb пакетов

Самый популярный способ распространения программ в Linux — это репозитории программного обеспечения. В репозиториях программы находятся в специальном формате. В Debian и основанных на нём дистрибутивах используется формат пакетов deb. В этих пакетах находится архив всех файлов программы, инструкции по их установке в системе для пакетного менеджера, а также другая служебная информация.

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

Создание deb пакетов

Шаг 1. Подготовка

Давайте создадим для этого примера небольшую программу на Си. Она будет называться hellolosst и будет выводить на экран строку Hello from losst.pro в терминал при запуске. Сначала создайте папку hellolosst и перейдите в неё:

mkdir hellolosst
cd hellolosst

Затем поместите в неё файл с исходным кодом:

#include
int main() printf(«Hello from losst.pro\n»);
>

Для компиляции программы выполните такую команду:

gcc hellolosst.c -o hellolosst

Затем вы можете её выполнить:

Таким образом, теперь у нас есть программа, которую надо упаковать в deb пакет.

Читайте также:  Класс операционной системы linux

2. Создание манифеста

В каждом deb пакете содержаться не только файлы самой программы, но и файл манифеста, в котором описан пакет, его зависимости и параметры. Этот файл имеет название control и должен находится в папке DEBIAN. Для сборки пакета будем использовать папку package, чтобы файлы программы не путались с исходными файлами и те не попали в пакет. Создайте эти папку:

Прежде чем вы сможете создать этот файл надо узнать несколько вещей. Первым делом надо посмотреть размер файлов программы, поскольку в данном случае файл один, достаточно посмотреть его размер:

Если файлов несколько, то можно удалить исходники и посмотреть общий размер папки с файлами программы. Дальше надо понять от каких пакетов будет зависеть ваша программа. Для этого воспользуйтесь командой objdump:

objdump -p ./hellolosst | grep NEEDED

В данном случае программе необходима только libc. Чтобы посмотреть в каком пакете она находится выполните:

Пакет называется libc6. Затем создайте файл манифеста со следующим содержимым:

Package: hellolosst
Version: 1.0
Section: unknown
Priority: optional
Depends: libc6
Architecture: amd64
Essential: no
Installed-Size: 20
Maintainer: losst.pro
Description: Print hello from losst line

Это минимальный набор параметров в файле манифеста. Вот их значение:

  • Package — имя пакета;
  • Version — версия программы в пакете, будет использована при обновлении пакета;
  • Section — категория пакета, позволяет определить зачем он нужен;
  • Priority — важность пакета, для новых пакетов, которые ни с чем не конфликтуют обычно прописывают optional, кроме того доступны значения required, important или standard;
  • Depends — от каких пакетов зависит ваш пакет, он не может быть установлен, пока не установлены эти пакеты;
  • Recommends — необязательные пакеты, но тем не менее они обычно устанавливаются по умолчанию в apt;
  • Conflicts — пакет не будет установлен, пока в системе присутствуют перечисленные здесь пакеты;
  • Architecture — архитектура системы, в которой можно установить этот пакет, доступные значения: i386, amd64, all, последнее означает, что архитектура не имеет значения;
  • Installed-Size — общий размер программы после установки;
  • Maintainer — указывает кто собрал этот пакет и кто отвечает за его поддержку;
  • Description — краткое описание пакета.

3. Расположение файлов

Манифест готов. Теперь в папке пакета надо создать структуру папок, аналог того, что есть в корневой файловой системе. В данном случае надо создать папку usr/bin и поместить туда исполняемый файл:

Читайте также:  Linux deb or tar

mv ./hellolosst package/usr/bin

4. Скрипты установки

Несмотря на то, что система установки пакетов очень мощная и позволяет делать многое, некоторые вещи всё же сделать нельзя. Для решения этой проблемы была предусмотрена возможность выполнять скрипты перед установкой пакета и после. Аналогично это работает для удаления пакета — перед и после. Эти скрипты называются preinst, postinst, prerm и postrm. Каждый файл просто содержит набор скриптов, которые надо выполнить. Например:

#!/bin/bash
echo «Hello from losst installed»

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

5. Сборка и проверка пакета

Осталось собрать настроенный пакет. Для этого используйте такую команду:

Теперь вы знаете как как собрать deb пакет. После завершения сборки можете установить его с помощью apt:

sudo apt install ~/hellolosst.deb

После этого исполняемый файл программы появится в /usr/bin, а сообщение из postinst будет выведено после установки.

Выводы

В этой небольшой статье мы рассмотрели как выполняется создание deb пакета с помощью инструмента dpkg-deb. Как видите, всё очень просто. Вам достаточно написать манифест и расположить файлы там, где они должны быть. Мы рассмотрели здесь только самые основы. На самом деле создание пакетов намного сложнее. Существует целый набор утилит debhelpers, которые используются на различных этапах сборки и установки deb пакетов, подробнее обо всём этом вы можете прочитать в официальной документации.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Похожие записи

Оцените статью

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

8 комментариев к “Создание deb пакетов”

А как быть если не одна зависимость а несколько? Их надо через запятую указывать в Depends: или нужно для каждой зависимости писать Depends: зависимость Depends: зависимость ? Ответить

Источник

Оцените статью
Adblock
detector