На ЛОРе часто можно услышать, мол программисты не клепают коммерческий и профессиональный софт под дистрибутивы Linux не потому что у нас нет нормальных систем дистрибьюции ПО, работающих стандартов и твёрдого API на который можно положиться, а потому что это всё заговор проприетарщиков, конспирология и рептилоиды.
Давеча понадобилось мне открыть несколько изображений весьма специфичного и редкого формата – MBM (MultiBitMap), который в древние века предназначался для хранения нескольких растровых изображений формата BMP и их масок в одном файле со сжатием. Этот формат был распространён в Symbian OS и его предке EPOC, по сути он был примитивным аналогом современных форматов вроде ICNS из macOS или ICO из Windows.
Стандартные программы вроде GIMP’а или Image Viewer’а в Fedora 33 открывать подобные файлы не умеют. В репозиториях дистрибутива тоже ничего путного не нашлось (хотя может быть плохо искал), а вот лёгкое гугление показало что открыть такой файл может просмотрщик изображений XnView.
Программа XnView является проприетарной и коммерческой, хоть и бесплатной для личного использования. Потому она и отсутствует в репозиториях. Но не беда! Идём на официальный сайт программы в раздел загрузок и видим, что её автор не забил (как это обычно бывает) на Linux, а заботливо приготовил помимо DEB-пакетов несколько TAR-ball’ов и даже самодостаточный пакет AppImage соорудил. Вот ведь молодец какой.
Сперва скачиваем AppImage, потому что сам Linus Torvalds с официального сайта AppImage кричит нам «This is just very cool.», а потому предвкушая быстрое решение своей проблемы, делаем:
$ chmod +x XnView_MP.glibc2.18-x86_64.AppImage
$ ./XnView_MP.glibc2.18-x86_64.AppImage
/tmp/.mount_XnView3k4rdy/usr/XnView/XnView: symbol lookup error: /lib64/libkrb5.so.3: undefined symbol: krb5int_push_fscreatecon_for, version krb5support_0_MIT
Ой. Вот такая у нас хвалёная «самодостаточность». Ну ладно, может быть разработчики как-то криво собрали AppImage, бывает, я сам как-то раз криво их собирал, ничего. Технология-то ещё совсем свежая и молодая, 17 лет всего ей.
Ладно, скачиваем TAR-ball. Тут на форуме некоторые линуксоды постоянно кричат, мол пусть разработчики коммерческого софта своё ПО в TAR-ball’ах распространяют, а то пакеты делают только для Ubuntu или вообще их не делают. Если верить им, то случае архива всё должно пройти максимально гладко.
$ tar -xf XnViewMP-linux-x64.tgz
$ ./XnView
./XnView: error while loading shared libraries: libQtAV.so.1: cannot open shared object file: No such file or directory
Хм. Странно. Разработчики забандлили в архив целый Qt, но забыли положить библиотеку, которая может отсутствовать в репозиториях каких-нибудь маргинальных дистрибутивов, сподвигая линуксоидов их использующих заниматься увлекателейшим поиском исходников библиотеки и последующей компиляцией. Но, к счастью, у нас же современная Fedora, так что продолжаем:
$ sudo dnf install libqtav
$ ./XnView
./XnView: error while loading shared libraries: libQtAVWidgets.so.1: cannot open shared object file: No such file or directory
Это уже начинает надоедать. Ладно:
$ sudo dnf install libqtavwidgets
$ ./XnView
./XnView: /lib64/libQt5Network.so.5: version `Qt_5_PRIVATE_API' not found (required by ./XnView)
Ясно, понятно. И как теперь быть? Да просто скачиваем с официального сайта XnView версию для Windows и запускаем её:
$ sudo dnf install wine
$ unzip XnViewMP-win-x64.zip
$ wine XnView.exe
Программа работает, нужное мне изображение открывается, проблема решена. А если бы я не трахался с попытками запуска нативных Linux’овых версий, то решил бы её ещё быстрее.
Послесловие
Неужели великий Джон Кармак был прав, когда говорил о том, что развитие и улучшение WINE – лучший путь для Linux-дистрибутивов, а продавливание нативных портов различных коммерческих программ обречено на провал с этим зоопарком ВСЕГО?
И ведь если бы эти пакеты XnView были собраны на отвались, так нет же, авторы программы постоянно собирают баг-репорты ([1], [2]) пользователей Linux и стараются помочь всем этим несчастным людям.
Вдвойне обидно, что XnView это как раз тот редкий случай, когда программа изначально разработанная специально для Linux (и ещё IRIX) вышла за пределы этой операционной системы и стала популярна на Windows и macOS. Это какой-то позор.