为了节省磁盘空间,我启用了获取::GzipIndexes "true";在适当的配置中。
现在,apt update
执行时会出现以下错误
raceback (most recent call last):
File "/usr/lib/cnf-update-db", line 26, in <module>
col.create(db)
File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 94, in create
self._fill_commands(con)
File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 138, in _fill_commands
self._parse_single_commands_file(con, fp)
File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 176, in _parse_single_commands_file
suite=tagf.section["suite"]
KeyError: 'suite'
Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
我正在使用 ubuntu 20.04
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
为什么会发生这种情况?如何在不恢复更改的情况下修复它?这是一个错误吗?
答案1
这似乎是已经存在的错误错误报告有趣的是,这与其说是一个 bug,apt
不如说是一个找不到命令。该工具旨在对未知命令做出反应,并建议您需要安装哪些软件包才能获取这些命令。根据错误报告
这似乎是由于 apt 下载了用于 command-not-found 的 lz4 压缩命令列表,并且 cnf-update-db 传递了 /var/lib/apt/lists/命令-.lz4 文件到 db/creator.py,它不知道压缩并尝试将它们解析为纯文本。
command-not-found
似乎至少两年内无人维护。因此,错误报告中的建议是将其从 Ubuntu 基础映像中删除,以供将来版本使用。如果有人仍想使用command-not-found
,他们可以从 PPA 或类似工具安装修复的分支(希望有人会提供)。
到目前为止,这个问题有两种可能的解决方案:一种是在配置Acquire::GzipIndexes
中禁用。另一种是卸载,如果你不需要它。因为问题似乎专门出现在,我认为删除这个包可以解决问题。但我还没有研究过删除这个包可能带来的任何副作用。apt
command-not-found
command-not-found
答案2
我有同样的问题,我设法创建了一个简单的解决方案,因为我需要command-not-found
两者Acquire::GzipIndexes "true";
我修改了包含错误的文件(CommandNotFound/db/creator.py
)以检查处理的文件是否以 lz4 压缩,如果是,则将其解压缩为临时文件并正常使用该文件。
要安装我修改的文件:
sudo apt install python3-lz4; sudo wget -O /usr/lib/python3/dist-packages/CommandNotFound/db/creator.py 'https://raw.githubusercontent.com/3omar-mostafa/command-not-found-fix/main/creator.py'
您可以在github
我希望这能帮到你