Разработка прикладного программного обеспечения (ПО) для операционных систем и формирование «экосистемы» имеет большое значение для удовлетворения растущих потребности на российском рынке. Это позволит не только уменьшить зависимость от иностранных технологий, но и обеспечить большую суверенность в области информационных технологий, предоставляя государственным организациям и различным предприятиям надежные и безопасные решения.
Использование прикладного программного обеспечения невозможно без операционной системы, на которой оно будет функционировать. С другой стороны, ОС сама по себе не имеет большой полезности без установленного в ней прикладного ПО. Поэтому для обеспечения эффективной работы необходимо развивать готовые «экосистемы», где операционная система и прикладное ПО взаимодействуют синергетически и обеспечивают полную функциональность и производительность.
Важной составляющей развития «экосистемы» является технически правильная упаковка стороннего программного обеспечения. Большинство представленных на российском рынке операционных систем являются дистрибутивами GNU/Linux и используют пакетные менеджеры для управления программным обеспечением, поэтому стороннее ПО обычно упаковывают в пакеты, обычно в формате RPM и DEB. Дистрибутивы ROSA используют формат RPM. По сравнению с операционными системами без пакетного менеджера, например, Windows, в построенных с использованием пакетного менеджера операционных системах можно выделить следующие преимущества:
- почти все файлы и каталоги принадлежат какому-либо пакету;
- при удалении пакета точно удаляются все эти файлы и каталоги, независимо от написанного разработчиком удяляемого ПО кода;
- аналогично, при обновлении пакета не остается более не нужных фрагментов старой версии;
- установка пакета полностью автоматизирована, не требует вмешательства администратора, а значит можно централизованно устанавливать, обновлять и удалять пакеты;
- каждый файл принадлежит одному конкретному пакету, пакетный менеджер предотвращает конфликты между пакетами и изменение компонентов одного пакета при установке другого;
- пакетный менеджер знает контрольную сумму и режим доступа каждого файла и способен контролировать целостность файлов на диске (rpm -Va);
- в зависимостях пакета указываются переиспользуемые библиотеки и иные компоненты ОС (другие пакеты), что позволяет при необходимости исправлять ошибки и уязвимости лишь в одном пакете — пакете с библиотекой — без пересборки всех использующих ее пакетов.
Практика показывает, что разработчики стороннего ПО часто имеют недостаточный опыт сборки прикладного ПО для операционных систем на базе Linux, включая отечественные дистрибутивы, а в собранных ими пакетами встречаются проблемы, мешающие реализовывать описанные выше преимущества пакетного подхода, например:
- копирование файлов скриптами в обход пакетной системы там, где можно было бы просто сразу
упаковать их внутри пакета в нужном каталоге; - вмешательство в принадлежащие другим пакетам файлы;
- использование нестандартный каталогов (нарушение FHS);
- использование недистрибутивоуниверсальных зависимостей в RPM-пакетах там, где можно было бы сделать дистрибутивоуниверсально, то есть делать один пакет для нескольких дистрибутивов;
- неправильная метаинформация пакета, например, лишние Provides, запутывающая пакетный менеджер при работе с другими пакетами.
Помимо проблем с упаковкой в пакет, часто встречаются проблемы со сборкой упаковываемого
ПО, например:
- использование LD_LIBRARY_PATH вместо RUNPATH (RPATH);
- нарушение цепочки зависимостей в своих и системных библиотеках;
- нарушение таких стандартов и спецификаций, как FHS, XDG FreeDesktop и других.
Раньше, когда стороннего ПО для отечественных ОС было меньше, проблема разрешения последствий таких ошибок стояла менее остро. Сейчас же происходит взрывной рост его количества, поэтому представляется очень важным передать опыт упаковки и сопровождения пакетов и видение устройства ОС от тех, кто этим занимается профессионально в репозиториях дистрибутивов, тем, для кого это не основной вид деятельности — разработчикам стороннего ПО для GNU/Linux. На российском рынке существуют несколько операционных систем на базе Linux, используемых простыми пользователями, бизнесом и госструктурами для выполнения повседневных задач в разных сферах. И для разработчиков стороннего ПО остро стоит вопрос совместимости с различными ОС и процессом сопровождения при появлении новых версий. В экосистеме РОСА сейчас есть несколько разных продуктов (такие как операционные системы общего назначения, мобильная операционная система, система виртуализации, система оркестрации и управления ресурсами и другие), объединенных в одно информационное поле.
В этом докладе рассмотрены общие принципы, которых стоит придерживаться для написания сторонних приложений, чтобы они было совместимы и с разными продуктами компании, и с дистрибутивами других разработчиков. Освещены проблемы с обоснованием их причин и приведены возможные варианты их решения.
Запись выступления:
Слайды презентации картинками:
Полная запись первого дня OSDAY-2023
Полная запись второго дня OSDAY-2023
Отправить ответ