MyTetra Share
Делитесь знаниями!
Сборка deb-пакетов из исходников для Astra Linux 1.6
Время создания: 26.05.2025 16:56
Текстовые метки: linux, astra, debian, deb, пакет, сборка, компиляция, репозитарий, исходники, src
Раздел: Компьютер - Linux - Дистрибутив Astra Linux
Запись: xintrea/mytetra_syncro/master/base/1748267791nos9v0jei9/text.html на raw.github.com

Согласно статье "О лицензировании, применении и сертификации программ из состава диска «Операционная система специального назначения «Astra Linux Special Edition РУСБ.10015-01». Средства разработки»", известно, что существующий в Astra Linux 1.6 диск "Средства разработки" содержит несертифицированное ПО. А это значит, что если библиотека или программа, используемая в СПО, находится на диске "Средства разработки", то просто так пройти процедуру сертификации СПО не получится.


Вот что предлагается делать в вышеуказанной статье:



Порядок действий для использования программ из состава диска «Средства разработки»:


Вариант 1 (рекомендуемый). Включение исходных текстов программ. Для использования этого варианта запросить у ООО «РусБИТех-Астра» исходные тексты необходимых программ и включить их в состав разрабатываемого СПО с проведением сертификации на все предъявляемые к СПО требования по безопасности информации;



Обращение в платную техподдержку для получения исходников будет делом неспешным. Чтобы получить, по-факту, исходники свободного программного обеспечения, нужно доказать, что они действительно нужны. Техподдержка будет запрашивать подробности где и как будут использоваться исходники (которые по-факту лежат для всего мира в открытом доступе). Вопрос лишь в том, какой конкретно срез исходников использовался для сборки того или иного пакета в Astra Linux. Поэтому взять исходники из официального репозатария Debian просто так не получится. По срокам примерный расклад такой: в нашем случае получение исходников затянулось более чем на 20 дней.


Далее все повествование будет идти на основе сборки библиотеки libpoppler.


Итак, в ответ на запрос, техподдержка предоставит архив *.tgz с исходниками. Естественно, никаких инструкций по сборке из исходников предоставлено не будет. Предполагается, что в каждой организации должен быть инженер-майнтейнер, который знает внутреннее устройство систем сборки репозитариев Debian. Сразу надо сказать, что официальная документация, которая доступна в интернете и в личном кабинете - неполная. Вот ее образцы:



Руководство по сборке и обновлению пакетов

https://docs.astralinux.ru/latest/guide/package/


Рекомендации по сборке программных пакетов и написанию к ним документации

на платформе Astra Linux

https://wiki.astralinux.ru/download/attachments/37290449



Все инструкции по сборке сводятся к одной фразе: "Сборку пакетов из пакетов с исходными текстами следует выполнять в ОС при помощи команды dpkg-buildpackage". Это уже кое-что!


Итак, что надо делать?


В начале надо распаковать *.tgz - архив:



tar -zxvf ИмяФайла.tgz



(Эту и последующие команды, если не оговорено иного, надо выполнять от обычного пользователя).


Содержимое распакуется в такие файлы:



poppler_0.48.0-2+deb9u4+ci202305291547+astra2.debian.tar.xz

poppler_0.48.0-2+deb9u4+ci202305291547+astra2.dsc

poppler_0.48.0.orig.tar.xz



В файле *.orig.tar.xz лежат апстримовые исходники библиотеки. Исходники из апстрима - это такие исходники, которые предоставляют авторы библиотеки. Естественно, авторы не могут предусмотреть все варианты сборки под все существующие дистрибутивы Linux, и дистрибутив Astra Linux, который зиждется на Debian Linux, не исключение. Поэтому помимо архива с апстрим-исходниками идет еще и архив с дистрибутиво-зависимыми изменениями. Этот архив имеет расширение *.debian.tar.xz. В нем находятся патчи, которые применяются к апстримовым исходникам, чтобы исходники могли собраться в дистрибутиве Debian (и, соответственно, в Astra Linux). В файле *.dsc находится текстовое описание (description) того, как собирать пакет из исходников, описание сделано в специальном формате.


Перед тем как собирать, рекомендуется установить пакеты с нужными инструментами сборки. Команда от рута:



apt install build-essential devscripts debhelper



Далее надо запустить саму сборку из исходников. По сути, это делается парой команд. Вначале дается команда распаковки и применения патчей. Она выполняется от обычнгого пользователя, в каталоге, где лежит *.dsc-файл:



dpkg-source -x poppler_0.48.0-2+deb9u4+ci202211281202+astra1.dsc



В результате будет создан подкаталог poppler-0.48.0.


Надо перейти в этот подкаталог, и запустить сборку:



dpkg-buildpackage -us -uc -b



Здесь опции обозначают следующее:



-us — не подписывать исходный код.

-uc — не подписывать файлы изменений (*.changes).

-b — собрать только бинарный пакет (без исходников).



Если нужна отладочная сборка, то можно воспользоваться командой:



DEB_BUILD_OPTIONS="nostrip noopt" dpkg-buildpackage -us -uc -b



Скорее всего, хоть релизная, хоть отладочная сборка завершится ошибкой примерно такого содержания:



dpkg-checkbuilddeps: ошибка: Unmet build dependencies: debhelper (>= 9) dh-autoreconf libcairo2-dev (>= 1.10.0) libopenjp2-7-dev libjpeg-dev libtiff-dev liblcms2-dev gtk-doc-tools (>= 1.14) libgirepository1.0-dev (>= 1.42.0-2~) gobject-introspection (>= 1.42.0-2~) libnss3-dev libglib2.0-doc libcairo2-doc



Это значит, что не хватает какого-то пакета, перечисленного в сообщении об ошибке. Надо установить их все. От рута дается команда:



apt install debhelper dh-autoreconf libcairo2-dev libopenjp2-7-dev libjpeg-dev libtiff-dev liblcms2-dev gtk-doc-tools libgirepository1.0-dev gobject-introspection libnss3-dev libglib2.0-doc libcairo2-doc



Затем снова, от обычного пользователя, дается команда сборки. В результате в том же каталоге где лежит *.dsc-файл, появятся deb-файлы:



gir1.2-poppler-0.18_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler64_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-cpp0v5_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-cpp-dev_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-dev_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-glib8_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-glib-dev_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-glib-doc_0.48.0-2+deb9u4+ci202305291547+astra2_all.deb

libpoppler-private-dev_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-qt4-4_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-qt4-dev_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-qt5-1_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

libpoppler-qt5-dev_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

poppler-dbg_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb

poppler-utils_0.48.0-2+deb9u4+ci202305291547+astra2_amd64.deb



Это и есть deb-пакеты, собранные из исходников.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования