yes1111: (Default)
[personal profile] yes1111


/opt/1C/v8.3/x86_64/1cestart: error while loading shared libraries: libwebkitgtk-3.0.so.0: cannot open shared object file: No such file or directory

Наверняка это сообщение не раз видел каждый, кому доводилось устанавливать и запускать под Linux программу 1С:Предприятие версии 8.3. Довелось столкнуться с ним на днях и мне, в процессе допиливания дистрибутива CentOS 8 под нужды нашей организации.

Недостающая библиотека содержится в пакете webkitgtk3. К сожалению, из свежих дистрибутивов - по крайней мере, семейства RHEL/Fedora, этот пакет исключен. Начиная с Fedora 27, его там нет. И пусть это было сделано исключительно из благих побуждений, по соображениям безопасности - но вряд ли нашему брату сисадмину от этого сколько-нибудь легче. Поскольку пришедший ему на смену webkit2gtk3 в данном случае ему не замена.

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

За основу я взял пакет webkitgtk3-2.4.11-6.fc28.src.rpm, найденный здесь - поскольку именно Fedora 28 лежит в основе дистрибутива RHEL 8/CentOS 8. К сожалению, готовые бинарные пакеты для Fedora 28 на тот момент (март 2020 года) были уже недоступны, а на данный момент (конец апреля 2020 года) недоступен уже и соответствующий src.rpm пакет. А бинарники для Fedora 29 и более поздних, для EL8 уже не подходят, зависимости там другие.

И если со сборкой 64-битной версии не возникло практически никаких затруднений (если не считать затруднением примерно 8-часовую продолжительность процесса на моем ноутбуке), достаточным оказалось лишь чуть-чуть подправить .spec-файл, то сборка для i686 преподнесла неожиданный сюрприз. После установки всех недостающих 32-битных зависимостей она вдруг завершилась аварийно, с ошибкой сегментирования.

Поскольку, как я понял, ошибка каким-то образом связана с gobject-introspection, я попробовал по очереди gobject-introspection-devel как x86_64, так и i686. При этом с x86_64 в самом конце процесса сборки выскакивала ошибка сегментирования (Program received signal SIGSEGV, Segmentation fault), а с gobject-introspection-devel.i686 - ругань на wrong ELF class: ELFCLASS32.

В конце концов, я просто отключил поддержку
gobject-introspection, поменяв в webkitgtk3.spec --enable-introspection на --disable-introspection. В результате пакет webkitgtk3 для архитектуры i686, наконец-то, собрался. Но радость моя оказалась преждевременной. При попытке запуска 32-битной версии клиента 1С я увидел сообщение:

Ошибка сегментирования (стек памяти сброшен на диск)

В конце концов, я решил выяснить, кроется ли причина этой беды в самом пакете, или же в чем-то другом. Для этого я стал пробовать различные 32-битные прикладные программы, использующие webkitgtk3. В частности, Midori различных версий. Результат везде был один и тот же: ошибка сегментирования. Но вдруг эта же ошибка выскочила и при запуске 32-битной версии браузера Midori
, собранной для Fedora 30 (midori-7.0-2.fc30.i686.rpm) . А ведь он использует уже не webkitgtk3, а новый webkit2gtk3!

Значит, злополучный пакет (точнее, библиотека из него) здесь действительно ни при чем. И тут меня посетила догадка - проверить давно известный факт: 32-битные приложения могут чудить из-за криво установленного видеодрайвера Nvidia. Во время установки драйвер инсталлер спрашивает, нужно ли устанавливать 32-битные библиотеки совместимости (32-bit Compatibility Libraries):



Беда лишь в том, что при установке драйвера в свежеустановленной системе они редко устанавливаются правильно с первого раза. Соответственно, 32-битные программы, использующие возможности графики, выходящие за рамки базовых функций, при этом ведут себя неадекватно. Проблема устраняется повторной установкой того же видеодрайвера просто поверх предыдущей установки. Вот именно об этом я и позабыл, когда ставил систему на технологическую машину.

Итак, после повторной установки видеодрайвера 32-битная версия клиента 1С успешно запустилась. Но самое интересное и удивительное случилось, когда я на радостях попробовал заново пересобрать webkitgtk3.i686 уже с поддержкой gobject-introspection. И ведь что характерно: все собралось без сучка и задоринки, с первого раза! Причем для этого нужна именно 64-битная версия gobject-introspection-devel, которая до переустановки видеодрайвера выдавала у меня в конце сборки сигнал SIGSEGV.

Вот такие чудеса случаются на свете. Когда из-за видеодрайвера не хочет запускаться программа - это логично и естественно. Но вот чтобы из-за видеодрайвера не хотел собираться пакет - с таким явлением лично я столкнулся впервые. Что ж, как говорится, век
живи - век учись...

Всем добра, и только ровного софта!

P.S. Ну, а как же самими пакетами, спросите вы. Логично. Вот они - в архивах, вместе с исходниками.
webkitgtk3-2.4.11-7.el8 лежит здесь.
А практически аналогичный ему webkitgtk-2.4.11-7.el8, с которым возникали аналогичные проблемы - здесь.
Исходник для него был взят отсюда.



Profile

yes1111: (Default)
yes1111

June 2021

M T W T F S S
 123456
7891011 1213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags