酒と開発の日々

飲酒大好き駆け出しエンジニアのブログ

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 updateapt 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)

なんぞ…?

調べてみた

当該のエラーでググると稀に発生するようです。

github.com

とりあえず上記ページを見つけ、どうやらsudo rm -rf /var/lib/apt/lists/* && sudo apt updateすれば良さそうだということはわかってきました。ですが今ひとつ納得行かなかったので、少しapt updateについて調べてみました。

itsfoss.com

karoten512.hatenablog.com

上記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