Проблемы зависимостей в Linux: как я спас OBS Studio с помощью Installer-SH
Предисловие
Полагаю, нет смысла объяснять, что OBS Studio является одной из популярных программ для записи и стриминга видео. Свою славу данный «комбайн» получил исключительно благодаря платформе Windows, потому что данная платформа жёстко бьёт по рукам, если разработчики попытаются халтурить со сборкой и распространением ПО. Однако OBS Studio для платформы Linux буквально непригоден для распространения в официальном виде.

Как происходит распространение софта для Windows? Во-первых, у каждой программы есть системные требования, хотя у OBS Studio они сформулированы весьма скудно (указана только версия Windows, а должны были ещё указать требования к поддержке OpenGL 3.2). Для Linux это требование не совсем актуально, потому что есть Mesa3D с программной реализацией, если видеокарта не поддерживает. Во-вторых, у пользователей Windows есть два основных способа получить желаемый софт: инсталлятор в виде exe-файла либо zip-архив, который можно распаковать без стороннего ПО.
реклама
Разработчики прекрасно понимают, что не следует сердить пользователей самой популярной платформы, и покорно формируют как установочный пакет для Windows, так и простой архив для распаковки со скомпилированными и пригодными для использования файлами. Здесь всё понятно и правильно сделано.

Что же мы имеем для платформы Linux в официальном источнике от разработчиков? Ничего пригодного для распространения и использования. Увы. Более того, среди огромного множества дистрибутивов Linux упоминается только Ubuntu, и даже там нужно «потанцевать с бубном» чтобы установить программу.
Разумеется, нет никакой возможности просто скачать программу и сохранить её на флешке на случай необходимости. Ну и, конечно же, разработчики издевательски предлагают скомпилировать OBS Studio из исходного кода, умалчивая о том, что компиляция данной программы — крайне сложный и проблематичный процесс, буквально невозможный для подавляющего большинства пользователей ПК.

реклама
Кто-то скажет про Flathub (Flatpak), однако этот способ распространения ПО ещё более несостоятелен, чем классические репозитории дистрибутивов Linux. Более того, многие дистрибутивы Flatpak даже не поддерживают, особенно старые, хотя и пытаются заявить обратное, а сам способ распространения софта представляет собой очередной пакетный менеджер, зависимый от репозиториев в интернете, только в худшей реализации и с массой проблем. Даже существует специальный аддон для записи видео в софте и играх, использующих Vulkan или OpenGL API. Это всецело вина Flatpak с его кривой «песочницей». Звучит дико, что программа для записи видео, без аддонов не может захватить окно с игрой, но это реальность линуксоидных способов распространения софта.
Flatpak даже не позволяет скачивать автономные пакеты для сохранения и установки без зависимости от интернета и серверов. Он также не работает без предустановленного в операционную систему пакетного менеджера. Ну и вдобавок есть огромная масса проблем, вытекающих из попыток всё крутить в дырявой песочнице, едва ли как-либо защищающей систему пользователя от настоящих угроз. Настолько Flatpak плох как способ распространения софта.
![]() |
![]() |
Кто-то заикнётся про репозитории дистрибутивов Linux, но там будут только давно устаревшие версии ПО. Да, можно перейти на нестабильную ветку, постоянно обновляющуюся, в обязательном порядке переустановив Linux, с кучей проблем и ошибок, и там может оказаться актуальная версия софта. Но проблема в том, что в линуксоидных репозиториях бурлит ад зависимостей.
OBS Studio для Linux буквально разорвана на десятки разных зависимостей, каждая из которых имеет свои собственные конфликты. Более того, некоторые зависимости числятся как недоступные. Такое абсолютно невозможно распространять, даже если и выйдет заполучить отдельные пакеты в виде файлов.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
реклама
Фактически мы не имеем ни одного официального способа действительно получить программу OBS Studio для платформы Linux. Есть только централизованные репозитории с массой проблем, зависящие от доброй воли и настроения владельцев, а также от высокоскоростного доступа в интернет. Это буквально цифровое рабство в ошейнике на поводке, так как пользователь не имеет контроля над тем, что линуксоиды там хранят в своих репозиториях и когда разрешено получать доступ. И это мракобесие они ещё прикрывают личиной свободы: мол, Linux, Open Source, «тысячи глаз» якобы следят за безопасностью и так далее.
Пользователям Windows беспокоиться нет смысла: даже если разработчики OBS Studio прекратят выпуск адекватных установочных пакетов и zip-архивов, пригодных для распространения и использования, всегда есть конкуренты с альтернативами. А если говорить только про запись видео, то есть много вариантов гораздо более подходящих, особенно если записывать нужно на старом компьютере. Дело в том, что OBS Studio требует от видеокарты поддержки OpenGL 3.2, и это её серьёзный недостаток, препятствующий запуску на старых системах. Но это уже вторичная проблема, хотя и серьёзная.
Для Windows потеря OBS Studio не будет проблемой: всегда найдётся десяток альтернатив, в том числе более узкоспециализированных и качественных, под каждый конкретный случай. Но вот для Linux это станет серьёзным ударом, потому что эта платформа и так обделена качественным софтом, как раз по вине несостоятельных методов распространения, непригодных для сохранения и автономного использования, а также по вине токсичного и некомпетентного сообщества.
Альтернативы
Как достаточно опытный пользователь Linux, я уже давно создал свои версии установочных пакетов программы OBS Studio. Один вариант представляет собой перепакованный AppImage-контейнер, что повысило прозрачность и значительно снизило размер распространяемого пакета. Может показаться, что 148 мегабайт вместо оригинальных 189 мегабайт — не такая уж большая разница в данном конкретном случае. Но это уже более 20 процентов сэкономленного места в хранилище только на одном пакете. А если таких пакетов хранится на 10 терабайт? Это уже более 2 терабайт сэкономленного места. Выгода неоспорима.

