MD5校验失败:no properly formatted MD5 checksum lines found

本文介绍如何在shell环境中颠倒MD5校验文件中的校验和与文件名,并通过md5sum验证修改后的文件。重点在于解决md5sum报错及正确格式化校验文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:

从某地址下载数据文件及其MD5校验文件,特殊的是这个原始的校验文件(filename.md5.tmp)不是正常的校验文件,需要颠倒校验和和文件名。

 

执行以下shell来颠倒MD5文件中的两部分:

Shell代码  收藏代码
  1. awk -vfname="filename" '{print $2"\t"fname}' "filename.md5.tmp" > "filename.md5"  

生成新的校验文件filename.md5。

 

然后执行校验:

Shell代码  收藏代码
  1. md5sum -c filename.md5  

报错:

Shell代码  收藏代码
  1. md5sum: filename.md5: no properly formatted MD5 checksum lines found  

 

解决方案:

IMPORTANT: Each MD5 checksum and filenameMUST BE SEPARATED BY TWO SPACES, not a single space or tab.

执行以下shell来颠倒:($2后为两个空格)

Shell代码  收藏代码
  1. awk -vfname="filename" '{print $2"  "fname}' "filename.md5.tmp" > "filename.md5"  
 然后MD5sum,验证ok
<think>好的,我需要帮助用户解决他们在使用shasum命令时遇到的错误。用户执行的命令是: [root@localhost tmp]# shasum -a 512 -c elasticsearch-8.17.3-linux-aarch64.tar.gz shasum: elasticsearch-8.17.3-linux-aarch64.tar.gz: no properly formatted SHA checksum lines found 首先,我应该理解这个错误的原因。根据错误信息,shasum在检查文件时没有找到正确格式的SHA校验和行。shasum的-c选项用于从文件中读取校验和并进行验证,但用户可能直接对压缩包运行了命令,而不是指向包含校验和的文本文件。 接下来,我需要回忆shasum的正确用法。shasum通常需要一个包含预期哈希值和文件名的校验文件。例如,用户应该有一个类似elasticsearch-8.17.3-linux-aarch64.tar.gz.sha512的文件,里面包含哈希值和文件名。用户可能误将压缩包本身作为输入,而不是校验文件。 然后,我应该验证用户的命令是否正确。正确的命令应该是先下载或获取对应的.sha512文件,然后执行shasum -a 512 -c 校验文件名。用户可能漏掉了这一步,直接用了压缩包作为参数。 另外,需要确认用户是否生成了校验文件。如果没有,可能需要指导用户如何生成,或者从官方源获取正确的校验文件。如果用户确实有校验文件,但文件名不正确,或者文件内的格式不对,也会导致这个错误。正确的校验文件每行应该是“哈希值 文件名”的格式。 可能还需要检查校验文件中的文件名是否与实际文件名一致,包括路径问题。如果用户将校验文件和压缩包放在同一目录下,但校验文件中的文件名包含路径,可能导致shasum找不到文件。 总结,错误的主要原因是shasum命令的参数指向了压缩包而不是校验文件,或者校验文件本身格式不正确。解决方法包括确保使用正确的校验文件,检查文件格式,以及确认文件名一致。</think>这个错误的原因是`shasum`命令的`-c`参数需要读取一个包含 **校验和值及对应文件名** 的文本文件,而你直接将压缩包文件作为输入。以下是逐步解释和解决方法: --- ### **错误原因分析** 1. **`-c`参数的作用**:`shasum -c`用于校验文件的完整性,但它需要一个 **校验和文件**(例如 `.sha512` 文件),格式为: ```bash xxxxx...xxxxx elasticsearch-8.17.3-linux-aarch64.tar.gz ``` (每行包含哈希值 + 空格 + 文件名) 2. **你的操作问题**:你直接将压缩包 `elasticsearch-8.17.3-linux-aarch64.tar.gz` 作为参数传递给 `-c`,而该文件是二进制压缩包,不是校验和文件,因此报错。 --- ### **解决方法** #### 步骤 1:获取正确的校验和文件 官方通常会提供 `.sha512` 文件,文件名可能为: ```bash elasticsearch-8.17.3-linux-aarch64.tar.gz.sha512 ``` 确保它与压缩包在同一目录。 #### 步骤 2:执行校验命令 使用校验和文件作为输入: ```bash shasum -a 512 -c elasticsearch-8.17.3-linux-aarch64.tar.gz.sha512 ``` #### 步骤 3:验证结果 - 如果输出 **`elasticsearch-8.17.3-linux-aarch64.tar.gz: OK`**,表示文件完整。 - 如果输出 **`FAILED`**,说明文件损坏或被篡改。 --- ### **常见问题排查** 1. **校验文件格式错误**: 打开 `.sha512` 文件,确认其内容是否符合以下格式: ```bash xxxxx...xxxxx elasticsearch-8.17.3-linux-aarch64.tar.gz ``` (哈希值与文件名之间用 **两个空格** 分隔) 2. **文件名不匹配**: 如果 `.sha512` 文件中的文件名与实际压缩包名称不一致,需要手动修改文件名匹配。 3. **生成校验文件(备用方法)**: 如果官方未提供校验文件,可手动生成: ```bash shasum -a 512 elasticsearch-8.17.3-linux-aarch64.tar.gz > mychecksum.sha512 ``` 然后通过 `-c` 校验: ```bash shasum -a 512 -c mychecksum.sha512 ``` --- ### **总结** 关键点:`-c` 参数需要指向一个 **文本格式的校验和文件**,而不是直接校验压缩包本身。确保校验文件内容格式正确,且文件名与实际文件一致。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值