`md5sum -c` 不适用于 Apache 的 MD5 文件格式
`md5sum -c` won't work with Apache's MD5 file format
带你去旅行..
我正在尝试在新的 Debian (Jessie) 机器上通过 MD5 下载并验证 Apache Spark (http://www.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz)。
md5sum
脚本已经存在于那台机器上,我不需要做任何事情。
因此,我继续将 MD5 校验和 (http://www.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz.md5) 下载到与下载的 Spark 相同的目录,然后我执行:
md5sum -c spark-1.6.0-bin-hadoop2.6.tgz.md5
这失败了:
md5sum: spark-1.6.0-bin-hadoop2.6.tgz.md5: no properly formatted MD5 checksum lines found
所以我通过 cat spark-1.6.0-bin-hadoop2.6.tgz.md5
:
检查内容
spark-1.6.0-bin-hadoop2.6.tgz: 62 4B 16 1F 67 70 A6 E0 E0 0E 57 16 AF D0 EA 0B
这就是整个文件。对我来说看起来不错 - 也许 Spark 下载实际上很糟糕?在采用该假设之前,我将首先通过 md5sum spark-1.6.0-bin-hadoop2.6.tgz
:
查看 MD5 现在是什么
624b161f6770a6e0e00e5716afd0ea0b spark-1.6.0-bin-hadoop2.6.tgz
嗯,这是一种完全不同的格式 - 但如果您仔细观察,您会发现数字和字母实际上是相同的(小写字母和空格除外)。看起来 Debian 附带的 md5sum
遵循不同的标准。
也许我可以通过另一种方式 运行 这个命令?让我们试试 md5sum --help
:
Usage: md5sum [OPTION]... [FILE]...
Print or check MD5 (128-bit) checksums.
With no FILE, or when FILE is -, read standard input.
-b, --binary read in binary mode
-c, --check read MD5 sums from the FILEs and check them
--tag create a BSD-style checksum
-t, --text read in text mode (default)
The following four options are useful only when verifying checksums:
--quiet don't print OK for each successfully verified file
--status don't output anything, status code shows success
--strict exit non-zero for improperly formatted checksum lines
-w, --warn warn about improperly formatted checksum lines
--help display this help and exit
--version output version information and exit
The sums are computed as described in RFC 1321. When checking, the input
should be a former output of this program. The default mode is to print
a line with checksum, a character indicating input mode ('*' for binary,
space for text), and name for each FILE.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report md5sum translation bugs to <http://translationproject.org/team/>
Full documentation at: <http://www.gnu.org/software/coreutils/md5sum>
or available locally via: info '(coreutils) md5sum invocation'
好的,--tag
似乎要更改格式。让我们试试 md5sum --tag spark-1.6.0-bin-hadoop2.6.tgz
:
MD5 (spark-1.6.0-bin-hadoop2.6.tgz) = 624b161f6770a6e0e00e5716afd0ea0b
的确,这是一种不同的格式,但仍然不是正确的格式。所以我查看了 Apache Download Mirrors 页面上的说明并找到了以下文本:
Alternatively, you can verify the MD5 hash on the file. A unix program called md5
or md5sum
is included in many unix distributions. It is also available as part of GNU Textutils...
所以我遵循 link 并发现 Textutils 在 2003 年被合并到 Coreutils - 所以我实际上想要来自 Coreutils 的 md5sum
。但是,您可以在 md5sum --help
转储的底部看到它已经来自 Coreutils。
这可能意味着我的 Coreutils 已过时。所以我会apt-get update && apt-get upgrade coreutils
,但后来我发现:
Calculating upgrade... coreutils is already the newest version.
那就是死胡同了..但是等一下,他们说“md5
or md5sum
”!让我们检查一下那个线索。
md5
脚本还不存在,所以我会尝试 apt-get install md5
:
E: Unable to locate package md5
现在我迷路了,所以转向 Google 然后转向 Whosebug 寻求帮助。现在我在这里。
那么这两种不同的 MD5 文件格式有什么关系,我该如何处理这个问题(并最终验证我的 Apache Spark)?
我认为 gpg --print-md md5 spark-1.6.0-bin-hadoop2.6.tgz
应该与 .md5 文件的内容相匹配。
md5/sha 文件的格式存在问题,因为构建 spark 版本的脚本使用 gpg --print-md md5
创建签名文件。参见:https://issues.apache.org/jira/browse/SPARK-5308
带你去旅行..
我正在尝试在新的 Debian (Jessie) 机器上通过 MD5 下载并验证 Apache Spark (http://www.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz)。
md5sum
脚本已经存在于那台机器上,我不需要做任何事情。
因此,我继续将 MD5 校验和 (http://www.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz.md5) 下载到与下载的 Spark 相同的目录,然后我执行:
md5sum -c spark-1.6.0-bin-hadoop2.6.tgz.md5
这失败了:
md5sum: spark-1.6.0-bin-hadoop2.6.tgz.md5: no properly formatted MD5 checksum lines found
所以我通过 cat spark-1.6.0-bin-hadoop2.6.tgz.md5
:
spark-1.6.0-bin-hadoop2.6.tgz: 62 4B 16 1F 67 70 A6 E0 E0 0E 57 16 AF D0 EA 0B
这就是整个文件。对我来说看起来不错 - 也许 Spark 下载实际上很糟糕?在采用该假设之前,我将首先通过 md5sum spark-1.6.0-bin-hadoop2.6.tgz
:
624b161f6770a6e0e00e5716afd0ea0b spark-1.6.0-bin-hadoop2.6.tgz
嗯,这是一种完全不同的格式 - 但如果您仔细观察,您会发现数字和字母实际上是相同的(小写字母和空格除外)。看起来 Debian 附带的 md5sum
遵循不同的标准。
也许我可以通过另一种方式 运行 这个命令?让我们试试 md5sum --help
:
Usage: md5sum [OPTION]... [FILE]...
Print or check MD5 (128-bit) checksums.
With no FILE, or when FILE is -, read standard input.
-b, --binary read in binary mode
-c, --check read MD5 sums from the FILEs and check them
--tag create a BSD-style checksum
-t, --text read in text mode (default)
The following four options are useful only when verifying checksums:
--quiet don't print OK for each successfully verified file
--status don't output anything, status code shows success
--strict exit non-zero for improperly formatted checksum lines
-w, --warn warn about improperly formatted checksum lines
--help display this help and exit
--version output version information and exit
The sums are computed as described in RFC 1321. When checking, the input
should be a former output of this program. The default mode is to print
a line with checksum, a character indicating input mode ('*' for binary,
space for text), and name for each FILE.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report md5sum translation bugs to <http://translationproject.org/team/>
Full documentation at: <http://www.gnu.org/software/coreutils/md5sum>
or available locally via: info '(coreutils) md5sum invocation'
好的,--tag
似乎要更改格式。让我们试试 md5sum --tag spark-1.6.0-bin-hadoop2.6.tgz
:
MD5 (spark-1.6.0-bin-hadoop2.6.tgz) = 624b161f6770a6e0e00e5716afd0ea0b
的确,这是一种不同的格式,但仍然不是正确的格式。所以我查看了 Apache Download Mirrors 页面上的说明并找到了以下文本:
Alternatively, you can verify the MD5 hash on the file. A unix program called
md5
ormd5sum
is included in many unix distributions. It is also available as part of GNU Textutils...
所以我遵循 link 并发现 Textutils 在 2003 年被合并到 Coreutils - 所以我实际上想要来自 Coreutils 的 md5sum
。但是,您可以在 md5sum --help
转储的底部看到它已经来自 Coreutils。
这可能意味着我的 Coreutils 已过时。所以我会apt-get update && apt-get upgrade coreutils
,但后来我发现:
Calculating upgrade... coreutils is already the newest version.
那就是死胡同了..但是等一下,他们说“md5
or md5sum
”!让我们检查一下那个线索。
md5
脚本还不存在,所以我会尝试 apt-get install md5
:
E: Unable to locate package md5
现在我迷路了,所以转向 Google 然后转向 Whosebug 寻求帮助。现在我在这里。
那么这两种不同的 MD5 文件格式有什么关系,我该如何处理这个问题(并最终验证我的 Apache Spark)?
我认为 gpg --print-md md5 spark-1.6.0-bin-hadoop2.6.tgz
应该与 .md5 文件的内容相匹配。
md5/sha 文件的格式存在问题,因为构建 spark 版本的脚本使用 gpg --print-md md5
创建签名文件。参见:https://issues.apache.org/jira/browse/SPARK-5308