реклама
Да, после установки программы вес может многократно увеличиться, но это и не является проблемой, потому что людям не нужен весь существующий в мире софт на одном компьютере в установленном виде. Некоторые могут заметить, что мои пакеты уже немного устарели, но они существуют и всегда готовы к установке даже на компьютерах, никогда не подключавшихся к интернету.
С другой стороны, в репозиториях дистрибутивов Linux зачастую лежат гораздо более старые версии OBS. В отличие от самодостаточных пакетов в формате Installer-SH, репозитории в прямом смысле умирают, ведь на их поддержание нужно постоянно тратить ресурсы. Да и с доверием к репозиториям есть серьёзные проблемы: сегодня одно, а завтра другое могут подсунуть, вместо какого-нибудь пакета. Особенно сильно страдают от этого rolling-дистрибутивы вроде Arch и его производных.

Тем временем пакеты формата Installer-SH находятся прямо в руках пользователя: они прозрачны, предсказуемы и информативны. Однажды проверив их, пользователь может сохранить программу и в любой момент воспользоваться сохранённой копией, каждый раз получая ожидаемый и нужный результат. К сожалению, современные разработчики настолько некомпетентны и погрязли в безумной гонке обновлений, что позабыли о нуждах простых пользователей.
Пользователям не нужны самые новые версии ПО, им нужны инструменты решающие их задачи и удовлетворяющие их потребности. Стабильность важна, потому что без стабильной основы нет перспектив. Формат под названием Installer-SH как раз обеспечивает стабильность, помимо прочих преимуществ относительно линуксоидных способов распространения ПО.
![]() |
![]() |
Да, я сам компилировал когда-то OBS Studio 31, так как разработчики оказались не способны адекватно скомпилировать свою программу для платформы Linux. Но эта версия работает в дистрибутивах, начиная с Debian 12 и производных. Это гораздо лучше всего, что есть официально от разработчиков. Однако уже вышла 32-я версия программы, да и нашёлся неплохой вариант для перепаковки в более универсальный и совершенный формат под названием Installer-SH.
Новый источник
Есть неофициальные AppImage-варианты программы OBS Studio, один из таких (archimage) я уже перепаковывал в свой формат Installer-SH. Там была действительно хорошая совместимость с разными и старыми дистрибутивами Linux. Однако были и серьёзные проблемы, потому что та версия программы представляла собой контейнер с половиной Linux внутри. И этот контейнер практически не «дружил» с основной операционной системой, из-за чего возникли проблемы с производительностью и функциональностью.
Я уже думал расчехлять виртуальную машину с тонной уникальных зависимостей и костылей, специально подготовленных для компиляции одного лишь OBS Studio. Но решил пройтись по интернету в поисках более адекватного неофициального варианта, пригодного для использования, и нашёл.
Да, это очередной AppImage-контейнер, хотя автор репозитория и заявляет, мол, у него якобы не контейнер. Ещё он заявляет, что данный контейнер содержит всё необходимое для работы и может работать на любом дистрибутиве Linux, включая старые и основанные на musl вместо злополучного glibc.
![]() |
![]() |
Хотя часть заявлений и не соответствует действительности, данный репозиторий заслужил звезду от меня, потому что автор действительно постарался и сделал пока что лучший неофициальный вариант программы OBS Studio в плане работоспособности среди мне известных. Единственная проблема — это AppImage-контейнер, от которого придётся избавиться.
Как пользователь, я не хочу «танцевать с бубном» с очередными линуксоидными пакетными менеджерами, навязываемыми автором репозитория. Да и сам AppImage крайне неудобен в использовании, так как имеет проблемы с интеграцией и конфликты файлов конфигурации. Я хочу просто установить и пользоваться программой без конфликтов и прочего мракобесия, поэтому будем перепаковывать эту программу в формат под названием Installer-SH.
Создание пакета формата Installer-SH
Если честно, я уже провёл некоторые тесты. Данный AppImage-контейнер работает начиная с Debian 9 и распакованная версия не потребовала специальных доработок и костылей. Это радует, потому что не придётся вносить в лаунчер никаких костылей для правильного запуска программы.
На всякий случай заново распаковываю AppImage-контейнер, чтобы сохранить оригинальную структуру файлов и ничего не напутать. Также заранее скопировал Installer-SH версии 2.9 и переименовал его для соответствия имени программы.

