Найти в Дзене
ИТ заметки

Astra Linux создание мета пакета

Иногда не удобно ставить несколько нужных пакетов для выполнения одной цели, так например, для использования криптопровайдера КриптоПро необходимо установить несколько пакетов. Для решения этой задачи можно создать мета пакет который будет по зависимости ставить все необходимые нам пакеты. Но есть одно неудобство, если вы решите удалить мета пакет, то все его зависимости не будут удалены, они останутся в системе как не используемые и их можно удалить выполнив sudo apt autoremove Для примера покажу, как создать мета пакет установки КриптоПро CSP. Cоздадим каталог с названием пакет, например mkdir company-cprocsp В данном каталоге создадим каталог "DEBIAN", а в нем файл "control" cd company-cprocsp
mkdir DEBIAN
cd DEBIAN
vim control Впишем в файл следующие данные Package: company-cprocsp
Version: 1.0
Priority: optional
Depends: cprocsp-compat-debian, cprocsp-cpopenssl-110-64, cprocsp-cpopenssl-110-base, cprocsp-cpopenssl-110-devel, cprocsp-cpopenssl-110-gost-64, cprocsp-cpopenssl-64, cp

Иногда не удобно ставить несколько нужных пакетов для выполнения одной цели, так например, для использования криптопровайдера КриптоПро необходимо установить несколько пакетов. Для решения этой задачи можно создать мета пакет который будет по зависимости ставить все необходимые нам пакеты. Но есть одно неудобство, если вы решите удалить мета пакет, то все его зависимости не будут удалены, они останутся в системе как не используемые и их можно удалить выполнив

sudo apt autoremove

Для примера покажу, как создать мета пакет установки КриптоПро CSP. Cоздадим каталог с названием пакет, например

mkdir company-cprocsp

В данном каталоге создадим каталог "DEBIAN", а в нем файл "control"

cd company-cprocsp
mkdir DEBIAN
cd DEBIAN
vim control

Впишем в файл следующие данные

Package: company-cprocsp
Version: 1.0
Priority: optional
Depends: cprocsp-compat-debian, cprocsp-cpopenssl-110-64, cprocsp-cpopenssl-110-base, cprocsp-cpopenssl-110-devel, cprocsp-cpopenssl-110-gost-64, cprocsp-cpopenssl-64, cprocsp-cpopenssl-base, cprocsp-cpopenssl-devel, cprocsp-cpopenssl-gost-64, cprocsp-cptools-gtk-64, cprocsp-curl-64, cprocsp-rdr-cloud-64, cprocsp-rdr-cloud-gtk-64, cprocsp-rdr-cpfkc-64, cprocsp-rdr-emv-64, cprocsp-rdr-esmart-64, cprocsp-rdr-gui-gtk-64, cprocsp-rdr-infocrypt-64, cprocsp-rdr-inpaspot-64, cprocsp-rdr-jacarta-64, cprocsp-rdr-kst-64, cprocsp-rdr-mskey-64, cprocsp-rdr-novacard-64, cprocsp-rdr-pcsc-64, cprocsp-rdr-rosan-64, cprocsp-rdr-rutoken-64, cprocsp-rsa-64, cprocsp-stunnel-64, cprocsp-xer2print, ifd-rutokens, lsb-cprocsp-base, lsb-cprocsp-ca-certs, lsb-cprocsp-capilite-64, lsb-cprocsp-devel, lsb-cprocsp-kc1-64, lsb-cprocsp-kc2-64, lsb-cprocsp-pkcs11-64, lsb-cprocsp-rdr-64, lsb-cprocsp-rdr-accord-64, lsb-cprocsp-rdr-ancud-64, lsb-cprocsp-rdr-crypton-64, lsb-cprocsp-rdr-maxim-64, lsb-cprocsp-rdr-sobol-64
Architecture: amd64
Section: non-free
Maintainer: test user <user@yandex.ru>
Description: Пакет установки всех нужных пакетов КриптоПро

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

Package - имя пакета
Version - версия программы в пакете, будет использована при обновлении пакета;
Priority - важность пакета, для новых пакетов, которые ни с чем не конфликтуют обычно прописывают optional, кроме того доступны значения required, important или standard;
Depends - от каких пакетов зависит ваш пакет, он не может быть установлен, пока не установлены эти пакеты. Вот сюда нам нужно вписать все нужны нам для установки пакеты КриптоПро
Architecture - архитектура системы, в которой можно установить этот пакет, доступные значения: i386, amd64, all, последнее означает, что архитектура не имеет значения;
Section - Определяет задачу, для которой приложение обычно используется (группа приложений). Возможные значения: admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome, graphics, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-free, oldlibs, otherosfs, perl, python, science, shells, sound, tex, text, utils, web, x11
Maintainer - указывает кто собрал этот пакет и кто отвечает за его поддержку;
Description - краткое описание пакета.

-2

В зависимости я вписал все пакетв *.deb которые были в архиве КриптоПро 5.0.11455.

Теперь собираем пакет. Переходи в каталог содержащий папку с пакетом company-cprocsp и запускаем сборку

cd ../..
dpkg-deb --build ./company-cprocsp
-3

Теперь переименуем пакет в соответствии с требованиями - pacage_version_arhitectur.deb

cp company-cprocsp.deb company-cprocsp_1.0_amd64.deb

Теперь все пакеты КриптоПро и наш пакет "company-cprocsp" добавляем в свой репозиторий.

cd linux-amd64_deb/
sudo reprepro -b /srv/repo/ includedeb 1.7_x86-64 ./*.deb
-4
cd ..
dpkg-deb --build ./company-cprocsp

Пробуем устанавливать наш мета пакет

sudo apt update
sudo apt install company-cprocsp

У меня во время установки возникла ошибка

При обработке следующих пакетов произошли ошибки:
/tmp/apt-dpkg-install-1jd5tq/20-cprocsp-rdr-cloud-gtk-64_5.0.11455-5_amd64.deb
/tmp/apt-dpkg-install-1jd5tq/42-lsb-cprocsp-rdr-accord-64_5.0.11455-5_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Удалим из зависимостей пакеты "cprocsp-rdr-cloud-gtk-64", "cprocsp-rdr-cloud-64", "lsb-cprocsp-rdr-accord-64", . Увеличим версию на 1, пересобирем пакет и добавим в репозитория. У меня успешно установилось КриптоПро одной командой "sudo apt install company-cprocsp".