【问题标题】:Eclipse/Ant md5 do not match any other md5Eclipse/Ant md5 不匹配任何其他 md5
【发布时间】:2012-04-19 15:11:38
【问题描述】:

所以我仍在努力遵循这个:http://code.google.com/p/dkpro-core-asl/wiki/MyFirstDKProProject

我在另一个地方遇到了非常奇怪的 MD5 问题,我不明白为什么我的 Eclipse/Ant 计算的 md5 与我可以使用 md5sum (cygwin) 或 Python 计算的 md5 不同!

Eclipse/Ant 消息:

BUILD FAILED

D:\eclipseWorkspace\maven.1334761781732\branches\1.2.x\de.tudarmstadt.ukp.dkpro.core.treetagger\src\scripts\build.xml:34: The following error occurred while executing this line:
D:\eclipseWorkspace\maven.1334761781732\branches\1.2.x\de.tudarmstadt.ukp.dkpro.core.treetagger\src\scripts\build.xml:311: The following error occurred while executing this line:
D:\eclipseWorkspace\maven.1334761781732\branches\1.2.x\de.tudarmstadt.ukp.dkpro.core.treetagger\src\scripts\build.xml:451: MD5 checksum mismatch for [la-tagger-little-endian.par]. 
Please verify the checksum and if necessary update this script. 
Expected: f959f8633ef842f069f0331ad19dc8b4
Actual  : bde1f6a63b2c5a658ba25a8eb90832a8

好的,这是可能的,因为文件可能在 FTP 上发生了变化,这是 ANT 的 build.xml 文件的一部分:

<target name="la">
    <property name="version.la" value="2011050700"/>

    <install-model-file url="ftp://ftp.ims.uni-stuttgart.de/pub/corpora/latin-par-linux-3.2.bin.gz"
        type="tagger" endianness="little-endian" language="la" encoding="ISO-8859-1"
        md5="f959f8633ef842f069f0331ad19dc8b4"/>
</target>

让我觉得奇怪的地方是:

使用 CYGWIN(通过 FTP 手动下载文件,使用 filezilla,二进制模式或自动,当然不是 ascii):

$ md5sum latin-par-linux-3.2.bin.gz
e77493eed28857bf93aca91c2a6e5a9b *latin-par-linux-3.2.bin.gz

使用python:

import urllib
import hashlib
data = urllib.urlopen("ftp://ftp.ims.uni-stuttgart.de/pub/corpora/latin-par-linux-3.2.bin.gz").read()
md5 = hashlib.md5()
md5.update(data)
print md5.hexdigest()
e77493eed28857bf93aca91c2a6e5a9b

def md5_for_file(filePath):
    md5 = hashlib.md5()
    file = open(filePath, 'rb')
    while True:
        data = file.read(8192)
        if not data:
            break
        md5.update(data)

    file.close()   
    return md5.hexdigest()

print md5_for_file(r"D:\ftp.ims.uni-stuttgart.de.pub.corpora.20120419\latin-par-linux-3.2.bin.gz")
e77493eed28857bf93aca91c2a6e5a9b

并且还使用网络上的免费软件来计算 MD5,它们都相互匹配但与 ANT 计算为“实际”的不同!

【问题讨论】:

    标签: python eclipse ant md5


    【解决方案1】:

    为了手动计算md5,你应该先提取文件。

    使用 gunzip 或 7zip。

    【讨论】:

    • 好吧,你说得对,我是个笨蛋。我必须提取所有内容并在 'file="tree-tagger"' 参数指定的文件上计算 md5 !十分感谢。我对 Eclipse/Ant/Maven 的东西太陌生了……
    【解决方案2】:

    我是 DKPro Core 开发人员。我们进行这些 MD5 检查的原因是我们希望在远程文件更改而不另行通知时注意到这一点。

    您不必自己计算 MD5 和。该脚本告诉您它知道哪个 MD5 以及它实际得到了什么。如果您希望脚本继续运行,只需将 build.xml 中记录的 MD5 更新为它告诉您的是“实际的”。但是,您还应该更新版本。

    以下段落来自我们的wiki,并解释了其背后的基本原理:

    并非所有资源的维护者都对其进行了正确的版本控制。我们观察到资源在没有任何公告或版本号增加(如果有的话)的情况下从一天到另一天发生变化。因此,我们根据 build.xml 文件中存储的 MD5 校验和验证所有资源。这样,我们可以注意到远程资源是否已更改。发生这种情况时,我们会在 build.xml 文件中添加一条注释,指示我们何时注意到 MD5 更改会更新相应资源的版本。

    由于我们不是每天都测试 build.xml 文件,所以当您尝试自己打包资源时,可能会遇到 MD5 校验和错误。如果发生这种情况,请使用文本编辑器打开 build.xml 文件,找到失败的 MD5 校验和,更新它并更新相应资源的版本。您也可以在DKPro Core User Group 上告诉我们,我们会更新 build.xml 文件。

    顺便说一句。同时,本教程已更改为使用我们可以为其分发模型的不同组件,因此这应该不再是问题了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2022-01-12
      • 2012-06-17
      相关资源
      最近更新 更多