Первым делом настраиваю лаунчер. Отключаю мультиархитектурность, так как программа только для Linux и не запустится на платформе FreeBSD. То же делаю и в настройках главного скрипта инсталлера. Отключаю паузу терминала, так как программа имеет пользовательский интерфейс и в этой настройке нет нужды. Ну и прописываю пути к исполняемому файлу и каталогу.

Ну а дальше настраиваю главный скрипт установочного пакета Installer-SH и заполняю информацию о программе, чтобы пользователь понимал, что это такое и для чего.
![]() |
![]() |
Я сейчас действую непоследовательно, поэтому только сейчас принялся за настройку ярлыков взяв за основу оригинальный ярлык, из которого беру в основном пояснительные комментарии.
![]() |
![]() |
Вспомогательный скрипт для создания каталога portsoft в оперативной памяти я переименовываю, чтобы его не удалила система очистки мусора в составе инсталлера. Он понадобится для тестирования в дистрибутивах вроде Fedora, выделяющих крайне мало места под файловую систему.

Убедившись в том, что всё правильно настроено и подготовлено, я упаковываю файлы в архивы. Сначала пакую в формат tar.xz с оптимизированными параметрами сжатия. Потом перепакую более мощным и производительным архиватором 7-Zip, если уровень сжатия меня не устроит.

