После очередного обновления – 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.0
– ldd
при первом запуске показал ещё и отсутсвие 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.