How To:
opera-dev 32bit в системе на стартерките alt-p9-xfce-sysv-20210612-i586Установленный браузер и используемая система
$ opera-developer --version
46.0.2573.0
$ grep CPE /etc/os-release
CPE_NAME="cpe:/o:alt:starterkit:p9"
$ xfce4-about -V
xfce4-about 4.14.1 (Xfce 4.14)
$ cat /image/.disk/info
ALT p9 xfce-sysv/i586 build 2021-06-12
# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 окт 3 14:01 /proc/1/exe -> /sbin/init
На запуске opera-dev в системе 32bit последует отказ с зависанием
$ opera-developer
(opera-developer:2925): Pango-ERROR **: 14:02:40.736: Harfbuzz version too old (1.4.2)
Ловушка трассировки/останова
CrashID=fe2610a4-0e52-4975-a4d8-b9e172211003
^C
Причина почти очевидна. Рассинхронизация версий установленных в системе libpango. Установленные в системе библиотеки libpango, слишком новые для opera-dev-46.0.2573.0.
Смотрим установленные в системе libpango
$ ldd-requires /usr/lib/i386-linux-gnu/opera-developer/opera-developer
Архитектура двоичного файла соответствует ОС
Уже установлены все библиотеки
$ ldd /usr/lib/i386-linux-gnu/opera-developer/opera-developer | grep pango
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb778c000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7736000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb5ef0000)
$ rpm -qf /usr/lib/{libpangocairo-1.0.so.0,libpango-1.0.so.0,libpangoft2-1.0.so.0}
libpango-1.44.6-alt1.i586
libpango-1.44.6-alt1.i586
libpango-1.44.6-alt1.i586
Далее обращаем внимание на версию opera-dev и Build Date
$ rpm -qi opera-dev | grep 'Nam\|Vers\|Release\|Arch\|Build Date'
Name : opera-dev
Version : 46.0.2573.0
Release : alt4
Architecture: i586
Build Date : Пт 18 авг 2017 23:12:57
Первый релиз rpm-пакета в альтах был в p8, 18 августа 2017 года. Идём в архив p8/i586, ищем в нём релиз opera-dev-46.0.2573.0 и выкачиваем пакет libpango, который был в репозитории на момент собранного opera-dev-46.0.2573.0
$ grep libpango-1.40.9 ./archive-p8-i586-libpango-1.40.9.txt
[16994]libpango-1.40.9-alt0.M80P.1.i586.rpm 14-Aug-2017 15:00 233546
16994. http://ftp.altlinux.org/pub/distributions/archive/p8/date/2017/08/20/files/i586/RPMS/libpango-1.40.9-alt0.M80P.1.i586.rpm
Готовим каталог для распаковки rpm-пакета libpango
$ mkdir hlam-libpango-1.40.9
копируем скачанный пакет в этот каталог
$ cp libpango-1.40.9-alt0.M80P.1.i586.rpm hlam-libpango-1.40.9
и переходим в этот каталог
$ cd hlam-libpango-1.40.9
Распаковываем бинарный rpm-пакет
$ rpm2cpio libpango-1.40.9-alt0.M80P.1.i586.rpm | cpio -idmv
./usr/bin/pango-view
./usr/lib/libpango-1.0.so.0
./usr/lib/libpango-1.0.so.0.4000.9
./usr/lib/libpangocairo-1.0.so.0
./usr/lib/libpangocairo-1.0.so.0.4000.9
./usr/lib/libpangoft2-1.0.so.0
./usr/lib/libpangoft2-1.0.so.0.4000.9
./usr/lib/libpangoxft-1.0.so.0
./usr/lib/libpangoxft-1.0.so.0.4000.9
./usr/share/doc/libpango-1.40.9
./usr/share/doc/libpango-1.40.9/AUTHORS
./usr/share/doc/libpango-1.40.9/NEWS
./usr/share/doc/libpango-1.40.9/README
./usr/share/man/man1/pango-view.1.xz
1350 блоков
Смотрим структуру каталогов opera-dev
$ rpm -qvl opera-dev | head -n 8
lrwxrwxrwx 1 root root 55 авг 18 2017 /usr/bin/opera-developer -> /usr/lib/i386-linux-gnu/opera-developer/opera-developer
drwxr-xr-x 2 root root 0 авг 18 2017 /usr/lib/i386-linux-gnu
drwxr-xr-x 2 root root 0 авг 18 2017 /usr/lib/i386-linux-gnu/opera-developer
-rw-r--r-- 1 root root 10219376 авг 18 2017 /usr/lib/i386-linux-gnu/opera-developer/icudtl.dat
drwxr-xr-x 2 root root 0 авг 18 2017 /usr/lib/i386-linux-gnu/opera-developer/lib_extra
-rw-r--r-- 1 root root 3356676 авг 18 2017 /usr/lib/i386-linux-gnu/opera-developer/lib_extra/libffmpeg.so
-rw-r--r-- 1 root root 1548308 авг 18 2017 /usr/lib/i386-linux-gnu/opera-developer/libffmpeg.so
drwxr-xr-x 2 root root 0 авг 18 2017 /usr/lib/i386-linux-gnu/opera-developer/localization
Смотрим распакованный libpango, который был скачан из архива p8
# ll /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpango*
-rw-r--r-- 1 altlinux altlinux 34552 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpangoxft-1.0.so.0.4000.9
-rw-r--r-- 1 altlinux altlinux 92528 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpangoft2-1.0.so.0.4000.9
lrwxrwxrwx 1 altlinux altlinux 27 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpangoxft-1.0.so.0 -> libpangoxft-1.0.so.0.4000.9
-rw-r--r-- 1 altlinux altlinux 55428 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpangocairo-1.0.so.0.4000.9
lrwxrwxrwx 1 altlinux altlinux 27 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpangoft2-1.0.so.0 -> libpangoft2-1.0.so.0.4000.9
-rw-r--r-- 1 altlinux altlinux 342056 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpango-1.0.so.0.4000.9
lrwxrwxrwx 1 altlinux altlinux 29 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0.4000.9
lrwxrwxrwx 1 altlinux altlinux 24 окт 3 14:54 /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpango-1.0.so.0 -> libpango-1.0.so.0.4000.9
Обычно проприетарные программы ищут библиотеки сначала в своём текущем каталоге. И если не находят их, ищут в системе.
Копируем библиотеки libpango распакованного пакета в каталог браузера opera-dev
# cp -d /home/altlinux/hlam-libpango-1.40.9/usr/lib/libpango* /usr/lib/i386-linux-gnu/opera-developer/
Запускаем браузер opera-dev 32bit из меню или из X-терминала
$ opera-developer
[1003/145801.662861:ERROR:sandbox_linux.cc(343)] InitializeSandbox() called with multiple threads in process gpu-process.
[1003/145801.665586:ERROR:service_manager.cc(480)] InterfaceProviderSpec prevented connection from: content_utility to: content_browser
[1003/145901.428759:ERROR:service_manager.cc(480)] InterfaceProviderSpec prevented connection from: content_utility to: content_browser
[1003/145901.527702:ERROR:partner_content_service.cc(1200)] Not an update at all.
[1003/150338.224046:ERROR:buffer_manager.cc(453)] [.DisplayCompositor-0x1093f200]GL ERROR :GL_INVALID_OPERATION : glBufferData: <- error from previous GL command
_
Также см. скриншот.
Также см.
unix.stackexchange.comВопросы и ответы:В: Почему и зачем было написано это howto?
О: Существует вероятность, что пользователь захочет запустить opera-dev в системе на alt-p{9,10}-xfce-sysv-*-i586. Цель этого howto, предоставить пользователю эту возможность.
В: Можно ли пересобрать пакет opera-dev 32bit с включением этого хака в состав пакета?
О: Нельзя. Это запрещает лицензия:
https://www.opera.com/ru/eula/computers2. You are only granted a limited license to use the Software. Subject to the terms and conditions of this EULA, Opera hereby grants you a personal, limited, non-exclusive, non-transferable, non-sublicensable license to:
(B) reproduce and distribute the Software solely as included in an application repository for a desktop open source operating system distribution PROVIDED THAT in all cases the Software is distributed: (i) without modification;Но вы можете добавить необходимые библиотеки в любой каталог системы после установки браузера. Лицензия на Unix-подобную операционную систему, не запрещает это.