我为公司的应用程序编写测试。其中一个测试尝试将应用程序从旧版本升级到新版本,以确保不会出现任何问题。当我安装旧版本的应用程序时,一些奇怪的事情开始发生。
有时一切顺利,没有任何问题,其他时候,当我尝试安装时,我收到此消息(公司应用程序名称被审查):
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/XXX-amd64_Packages
E: The package lists or status file could not be parsed or opened.
使用与此类似的问题中提供的解决方案(例如这)。没有帮助,问题在第一次发生后会不断重复发生。
这让我相信创建软件包的 apt 服务器上出了问题,但搜索这些错误没有找到任何信息,除了我在链接的问题中建议的“修复”之外,我能找到的唯一其他信息来源也没有帮助(这里):
所以我在询问信息;
- 什么是实际的问题是什么?
- 什么原因问题?
- 什么可以使固定问题?
- 这不是以下内容的重复:尝试更新时,如何修复“MergeList 存在问题”或“无法解析状态文件”错误?我正在尝试找到问题的根本原因以防止该错误的发生。
编辑:谢谢这个很好的答案经过弗洛里安·迪施我终于解决了问题。通过追溯原因,发现包裹确实存在畸形,我开始尝试找出为什么格式不正确。原因是,作为我们严格测试的一部分,我同时执行了许多操作,似乎文件正在被写入两次这导致它有时会出现不好的部分。
答案1
该文件/var/lib/apt/lists/XXX-amd64_Packages
包含由空行分隔的不同部分。每个部分由多个字段组成,如下所示
KEY: VALUE
如果VALUE
包含多行,则每行必须以空格字符开头。
例如(我在这里删除了一些行):
Package: rapid-photo-downloader
Priority: optional
Section: graphics
Description: Photo and video importer from cameras, memory cards and other devices
Rapid Photo Downloader is written by a photographer for professional and
amateur photographers. It can download photos and videos from multiple
cameras, memory cards and Portable Storage Devices simultaneously. It
provides many flexible, user-defined options for subfolder creation,
photo and video renaming, and backup.
Python-Version: 2.7
每个部分描述一个包,并且需要有一个Package:
包含包名称的字段。
您收到此错误是因为其中一个部分没有字段Package:
。
找到此无效部分并尝试找出缺少该字段的原因:
- 检查服务器上相应的
Packages.gz
或文件Packages.bz2
- 检查
debian/control
相应.deb
包中的文件及其来源
我的第一个猜测是包含一个空白行的Description:
字段debian/control
。