И да, уровень сжатия меня действительно не устроил, потому что архиватор 7-Zip упаковал программу значительно лучше.
Как можете заметить, архив, упакованный архиватором 7-Zip с оптимизированными настройками, справился с задачей гораздо лучше «линуксоидного» архиватора tar, также выполнившего работу с оптимизированными параметрами сжатия. Разница превысила 14 мегабайт в пользу архива 7-Zip, а значит, есть смысл использовать именно этот формат, даже если заплатить придётся увеличением размера пакета на 3,6 мегабайта. Именно столько весит независимый архиватор, гарантирующий, что всё будет установлено как положено даже в самых извращённых дистрибутивах Linux.

Теперь можно протестировать установочный пакет и исправить ошибки, если они были допущены. Для OBS Studio я оставил активными настройки инсталлера, отвечающие за режим установки и хранение файлов конфигурации. По умолчанию, конечно же, программа устанавливается в домашний каталог согласно спецификациям PortSoft и использует выделенный каталог для хранения файлов конфигурации.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Всё работает как положено и не конфликтует с другими версиями OBS Studio, установленными в моей системе, благодаря формату под названием Installer-SH. Да, другие версии OBS не объединились в один раздел в меню, потому что данное улучшение пользовательского опыта было реализовано лишь в последних версиях Installer-SH, но это не проблема.

Осталось провести чистку и расширенное тестирование на совместимость с разными дистрибутивами Linux, чтобы системные требования в информации о программе, были максимально полными и полезными.

Расширенное тестирование
В дистрибутиве Debian 7 программа не запустилась в оригинальном формате AppImage. Увы. Installer-SH без проблем установил OBS даже в таком старом дистрибутиве, хотя программа также не запустилась. Но тут примечателен тот факт, что Installer-SH открыл терминал с сообщением об ошибке, проинформировав об этом событии пользователя. Это называется хорошим пользовательским опытом, потому что дистрибутивы Linux обычно никак не информируют пользователя об ошибках при запуске софта, эту системную задачу взял на себя Installer-SH.
![]() |
![]() |
![]() |
![]() |
Защитники «дряхлого пингвина», вероятно, попытаются обвинить во всех проблемах мой инсталлер — мол, программа не запустилась. Но тут проблем никаких нет, потому что пользователь будет честно предупрежден в системных требованиях, что программа совместима с Debian 9 и выше (по мере тестирования буду дополнять системные требования). Более того, автор перепакованного AppImage заявил о совместимости со всеми дистрибутивами Linux, даже старыми, но не указал границу совместимости. Так что мой формат гораздо честнее и дружелюбнее к пользователю, чем всякие линуксоидные AppImage. Это доказанный факт.
В Debian 8, разумеется, OBS Studio 32 тоже не запустилась. Я это и так знал, но для наглядности протестировал и показал.
![]() |
![]() |
![]() |
В Debian 9 программа уже запускается в обоих вариантах распространения. Так как данная версия дистрибутива Linux сломана «из коробки», Installer-SH честно предупреждает пользователя о возможных проблемах в меню приложений ещё на этапе показа системных требований и информации о ПО. Конечно, я бы мог запрограммировать свой инсталлятор таким образом, чтобы он вносил исправления в некорректно работающие дистрибутивы Linux, но это откровенно не забота инсталлятора. Работоспособность дистрибутива всецело является обязанностью разработчиков операционной системы, а не установочного пакета. Пусть скажут спасибо за то, что я даже такие проблемные системы учитываю и подставляю «костыли», чтобы всё хоть как-то работало.
![]() |
![]() |
![]() |
![]() |
А потом я провёл сравнительное тестирование. Предварительно, несколько раз запустил оба варианта OBS Studio, чтобы всё прокэшировалось и прогрузилось системой, а затем сравнил скорость запуска. Я заранее установил курсор в правый верхний угол, чтобы сразу закрыть программу, как только она запустится, и приступил к тестам.
Итого имеем чуть больше одной секунды для варианта Installer-SH и чуть больше двух секунд для варианта AppImage. Да и на глаз было заметно, что AppImage-контейнер запускается дольше, несмотря на кэширование и предварительную прогрузку.

