apt installが失敗したので、少しapt updateに関して調べてみた
結論
apt update
は/var/lib/apt/lists
配下にpackage information cacheとしてdeb~形式のファイルを格納する。apt upadte
直後でもapt install
が失敗することがある。- そうなった場合の対処法は
sudo rm -rf /var/lib/apt/lists/*
をしてキャッシュファイルを消してからapt update
を行う。
事の発端
何もしてないのにCircleCIが壊れた!
これは今週の平日、いつものように作業を作業をしていたのですが、唐突にCircleCIのテストが通らなくなりました。エラーを見てみるとapt update
とapt install
をしているところでコケている様子。
#!/bin/bash -eo pipefail sudo apt update && sudo apt install -y (中略) E: Could not open file /var/lib/apt/lists/deb.debian.org_debian_dists_buster-updates_main_binary-amd64_Packages.diff_Index - open (2: No such file or directory) E: Could not open file /var/lib/apt/lists/deb.debian.org_debian_dists_stretch-backports_main_binary-amd64_Packages.diff_Index - open (2: No such file or directory)
なんぞ…?
調べてみた
当該のエラーでググると稀に発生するようです。
とりあえず上記ページを見つけ、どうやらsudo rm -rf /var/lib/apt/lists/* && sudo apt update
すれば良さそうだということはわかってきました。ですが今ひとつ納得行かなかったので、少しapt update
について調べてみました。
上記2記事を読み、apt update
を行うと~.deb
というpackage informationキャッシュを/var/lib/apt/lists
配下に引っ張ってくると理解しました。
再度結論
apt install
が/var/lib/apt/lists/
配下のdebファイルで失敗する場合、sudo rm -rf /var/lib/apt/lists/* && sudo apt update
してからsudo apt install