🍄 Простой способ создать пакет Debian и локальный репозиторий пакетов |

🍄 Простой способ создать пакет Debian и локальный репозиторий пакетов

Мануал

В этой статье описывается простой способ создать домашний пакет Debian и включить его в локальный репозиторий пакетов.

Хотя мы могли бы использовать существующий пакет Debian / Ubuntu, мы начнем с нуля, создав и упаковав наше собственное тривиальное приложение.

Как только наш пакет будет готов, мы включим его в наш локальный репозиторий пакетов.

Эта статья иллюстрирует очень упрощенный подход, однако он может служить шаблоном во многих различных сценариях.

В этом уроке вы узнаете:

  • Как создать простой пакет Debian
  • Как создать локальный репозиторий Debian
  • Как добавить репозиторий в список программных источников

Создание двоичного исполняемого файла

Первое, что нам нужно сделать, это создать простую программу на C ++, скомпилировать ее и протестировать.

Наша программа больше ничего не делает, просто печатает «itsecforu.ru» на экране.

Вот код:

#include <iostream>
int main() {
    using namespace std;
    cout << "itsecforu.ru\n";
}

Сохраните приведенный выше код как itsecforu.cc.

Для компиляции программы нам нужен компилятор g ++, который предоставляется пакетом build-essential.

Мы можем установить его, запустив:

$ sudo apt-get install build-essential

Для компиляции кода мы используем следующую команду linux:

$ g++ itsecforu.cc -o itsecforu
$ ./itsecforu
itsecforu.org

Все выглядит хорошо.

На этом этапе у нас должен быть исполняемый файл itsecforu, который выводит некоторую строку на экран.

Создание пакета Debian

Теперь, когда у нас есть небольшая программа, готовая в виде исполняемого двоичного файла, мы можем создать пакет debian.

Для этого мы используем инструмент dpkg-deb

Прежде всего, нам нужно создать структуру пакета debian.

Единственные файлы, необходимые для сборки пакета debian:

  • DEBIAN/control
  • пользовательские файлы, которые будут частью пакета (не обязательно)

Сначала создайте каталог с именем itsecforu.

Этот каталог будет содержать все необходимые файлы пакета:

$ mkdir itsecforu

Затем создайте каталог DEBIAN и управляющий файл:

$ mkdir itsecforu/DEBIAN
$ vi itsecforu/DEBIAN/control

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

Package: itsecforu.ru
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer:itsecforu.ru 
Description: Вывод itsecforu.ru на экран

Отлично, единственное, чего не хватает, так это нашей программы itsecforu.

Внутри каталога  itsecforu мы создаем дерево каталогов, которое представляет путь, по которому наша программа будет установлена в системе, и копируем в него исполняемый файл:

$ mkdir -p itsecforu/usr/bin/
$ cp /path/to/itsecforu itsecforu/usr/bin/

На данный момент мы готовы создать пакет:

$ dpkg-deb --build itsecforu
 dpkg-deb: building package `itsecforu' in `itsecforu.deb'. $ ls itsecforu itsecforu.deb

Возможно, вы захотите изменить имя пакета, чтобы оно включало версию программы и архитектуру пакета. Например:

$ mv itsecforu.deb itsecforu-1.0_amd64.deb

Все сделано ! Наш пакет готов! (ПРИМЕЧАНИЕ: это всего лишь пример, создание официальных пакетов требует намного больше работы).

Настройка локального репозитория пакетов

В этом случае мы будем предполагать использование Apache с настройками по умолчанию.

Чтобы установить веб-сервер Apache, все, что нам нужно сделать, это запустить:

$ sudo apt-get install apache2

После установки, чтобы убедиться, что веб-сервер работает, мы можем перейти к IP-адресу машины (или к «http://localhost», если запущен браузер на самой машине), который в нашем случае является http://10.1.1.4. Мы должны увидеть знаменитое сообщение от Apache.

Программное обеспечение веб-сервера работает, но контент еще не добавлен.

DocumentRoot Apache VirtualHost по умолчанию – / var / www / html: здесь мы создадим наш репозиторий.

Давайте создадим каталог «debian» внутри /var/www/html и скопируем в него пакет linuxconfig-1.0_amd64.deb:

$ sudo mkdir /var/www/html/debian
$ sudo cp /path/to/linuxconfig-1.0_amd64.deb /var/www/html/debian/

Следующий шаг заключается в создании списка пакетов.

Мы переходим в каталог debian и используем утилиту dpkg-scanpackages для выполнения этой задачи.

Вам может потребоваться установить пакет dpkg-dev на случай, если команда dpkg-scanpackages отсутствует:

$ dpkg-scanpackages . | gzip -c9  > Packages.gz
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.

Наш локальный репозиторий уже готов.

Добавление репозитория к программным источникам

На этом этапе, чтобы иметь возможность установить наш пакет из локального репозитория, который мы создали, нам нужно отредактировать файл /etc/apt/sources.list, добавить запись относительно него (измените IP-адрес, чтобы он соответствовал адресу вашего компьютера), и синхронизировать репозитории:

echo "deb [trusted=yes] http://10.1.1.4/debian ./" | tee -a /etc/apt/sources.list > /dev/null

Обязательно добавьте выше [trust = yes], чтобы избежать следующего сообщения об ошибке:

 Release' does not have a Release file.                   
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Синхронизируйте репозитории:

$ sudo apt-get update
Ign:1 http://10.1.1.4/debian ./ InRelease
Ign:2 http://10.1.1.4/debian ./ Release
Ign:3 http://10.1.1.4/debian ./ Packages
Ign:3 http://10.1.1.4/debian ./ Packages
Ign:3 http://10.1.1.4/debian ./ Packages
Get:3 http://10.1.1.4/debian ./ Packages [303 B]

Чтобы установить наш пакет, теперь мы можем использовать инструмент apt-get:

$ sudo apt-get install linuxconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  linuxconfig
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 3174 B of archives.
After this operation, 1,049 kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  linuxconfig
Install these packages without verification [y/N]? y

Выполните:

$ itsecforu
itsecforu.ru

Чтобы удалить пакет из системы, просто запустите:

$ sudo apt-get remove linuxconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  linuxconfig
0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
After this operation, 1049 kB disk space will be freed.
Do you want to continue? [Y/n] y

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий