Arch: skype error while loading shared libraries: libssl.so.1.0.0 – три решения

Автор: | 06/05/2017
 

После очередного обновления – Skype перестал запускаться с ошибкой отсутствия библиотеки:

$ skype 
/usr/lib32/skype/skype: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

Проверяем зависимости общих библиотек с помощью ldd:

[simterm]

$ ldd /usr/lib32/skype/skype
...
        libssl.so.1.0.0 => not found
        libcrypto.so.1.0.0 => not found
...

[/simterm]

Решение 1 – downgrade Skype (неправильно)

Можно попробовать откатить сам скайп:

[simterm]

$ ls -l /var/cache/pacman/pkg/skype*
ls: cannot access '/var/cache/pacman/pkg/skype*': No such file or directory

[/simterm]

Если есть – восстанавливаем:

[simterm]

$ sudo pacman -U /var/cache/pacman/pkg/skype-old-version.pkg.tar.xz

[/simterm]

Решение 2 – downgrade lib32-openssl (неправильно)

Пробуем найти либу, устанавливаем lib32-openssl:

[simterm]

$ sudo pacman -S lib32-openssl
warning: lib32-openssl-1:1.1.0.e-1 is up to date -- reinstalling
..

[/simterm]

А он уже есть, но последняя версия – lib32-openssl-1:1, а ошибка – из-за libssl.so.1.0.0.

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

[simterm]

$ ls -l /usr/lib32/libssl.so*
lrwxrwxrwx 1 root root     13 Mar 13 05:44 /usr/lib32/libssl.so -> libssl.so.1.1
-rwxr-xr-x 1 root root 446328 Mar 13 05:44 /usr/lib32/libssl.so.1.1

[/simterm]

А версия 64 – 1.0:

[simterm]

$ pacman -Ql openssl-1.0 | grep libssl.so
openssl-1.0 /usr/lib/libssl.so.1.0.0
openssl-1.0 /usr/lib/openssl-1.0/libssl.so
$ pacman -Ql lib32-openssl | grep libssl.so
lib32-openssl /usr/lib32/libssl.so
lib32-openssl /usr/lib32/libssl.so.1.1

[/simterm]

Ищем предыдущие версии для 32 бит:

[simterm]

$ ls -l /var/cache/pacman/pkg/lib32-openssl-1\:1.*
-rw-r--r-- 1 root root 1012824 Jan 26 19:09 /var/cache/pacman/pkg/lib32-openssl-1:1.0.2.k-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 1085892 Mar 13 05:44 /var/cache/pacman/pkg/lib32-openssl-1:1.1.0.e-1-x86_64.pkg.tar.xz

[/simterm]

Восстанавливаем:

[simterm]

$ sudo pacman -U /var/cache/pacman/pkg/lib32-openssl-1\:1.0.2.k-1-x86_64.pkg.tar.xz 
loading packages...
warning: downgrading package lib32-openssl (1:1.1.0.e-1 => 1:1.0.2.k-1)
...

[/simterm]

Проверяем:

[simterm]

$ sudo ls -l /usr/lib32/libssl.so*
lrwxrwxrwx 1 root root     15 Jan 26 19:07 /usr/lib32/libssl.so -> libssl.so.1.0.0
-r-xr-xr-x 1 root root 516412 Jan 26 19:07 /usr/lib32/libssl.so.1.0.0

[/simterm]

Пользуемся Skype:

[simterm]

$ skype  &
[1] 32442

[/simterm]

Последним – правим /etc/pacman.conf, добавляем в исключения через IgnorePkg:

[simterm]

$ cat /etc/pacman.conf | grep Igno
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
IgnorePkg   = lib32-openssl
#IgnoreGroup =

[/simterm]

Что бы попробовать обновиться позже.

Готово.

Решение 3 (правильное)

Кроме недостающей библиотеки libssl.so.1.0.0ldd при первом запуске показал ещё и отсутсвие libQtWebKit.so.4:

[simterm]

$ ldd /usr/lib32/skype/skype
...
        libQtWebKit.so.4 => not found
...

[/simterm]

Таки запустив скайп – я решил поправить и эту ошибку, что привело меня в AUR-репозиторий пакета lib32-qt4, в комментариях к которому было больше деталей:

WoefulDerelict commented on 2017-05-03 22:44
PhoenixtheII: Yea, lib32-openssl-1.0 is a new special 1.0 compatibility package that became necessary after lib32-openssl moved to 1.1.0. 1.0 is part of the package’s name like the openssl-1.0 package it mirrors in [Extra]. These packages
provide support for legacy software that isn’t compatible with openssl 1.1.0. It does need to be present in the chroot for this to build against or you’ll get an error. Glad you got it sorted. One hopes the update to icu support isn’t pa
inful.

Впрочем – libQtWebKit.so.4 файл нашёлся в либах самого скайп – /usr/share/skype/lib/libQtWebKit.so.4.

Восстанавливаем lib32-openssl-1:1.1, и добавляем lib32-openssl-1:1.0 из AUR:

Правим pacman.conf, обновляем lib32-openssl:

[simterm]

$ sudo pacman -S lib32-openssl
resolving dependencies...
looking for conflicting packages...

Packages (1) lib32-openssl-1:1.1.0.e-1
...

[/simterm]

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

[simterm]

$ yaourt -S lib32-openssl-1.0
...
==> Verifying source file signatures with gpg...
    openssl-1.0.2k.tar.gz ... FAILED (unknown public key D9C4D26D0E604491)
...

[/simterm]

Лять…

Правим ключи, как описано в посте Arch: yaourt – ERROR: One or more PGP signatures could not be verified.

Повторяем билд, открываем PKGBUILD, находим ключ:

 

...
validpgpkeys=('8657ABB260F056B1E5190839D9C4D26D0E604491')
...

Получаем его:

[simterm]

$ gpg --recv-key 8657ABB260F056B1E5190839D9C4D26D0E604491
gpg: key D9C4D26D0E604491: public key "Matt Caswell <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1

[/simterm]

Повторяем установку, проверяем файлы библиотек:

[simterm]

 

$ ls -l /usr/lib32/libssl.so*
lrwxrwxrwx 1 root root     13 Mar 13 05:44 /usr/lib32/libssl.so -> libssl.so.1.1
-r-xr-xr-x 1 root root 506052 May  6 16:07 /usr/lib32/libssl.so.1.0.0
-rwxr-xr-x 1 root root 446328 Mar 13 05:44 /usr/lib32/libssl.so.1.1

[/simterm]

Запускаем скайп:

[simterm]

$ skype &
[1] 27304

[/simterm]

Готово.

UPD Проблема возникла ещё раз, решение – в посте Arch Linux: Skype – /usr/lib32/libcrypto.so.1.0.0: version `OPENSSL_1.0.2d’ not found.