自从我上次重新安装 windows 和 cygwin 后,apt-cyg 就停止工作了。它一直告诉我
"md5sum: standard input: no properly formatted MD5 checksum lines found".
什么原因可能导致此问题?如果我想了解有关此错误的更多信息,我应该去哪里查找?
编辑:当我开始调试问题时,我意识到生成的 md5 代码对于 md5 代码(通常为 32 个字符)来说太长(128 个字符)。由于我使用的是 64 位版本的 cygwin,所以这可能是问题的根源。但如何解决呢?
答案1
从 2.867 版开始,cygwin 已转为使用 sha512 校验,但当前版本的 apt-cyg 仍在使用md5sum
而不是sha512sum
进行完整性验证。这就是问题的原因。
要解决此问题,请将md5sum
文件“apt-cyg”第 323 行和 326 行中的 更改为sha512sum
。它应该可以工作。
该问题已在拉取请求 #37 中得到解决:https://github.com/transcode-open/apt-cyg/pull/38。但这个改变还没有实施到主分支。
编辑:
如果你使用 Windows 程序编辑该文件,换行符可能会被更改,并导致以下问题
/usr/bin/apt-cyg: line 25: $'\r': command not found
因为 bash 将换行符识别为命令。我建议使用 vim、emacs 或 gedit 等 Linux 编辑器进行更改。或者您可以直接使用apt-cyg
在拉取请求 #37 中上传的文件:https://github.com/jfritz/apt-cyg/blob/97848cfa9ae05297c0b01daeb8ad08a70bc3b77b/apt-cyg
答案2
当前版本的 apt-cyg 仍然使用 md5sum 而不是 sha512sum 进行完整性验证。
343:#digactual=`md5sum $file | awk '{print $1}'`
344:digactual=`sha512sum $file | awk '{print $1}'`
要解决此问题,请将文件“apt-cyg”第 343 行中的 md5sum 更改为 sha512sum。对我来说,这个方法有效。
答案3
从你的 shell 执行此命令:
perl -i.bak -pe 's{md5sum}{sha512sum}g' /usr/local/bin/apt-cyg
然后重试。