Ubuntuの「ソフトウェアの更新」が起動できない問題への対処

概要

2019年の初めにUbuntuを18.04に更新して,半年ほどしてからUbuntuでのソフトウェアの更新に失敗するようになっていた。1年以上この問題の原因と対処方法がわからず,放置していた。

先日Ubuntu 20.04に更新した際に,この問題が理由で,更新できなかったため,重い腰を上げて原因を調査し,解決できたので情報を記す。

問題

Ubuntuでのソフトウェアの更新を管理している「ソフトウェアの更新」([Software & Updates]) を起動すると,画面が表示される前に起動が終了してしまっていた。なお,アイコンは/usr/share/icons/Yaru/24x24/apps/update-manager.pngなどに格納されている。

コマンドラインから [Software & Updates] の実体のコマンドを直接実行すると,以下のようにエラーでクラッシュしていた。

update-manager
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Segmentation fault (core dumped)

ただ,エラーの内容も少なく,原因の特定が難しかった。

原因

同じ問題の報告もなかなかみつからなかったのだが,「Can’t update&upgrade anymore @ UM 18.04 v2 LTS – Support & Help Requests – Ubuntu MATE Community」のスレッドで同じ問題が報告されていた。

こちらを眺めるかぎり,どうやらOpenSSLの問題らしい。こちらのレスにある通り,OpenSSLの実体を以下の手順で確認した。

type openssl
openssl is hashed (/usr/local/bin/openssl)
/usr/local/bin/openssl version -a
OpenSSL 1.1.0f  25 May 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\""  -Wa,--noexecstack
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib/engines-1.1"

レスに書かれている通りのバージョンであり,システムのOpenSSLにユーザーがインストールした/usr/local/bin/opensslを何故か使っていた。

解決策

/usr/local/はユーザーが自分でシステム全体にインストールする場合のインストール先となっている。そのため,/usr/localはAPTなどのパッケージマネージャーは一切使用しない。Autotoolsなどでインストールする場合,configureのデフォルトのインストール先となっている。

普段であれば,/usr/local/にソフトをインストールすることはない。よく思い出してみると,2017年に動作確認で自分でこちらにOpenSSLをインストールしたのを思い出した。その後,アンインストールせず,そのまま放置していた。

端末からローカル環境で使う場合は,~/.local/にインストールしたOpenSSLを使っていたので,気にしていなかったのだが,システム全体は/usr/localが優先されて気づかずに使っていた。

そもそも,自分で/usr/local/にソフトをインストールすることはないので,以下のコマンドで/usr/local配下をきれいに削除することで,update-managerも無事に起動できるようになった。

rm -rf /usr/local/*

万が一,/usr/localに必要なソフトがあるならば,以下のコマンドなどでopensslだけ削除する。

find /usr/local -name "openssl" -delete

これで解決する。

結論

Ubuntu 18.04でupdate-managerが起動できず,ソフトウェアをアップデートできない問題の対処方法を記した。

do-release-upgradeも同じ原因でクラッシュしていたため,この問題への対応がUbuntu 20.04へのアップグレードでも必須だった。うまく解決できてよかった。

システム全体で使用するパッケージはどこに影響があるかわからないので,やはり/usr/localへのインストールは一切しないほうがいい。代わりに,~/.localにインストールして,ユーザー権限の範疇で好きなソフトを使うのがよく思った。今後も,GNU Stowを使ってできるだけ徹底したい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です