所以我仍然在努力遵循这个:http://code.google.com/p/dkpro-core-asl/wiki/MyFirstDKProProject
我被困在另一个地方,遇到了非常奇怪的MD5问题,我不明白为什么我的Eclipse/Ant计算的md5与我可以使用md5sum(cygwin)或Python计算的md5不同!
日食/蚂蚁消息:
BUILD FAILED
D:eclipseWorkspacemaven.1334761781732branches1.2.xde.tudarmstadt.ukp.dkpro.core.treetaggersrcscriptsbuild.xml:34: The following error occurred while executing this line:
D:eclipseWorkspacemaven.1334761781732branches1.2.xde.tudarmstadt.ukp.dkpro.core.treetaggersrcscriptsbuild.xml:311: The following error occurred while executing this line:
D:eclipseWorkspacemaven.1334761781732branches1.2.xde.tudarmstadt.ukp.dkpro.core.treetaggersrcscriptsbuild.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的构建.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(使用filezilla,二进制模式或自动通过FTP手动下载文件,当然不是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.20120419latin-par-linux-3.2.bin.gz")
e77493eed28857bf93aca91c2a6e5a9b
并且还使用来自Web的免费软件来计算MD5,它们都相互匹配,但与ANT计算为"实际"的ANT不同!
为了手动计算md5,您应该先提取文件。
使用枪拉链或 7zip。
我是DKPro Core开发人员。我们进行这些 MD5 检查的原因是我们希望在远程文件更改时注意到的,恕不另行通知。
您不必自己计算 MD5 总和。该脚本会告诉您它知道哪个 MD5 以及它实际得到了什么。如果您希望脚本继续运行,只需更新构建中记录的 MD5.xml它告诉您是"实际"的。但是,您还应该更新版本。
以下段落来自我们的维基,并解释了这背后的基本原理:
并非所有资源都由其维护者正确版本控制。我们观察到资源从一天到第二天都在变化,而没有发布任何公告或增加版本号(如果有的话)。因此,我们根据存储在 build.xml 文件中的 MD5 校验和验证所有资源。这样,我们可以注意到远程资源是否已更改。发生这种情况时,我们会在 build.xml 文件中添加一个注释,指示我们何时注意到 MD5 更改更新相应资源的版本。
由于我们不每天都测试构建.xml文件,因此当您尝试自己打包资源时,可能会收到 MD5 校验和错误。如果发生这种情况,请使用文本编辑器打开 build.xmlfile,找到失败的 MD5 校验和,更新它并更新相应资源的版本。您也可以在DKPro核心用户组上告诉我们,我们将更新build.xml文件。
顺便说一句,教程同时发生了变化,使用我们可以为其分发模型的不同组件,因此这应该很少成为问题。