aptのエラー対処まとめ|Unable to locate package・接続エラー・grub-pc
/ 7 min read
Table of Contents
はじめに
apt のエラーは、原因が分かってしまえば対処は一瞬なのに、メッセージから原因が読み取りにくいものが多くあります。実際に遭遇したものをまとめました。
E: Unable to locate package
もっともよく見るエラーです。
$ apt-get install vimE: Unable to locate package vim「そんなパッケージはない」と言われていますが、実際にはパッケージ一覧を取得していないだけであることがほとんどです。まず apt update を実行します。
$ sudo apt update$ sudo apt install vimapt update はパッケージの一覧情報を取りに行くコマンドで、これを一度もやっていない状態では、aptはどんなパッケージが存在するかを知りません。
apt update しても見つからない場合は、そのパッケージが標準のリポジトリに含まれていない可能性があります。その場合は提供元の手順に従ってリポジトリを追加します。GitHub CLI(gh)などが該当することがあります。
$ sudo apt update$ sudo apt install ghこれで入らない場合は、公式のインストール手順を参照してください。
sudo: apt-add-repository: command not found
リポジトリを追加しようとしたときに出ます。
$ sudo apt-add-repository ppa:xxxsudo: apt-add-repository: command not foundこのコマンドは標準では入っていないことがあるため、パッケージを入れれば解決します。
$ sudo apt update$ sudo apt install software-properties-commonapt updateで接続エラーが出る(WSL2)
WSL2のUbuntuで、突然パッケージ一覧を取得できなくなることがあります。名前解決ができていないので、DNSサーバーを指定します。
$ echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null$ sudo apt updateConfiguring grub-pc の画面が出る
apt upgrade の途中で、ブートローダーのインストール先を聞く青い画面が出ることがあります。
対処は、カーソルキーで /dev/sda を選び、スペースキーで選択するだけです。* が付けば選択されています。そのままEnterで進みます。
ModuleNotFoundError: No module named ‘apt_pkg’
apt update の最後にPythonのトレースバックが出るケースです。
Traceback (most recent call last): File "/usr/lib/cnf-update-db", line 8, in <module> from CommandNotFound.db.creator import DbCreator File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module> import apt_pkgModuleNotFoundError: No module named 'apt_pkg'E: Problem executing scripts APT::Update::Post-Invoke-SuccessE: Sub-process returned an error code原因は、update-alternatives でシステムの python3 を別のバージョンに差し替えたことです。aptの内部スクリプトは、OSに元から入っているPythonのバージョン向けにビルドされた apt_pkg を読み込むため、python3 の向き先を変えるとモジュールが見つからなくなります。
元のバージョンに戻せば復旧します。
# 現在の設定を確認して、元のバージョンを選び直す$ sudo update-alternatives --config python3おわりに
apt のエラーは、Unable to locate package のように「無いと言われているが実は情報が古いだけ」というパターンが多くを占めます。まず sudo apt update を試す、というのを反射にしておくと、調べる前に解決することがかなりあります。
