概要
NVIDIA関係のライブラリを再インストールするために一旦すべて削除しようとした際,パッケージ nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb が見つかりませんというエラーによって正常に削除できなくなった.
$sudo apt remove nvidia-*
# 英語環境での出力
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
# 日本語環境での出力
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb が見つかりません
原因と解決方法
エラー中に述べられているパッケージ名nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.debがなぜかファイル名(~.deb)の形式をしていることからもわかるとおり,このエラーが出る場合はカレントディレクトリの直下にファイル名がnvidia-から始まるファイルがある.つまり,apt remove [ワイルドカードを含む表現]となっているときに,ファイル名がその表現に含まれる文字列になっているファイルがあるとこのエラーが出る.
今回は
$ls
Desktop Document ... nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
となってしまっていた.nvidia-*にマッチするファイルを持たない適当なディレクトリに移動して実行すれば解決.
所感
カレントディレクトリ内のXXXX.debファイルからaptでパッケージをインストールする際に注意することとして以下のような話がある.
$sudo apt install XXXX.debだとXXXX.debがパッケージ名として解釈され
E: パッケージ XXXX.deb が見つかりませんというエラーになるので,
$sudo apt install ./XXXX.deb
としなければならない
このことから,今回のapt removeの引数がnvidia-*であり./から始まるパス表現ではなかったためにファイル名として解釈されることはないだろうと考えていたが,ワイルドカードを使うと事情は異なるようだ.このエラーが出たらまずは冷静になってlsするようにしたい.