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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo pacman -S pulseaudio

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

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

...
==> 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]
...

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

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

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

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]

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

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]

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

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

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

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)
...

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

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

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

sudo pacman -S openssl-1.0

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

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

...
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)

Восстанавливаем «обычный» pulseaudio — удаляем pulseaudio-git:

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
...

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

pulseaudio -D

Запускаем Viber:

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=""

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