Однако в иных условиях результаты могут быть другими. Многое зависит от работы кэшей операционной системы и технических характеристик компьютера. Так что не вижу смысла сильно заострять внимание на таких тестах.
Есть только одна проблема с данной неофициальной версией OBS Studio: она мусорит во временном каталоге. По крайней мере, вариант Installer-SH просто закидывает ссылки на существующие каталоги, в то время как AppImage монтирует контейнер в этот же временный каталог и там же создаёт ссылки.
![]() |
![]() |
Разумеется, я проверил вариант, когда OBS Studio уже запущена и пользователь пытается запустить второй экземпляр. Программа предупреждает о том, что она уже запущена и, вроде бы, ничего не поломалось на первый взгляд. В любом случае, я сейчас вижу отвратительную и некомпетентную реализацию программного обеспечения для Linux. Это одна из серьёзных причин, почему Linux всё никак не станет пригодным для использования в настольном сегменте.

Manjaro 17 успешно прошла проверку. Вписываем этот дистрибутив в список совместимых платформ.
![]() |
![]() |
Далее проверяем дистрибутив Fedora. OBS Studio запустилась начиная с 24-й версии дистрибутива. Правда, я заметил, что после запуска OBS Studio файловая система Fedora иногда переходит в режим «только для чтения». Причём неважно, запускаю ли я AppImage или установленную версию ПО. Вполне возможно, проблема была в виртуальной машине, потому что после перезагрузки виртуальной машины всё пришло в норму. Странная была проблема, которую я не смог повторно воспроизвести для выяснения обстоятельств и причин.
![]() |
![]() |
![]() |
Дальше проверяем Slackware 15 и всё работает как положено.
![]() |
![]() |
Дистрибутив openSUSE Leap 15 также был успешно протестирован.
![]() |
![]() |
Что бы ещё такого специфического проверить? Точно, нужно проверить ROSA Fresh 12.2! Так как я загрузил дистрибутив с русской локализацией, Installer-SH автоматически определил язык и сам выбрал русский. Всё работает.
![]() |
![]() |
На этом завершаю тестирование, вношу проверенные дистрибутивы в список совместимости и создаю распространяемый tar-архив с программой.

Как можете заметить, даже при перепаковке действительно хорошо проработанного AppImage-контейнера, эта же программа в формате Installer-SH занимает заметно меньше места на диске при хранении. Разница достигает 15% в пользу формата под названием Installer-SH.

Ну и напоследок: устанавливаю OBS в системном режиме с разными параметрами, лишний раз убедившись, что всё работает правильно, даже если программу установят для всех пользователей компьютера.
![]() |
![]() |
![]() |
![]() |
Заключение
Осталось загрузить новый пакет с актуальной версией OBS Studio в репозиторий Chimbalix-Software-Catalog. Теперь я действительно владею установочным пакетом программы OBS Studio для Linux и не завишу ни от доброй воли владельцев репозиториев, ни от их работоспособности. Это называется правильным и надёжным способом распространения софта: когда пользователь владеет копией программы и не нуждается в разрешении посторонних, чтобы установить её.

https://github.com/Shedou/Chimbalix-Software-Catalog/releases/tag/obs3212
Да, этот пакет однажды устареет естественным образом, но кто сказал, что из-за этого он станет бесполезным? Так что пусть идут лесом все те, кто увяз в погоне за самыми новыми версиями и при этом упрекает окружающих в том, что они предпочитают рабочие и предсказуемые инструменты, глупой погоне за обновлениями.
Некоторые могут возразить в защиту устоев Linux, мол, AppImage тоже можно сохранить на флешке. Но предоставляет ли AppImage такой же пользовательский опыт, информативность, прозрачность и экономию места при хранении софта, как Installer-SH? Очевидно, что нет. И хотя для OBS Studio мне пришлось отключить мультиплатформенность, сам формат Installer-SH позволяет при необходимости упаковывать софт под Linux и FreeBSD разных архитектур в единый пакет — на такое AppImage точно не способен.
На этом можно завершить статью.

Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.





















































