■apt-getの「lzma_read:読み込みエラー (7)」に対処する。 $ lsb_release -d Description: Debian GNU/Linux 10 (buster) ■以下のようなエラーメッセージ。 $ sudo apt-get update ... E: http://security.debian.org/dists/buster/updates/main/i18n/Translation-en の取得に失敗しました lzma_read: 読み込みエラー (7) E: http://security.debian.org/dists/stable/updates/main/i18n/Translation-en の取得に失敗しました lzma_read: 読み込みエラー (7) E: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。 ■対処方法 $ sudo apt-get clean $ sudo rm -fr /var/lib/apt/lists/* $ sudo apt-get clean $ sudo apt-get update ■以降は、原因と対処方法の確認。 lzmaは圧縮か解凍。apt-getなので解凍時のエラー。 $ man lzma 2>/dev/null | lsec ^NAME NAME xz, unxz, xzcat, lzma, unlzma, lzcat - Compress or decompress .xz and .lzma files Tukaani 2017-04-19 XZ(1) ■/var/lib/apt/lists配下のファイルが壊れているか存在しないことが原因。 メッセージどおりの読み込みエラー。 $ sudo strace apt-get update > lzma_read.log 2>&1 $ grep lzma lzma_read.log | tail -1 stat("/var/lib/apt/lists/non-gnu.uvt.nl_debian_dists_buster_uvt_i18n_Translation-en.lzma", 0x7fffb52459f0) = -1 ENOENT (そのようなファイルやディレクトリはありません) $ sudo find /var/lib/apt -type d /var/lib/apt /var/lib/apt/lists /var/lib/apt/lists/auxfiles /var/lib/apt/lists/partial /var/lib/apt/periodic /var/lib/apt/mirrors /var/lib/apt/mirrors/partial ■フォーマットがlzma。「-d」なので解凍処理時。 $ sudo ltrace apt-get update ... memcpy(0x559967f791a0, "http://security.debian.org/", 27) = 0x559967f791a0 memcpy(0x559967f11010, "buster/updates", 14) = 0x559967f11010 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(0x7fff47a62490, 0x7fff47a62450, 0, 0x559967ea5020) = 0x559967f78a60 memcpy(0x559967f78a60, "clearsigned.message", 19) = 0x559967f78a60 memcpy(0x7fff47a62200, "/tmp", 4) = 0x7fff47a62200 memcpy(0x559967f78b28, "zstd", 4) = 0x559967f78b28 memcpy(0x559967f78b48, ".zst", 4) = 0x559967f78b48 memcpy(0x559967f78b68, "false", 5) = 0x559967f78b68 memcpy(0x559967f78bc0, "lz4", 3) = 0x559967f78bc0 memcpy(0x559967f78be0, ".lz4", 4) = 0x559967f78be0 memcpy(0x559967f78c00, "lz4", 3) = 0x559967f78c00 memcpy(0x559967f77b00, "-1", 2) = 0x559967f77b00 memcpy(0x559967ed6380, "-d", 2) = 0x559967ed6380 memcpy(0x559967f78c58, "gzip", 4) = 0x559967f78c58 memcpy(0x559967f78c78, ".gz", 3) = 0x559967f78c78 memcpy(0x559967f78c98, "gzip", 4) = 0x559967f78c98 memcpy(0x559967f5a090, "-6n", 3) = 0x559967f5a090 memcpy(0x559967f5a220, "-d", 2) = 0x559967f5a220 memcpy(0x559967f78cf0, "xz", 2) = 0x559967f78cf0 memcpy(0x559967f78d10, ".xz", 3) = 0x559967f78d10 memcpy(0x559967f78d30, "xz", 2) = 0x559967f78d30 memcpy(0x559967ed5810, "-6", 2) = 0x559967ed5810 memcpy(0x559967f10d40, "-d", 2) = 0x559967f10d40 memcpy(0x559967f78d88, "bzip2", 5) = 0x559967f78d88 memcpy(0x559967f78da8, ".bz2", 4) = 0x559967f78da8 memcpy(0x559967f78dc8, "bzip2", 5) = 0x559967f78dc8 memcpy(0x559967f771a0, "-6", 2) = 0x559967f771a0 memcpy(0x559967ed6c70, "-d", 2) = 0x559967ed6c70 memcpy(0x559967f78e20, "lzma", 4) = 0x559967f78e20 memcpy(0x559967f78e40, ".lzma", 5) = 0x559967f78e40 memcpy(0x559967f78e60, "xz", 2) = 0x559967f78e60 memcpy(0x559967f59960, "--format=lzma", 13) = 0x559967f59960 memcpy(0x559967f59980, "-6", 2) = 0x559967f59980 memcpy(0x559967f3d360, "--format=lzma", 13) = 0x559967f3d360 memcpy(0x559967f3d380, "-d", 2) = 0x559967f3d380 memcpy(0x7fff47a62480, "yes", 3) = 0x7fff47a62480 memcpy(0x7fff47a62690, "Debian", 6) = 0x7fff47a62690 memcpy(0x7fff47a62690, "Debian-Security", 15) = 0x7fff47a62690 memcpy(0x7fff47a62690, "10", 2) = 0x7fff47a62690 memcpy(0x7fff47a62630, "stable", 6) = 0x7fff47a62630 memcpy(0x7fff47a62670, "buster", 6) = 0x7fff47a62670 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(0x7fff47a62680, 0x7fff47a624a0, 0, 0x7fff47a62690) = 0x559967f59950 memcpy(0x559967f59950, "amd64 arm64 armel armhf i386 mip"..., 63) = 0x559967f59950 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(0x7fff47a62680, 0x7fff47a624a0, 0, 0x7fff47a62690) = 0x559967ec8780 m ■キャッシュも同様にクリアする。 ■debianの「apt-get clean」で「/var/cache/apt*」ディレクトリを解放する。 http://labunix.hateblo.jp/entry/20141207/1417883814 $ sudo find /var/cache/apt* -type d -exec du -h {} + 4.0K /var/cache/apt/archives/partial 232K /var/cache/apt/archives 236K /var/cache/apt ■結果として。 apt-get cleanはいつもやっているのでキャッシュはキレイ。 /var/lib/apt/lists/配下を削除後に「apt-get clean」すると必要なディレクトリが再生成される。 読み込みエラーのファイルが消えて正常に再取得出来るとエラーも解消される。 $ sudo apt-get clean $ sudo find /var/cache/apt* -type d -exec du -h {} + 4.0K /var/cache/apt/archives/partial 232K /var/cache/apt/archives 236K /var/cache/apt $ sudo find /var/lib/apt/lists/ -type d -exec du -h {} + 4.0K /var/lib/apt/lists/auxfiles 12K /var/lib/apt/lists/partial 286M /var/lib/apt/lists/ $ sudo rm -fr /var/lib/apt/lists/* $ sudo apt-get clean $ sudo find /var/lib/apt/lists/ -type d -exec du -h {} + 4.0K /var/lib/apt/lists/auxfiles 4.0K /var/lib/apt/lists/partial 20K /var/lib/apt/lists/ $ sudo apt-get update