pacman: error while loading shared libraries: libcrypto.so.1.1

目次

何の話か

ArchLinuxでopensslをアップデートした直後からpacmanがタイトルのエラーで動かなくなった。 どう直したかというお話。

解決法

まず足りていない動的ライブラリをlddコマンドで洗い出す。 今回はこんな感じ。

$ ldd /usr/bin/pacman
	linux-vdso.so.1 (0x00007fff89ddd000)
	libalpm.so.13 => /usr/lib64/libalpm.so.13 (0x00007f3294631000)
	libarchive.so.13 => /usr/lib64/libarchive.so.13 (0x00007f329456a000)
	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f3294383000)
	libcrypto.so.1.1 => not found
	libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f32942bf000)
	libgpgme.so.11 => /usr/lib64/libgpgme.so.11 (0x00007f329426b000)
	libcrypto.so.1.1 => not found
	libacl.so.1 => /usr/lib64/libacl.so.1 (0x00007f3294261000)
	libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f3294236000)
	liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00007f329420c000)
	libzstd.so.1 => /usr/lib64/libzstd.so.1 (0x00007f3294163000)
	liblz4.so.1 => /usr/lib64/liblz4.so.1 (0x00007f329413f000)
	libbz2.so.1.0 => /usr/lib64/libbz2.so.1.0 (0x00007f329412c000)
	libz.so.1 => /usr/lib64/libz.so.1 (0x00007f3294112000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f3294696000)
	libnghttp2.so.14 => /usr/lib64/libnghttp2.so.14 (0x00007f32940e6000)
	libidn2.so.0 => /usr/lib64/libidn2.so.0 (0x00007f32940c4000)
	libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x00007f3294083000)
	libpsl.so.5 => /usr/lib64/libpsl.so.5 (0x00007f329406e000)
	libssl.so.1.1 => not found
	libcrypto.so.1.1 => not found
	libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007f329401a000)
	libbrotlidec.so.1 => /usr/lib64/libbrotlidec.so.1 (0x00007f329400c000)
	libassuan.so.0 => /usr/lib64/libassuan.so.0 (0x00007f3293ff5000)
	libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00007f3293fcf000)
	libunistring.so.2 => /usr/lib64/libunistring.so.2 (0x00007f3293e23000)
	libssl.so.1.1 => not found
	libcrypto.so.1.1 => not found
	libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00007f3293d4b000)
	libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00007f3293d1b000)
	libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x00007f3293d15000)
	libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00007f3293d07000)
	libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x00007f3293d00000)
	libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007f3293cee000)
	libbrotlicommon.so.1 => /usr/lib64/libbrotlicommon.so.1 (0x00007f3293ccb000)

libssl.so.1.1libcrypto.so.1.1が足りていない。
wget等も軒並みこれらのライブラリが足りなくて動かない。
この2つはopenssl-1.1パッケージに含まれるものなので、ブラウザから適当なミラーにアクセスしてopenssl-1.0-1.0.2.u-1-x86_64.pkg.tar.zstをダウンロード後、tarコマンドで展開。
中に欲しいライブラリがあるので、それらを/usr/libあたりにコピー。
ルート権限が必要だが、sudoが使えなかったのでsuでユーザを切り替えてコピーした。
以上を終えて再度lddを見るとnot foundが解消された。

カテゴリー:Linux
記事作成日:2022-12-04