Позвольте мне отправиться с вами в путешествие...
Я пытаюсь загрузить и проверить Apache Spark (http://www.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz) через MD5 на новом Debian (Джесси) машина.
Сценарий 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 была действительно плохой? Прежде чем принять это предположение, я сначала посмотрю, что такое MD5 через md5sum spark-1.6.0-bin-hadoop2.6.tgz
:
624b161f6770a6e0e00e5716afd0ea0b spark-1.6.0-bin-hadoop2.6.tgz
Хм, это совершенно другой формат, но если вы посмотрите достаточно внимательно, то заметите, что цифры и буквы на самом деле одинаковы (за исключением строчных букв и без пробелов). Похоже, что md5sum
, поставляемый с Debian, следует другому стандарту.
Может быть, есть другой способ запустить эту команду? Давайте попробуем 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 и найдите следующий текст:
Кроме того, вы можете проверить хэш MD5 в файле. Программа Unix под названием
md5
илиmd5sum
включена во многие дистрибутивы Unix. Он также доступен как часть GNU Textutils...
Итак, я перехожу по этой ссылке и обнаруживаю, что Textutils был объединен с Coreutils в 2003 году, поэтому я действительно хочу md5sum
от Coreutils. Однако в нижней части дампа md5sum --help
видно, что он уже от Coreutils.
Это может означать, что мои Coreutils устарели. Итак, я apt-get update && apt-get upgrade coreutils
, но потом я узнал, что:
Calculating upgrade... coreutils is already the newest version.
Тогда это тупик.. но подождите, они сказали "md5
или md5sum
"! Давайте проверим этот провод.
Скрипта md5
пока нет, поэтому попробую apt-get install md5
:
E: Unable to locate package md5
И теперь я заблудился, поэтому обращусь за помощью к Google, а затем к StackOverflow. Теперь я здесь.
Так что же делать с двумя разными форматами файлов MD5 и как решить эту проблему (и, наконец, проверить мой Apache Spark)?