Viber: нет подключения – qt.network.ssl: Incompatible version of OpenSSL

Автор: | 27/02/2019
 

На свежеустановленной Arch Linux Viber запускается, но при авторизации – не может подключиться к сети.

Вообще десктопная версия Вайбера, конечно, убога – но это лучше, чем тыкать кнопочки в телефоне. Да и сам Вайбер, как мессенджер… Решение для домохозяек.

Но по статистке он установлен на 94% Android-телефонах, и по сути стал новым скайпом для обычных пользователей, так что приходится пользоваться – на Телегу не всех хотят переходить.

Решение искал долго, вариантов много, т.к. не сразу понял по какой именно ошибке гуглить, но в конце-концов решение нашлось – и очень простое.

Ошибки выглядят так:

[simterm]

$ viber 
Qt WebEngine ICU data not found at /opt/viber/resources. Trying parent directory...
Qt WebEngine resources not found at /opt/viber/resources. Trying parent directory...
Qt WebEngine ICU data not found at /opt/viber/resources. Trying parent directory...
Qt WebEngine resources not found at /opt/viber/resources. Trying parent directory...
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init
qt.network.ssl: QSslSocket: cannot resolve sk_new_null
qt.network.ssl: QSslSocket: cannot resolve sk_push
qt.network.ssl: QSslSocket: cannot resolve sk_free
qt.network.ssl: QSslSocket: cannot resolve sk_num
qt.network.ssl: QSslSocket: cannot resolve sk_pop_free
qt.network.ssl: QSslSocket: cannot resolve sk_value
qt.network.ssl: QSslSocket: cannot resolve SSL_library_init
qt.network.ssl: QSslSocket: cannot resolve SSL_load_error_strings
qt.network.ssl: QSslSocket: cannot resolve SSL_get_ex_new_index
qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_server_method
qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get_chain
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
qt.network.ssl: QSslSocket: cannot resolve SSLeay
qt.network.ssl: QSslSocket: cannot resolve SSLeay_version
qt.network.ssl: Incompatible version of OpenSSL
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
QQuickItem: Cannot set activeFocusOnTab to false once item is the active focus item.
QQuickItem: Cannot set activeFocusOnTab to false once item is the active focus item.
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init

[/simterm]

Решение #1 (не работает)

Первым, что нагуглилось и пробовал сделать – поправить загрузку библиотеки libssl.so. Костылём, через симлинки, как предлагается тут>>>.

Проверяем файл:

[simterm]

$ ls -l /usr/lib64/libssl.so.1.1 
-rwxr-xr-x 1 root root 585328 Nov 20 19:41 /usr/lib64/libssl.so.1.1

[/simterm]

Создаём симлинк:

[simterm]

22:52:01 [setevoy@setevoy-arch-pc ~]   
$ sudo ln -s /usr/lib64/libssl.so.1.1 /opt/viber/lib/libssl.so

[/simterm]

Запускаем Viber – не работает.

Решение #2 (не работает)

Потом нагуглилось обсуждение тут>>>, в котором говорится про pulseaudio, который прописан в зависимостях Viber-а, но не установился.

Устанавливаем его:

[simterm]

$ sudo pacman -S pulseaudio

[/simterm]

Перезагружаемся, запускаем Viber – нет, не работает.

Есть ещё пакет pulseaudio-git – пробуем его:

[simterm]

...
==> Install or build missing dependencies for pulseaudio-git:
resolving dependencies...
looking for conflicting packages...
:: jack2-dbus and jack are in conflict. Remove jack? [y/N] 
...

[/simterm]

Что за пакет jack2-dbus?

Смотрим описание тут>>> – вроде не критичен, если есть жёсткие зависимости – pacman/yay сказали бы.

Удаляем сначала сам pulseaudio:

[simterm]

$ sudo pacman -Rsn pulseaudio
checking dependencies...
:: firefox optionally requires pulseaudio: Audio support
:: phonon-qt5 optionally requires pulseaudio: PulseAudio support
:: phonon-qt5-gstreamer optionally requires pulseaudio: PulseAudio support
:: polybar optionally requires pulseaudio: pulseaudio module support

Packages (3) rtkit-0.11+10+g493a135-1  webrtc-audio-processing-0.3.1-1  pulseaudio-12.2-2

Total Removed Size:  6.75 MiB

:: Do you want to remove these packages? [Y/n]

[/simterm]

Запускаем ещё раз установку pulseaudio-git:

[simterm]

$ yaourt -S pulseaudio-git
...
delete :: jack2-dbus and jack are in conflict. Remove jack? [y/N] y
...
:: pulseaudio-git and libpulse are in conflict. Remove libpulse? [y/N]

[/simterm]

Соглашаемся, удаляем их, перезагружаемся, запускаем Viber – нет, те же ошибки.

Решение #3 (работает)

А что вообще с библиотеками?

[simterm]

$ ldd /opt/viber/Viber 
        linux-vdso.so.1 (0x00007ffd2b346000)
        libXss.so.1 => /usr/lib/libXss.so.1 (0x00007f5e3a0ca000)
        libqrencode.so => /opt/viber/lib/libqrencode.so (0x00007f5e39eb9000)
        libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f5e39e26000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f5e39c14000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f5e39ad5000)
...

[/simterm]

Всё хорошо, всё найдено…

И вот тут я уже обратил внимание конкретно на строку qt.network.ssl: Incompatible version of OpenSSL в списке сообщений Viber, по которому нагуглилось обсуждение тут>>>.

Устанавливаем openssl-1.0:

[simterm]

$ sudo pacman -S openssl-1.0

[/simterm]

Запускаем Viber – и вуаля! Работает!

Только после успешного подключения – почти сразу же вылетел…

[simterm]

...
PulseAudioService: pa_context_connect() failed
PulseAudioService: pa_context_connect() failed
Assertion 'pthread_mutex_unlock(&m->mutex) == 0' failed at pulsecore/mutex-posix.c:108, function pa_mutex_unlock(). Aborting.
Aborted (core dumped)

[/simterm]

Восстанавливаем “обычный” pulseaudio – удаляем pulseaudio-git:

[simterm]

$ sudo pacman -S pulseaudio
resolving dependencies...
looking for conflicting packages...
:: pulseaudio and pulseaudio-git are in conflict. Remove pulseaudio-git? [y/N] y

Packages (3) libpulse-12.2-2  pulseaudio-git-v12.0.269.gdb788229c-1 [removal]  pulseaudio-12.2-2
...

[/simterm]

Запускаем его:

[simterm]

$ pulseaudio -D

[/simterm]

Запускаем Viber:

[simterm]

$ viber 
Qt WebEngine ICU data not found at /opt/viber/resources. Trying parent directory...
Qt WebEngine resources not found at /opt/viber/resources. Trying parent directory...
Qt WebEngine ICU data not found at /opt/viber/resources. Trying parent directory...
Qt WebEngine resources not found at /opt/viber/resources. Trying parent directory...
qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
qml: type=""
qml: type=""

[/simterm]

И теперь всё работает.