即使这是一个老问题,我也会发布一个答案,以防其他用户再次遇到这个问题。
我遇到了同样的问题:
一开始我并没有注意到安装/升级本身出了什么问题,因为图形更新管理器显示了类似“一切顺利”的行 ...
如果我费心查看日志详细信息,我会看到错误消息 mingw-get-gui: * ERROR * unexpected end of archive reading header record 并立即知道出了点问题(它真的具有误导性,显示一个对话框说任务已成功完成)是错误!)。
但是关于你的问题(或者至少这是造成我的问题的原因):
原因
下载上述存档文件时,很可能出现问题。不幸的是,mingw-get 似乎忽略了下载错误并继续,就好像没有出错一样......因此错误消息 archive header record 无效,因为它不是真正的存档文件,而是文本文件包含 HTML 错误消息。
更复杂的是,mingw-get 会缓存这些文件,当您尝试重新安装软件包时,它会使用这些无效的缓存文件。
解决方案
解决此问题的一种方法是删除缓存的文件,然后重新安装包。
缓存的文件应该在
<mingw directory>\var\cache\mingw-get\packages
例如
C:\MinGW\var\cache\mingw-get\packages
旁注:如果您像我一样“丢失”了错误消息,并且不知道哪些包出错了,您可以在缓存目录中搜索包含 HTML 的文件错误信息,例如像<html> 这样的搜索词应该可以工作;这些文件也很小,但也可能存在其他文件大小较小的有效包,这不是明确的标准
如果您使用mingw-get 工具继续收到错误消息* ERROR * unexpected end of archive reading header record,您也可以尝试手动下载文件并将其放在缓存包的文件夹中。
要重新安装包,您可以使用mingw-get 的图形界面(例如删除然后安装包),或者例如命令行版本
mingw-get --reinstall install <package name>
对于mingw 包,<package name> 通常只是文件名的前缀(在第一个版本号之前),例如对于
libiconv-1.14-3-mingw32-dev.tar.lzma
包名称为libiconv。对于msys 包,包名称通常带有前缀msys-,例如类似msys-libopts
(您应该能够通过查看第一个版本号之后的文件名部分来查看它是mingw还是msys包,例如libiconv-1.14-3-mingw32-dev.tar.lzma:...3-mingw32-de...)