skip to content
barorin&

aptのエラー対処まとめ|Unable to locate package・接続エラー・grub-pc

/ 7 min read

Table of Contents

はじめに

apt のエラーは、原因が分かってしまえば対処は一瞬なのに、メッセージから原因が読み取りにくいものが多くあります。実際に遭遇したものをまとめました。

E: Unable to locate package

もっともよく見るエラーです。

Terminal window
$ apt-get install vim
E: Unable to locate package vim

「そんなパッケージはない」と言われていますが、実際にはパッケージ一覧を取得していないだけであることがほとんどです。まず apt update を実行します。

Terminal window
$ sudo apt update
$ sudo apt install vim

apt update はパッケージの一覧情報を取りに行くコマンドで、これを一度もやっていない状態では、aptはどんなパッケージが存在するかを知りません。

apt update しても見つからない場合は、そのパッケージが標準のリポジトリに含まれていない可能性があります。その場合は提供元の手順に従ってリポジトリを追加します。GitHub CLI(gh)などが該当することがあります。

Terminal window
$ sudo apt update
$ sudo apt install gh

これで入らない場合は、公式のインストール手順を参照してください。

sudo: apt-add-repository: command not found

リポジトリを追加しようとしたときに出ます。

Terminal window
$ sudo apt-add-repository ppa:xxx
sudo: apt-add-repository: command not found

このコマンドは標準では入っていないことがあるため、パッケージを入れれば解決します。

Terminal window
$ sudo apt update
$ sudo apt install software-properties-common

apt updateで接続エラーが出る(WSL2)

WSL2のUbuntuで、突然パッケージ一覧を取得できなくなることがあります。名前解決ができていないので、DNSサーバーを指定します。

Terminal window
$ echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
$ sudo apt update

Configuring grub-pc の画面が出る

apt upgrade の途中で、ブートローダーのインストール先を聞く青い画面が出ることがあります。

対処は、カーソルキーで /dev/sda を選び、スペースキーで選択するだけです。* が付けば選択されています。そのままEnterで進みます。

ModuleNotFoundError: No module named ‘apt_pkg’

apt update の最後にPythonのトレースバックが出るケースです。

Terminal window
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_pkg
ModuleNotFoundError: No module named 'apt_pkg'
E: Problem executing scripts APT::Update::Post-Invoke-Success
E: Sub-process returned an error code

原因は、update-alternatives でシステムの python3 を別のバージョンに差し替えたことです。aptの内部スクリプトは、OSに元から入っているPythonのバージョン向けにビルドされた apt_pkg を読み込むため、python3 の向き先を変えるとモジュールが見つからなくなります。

元のバージョンに戻せば復旧します。

Terminal window
# 現在の設定を確認して、元のバージョンを選び直す
$ sudo update-alternatives --config python3

おわりに

apt のエラーは、Unable to locate package のように「無いと言われているが実は情報が古いだけ」というパターンが多くを占めます。まず sudo apt update を試す、というのを反射にしておくと、調べる前に解決することがかなりあります。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。