9

我遇到了 Alpine 这个奇怪的问题。我想检查 bash 控制台中文件的校验和。它可以在 CentOS 下工作,但不能在 Alpine 下工作。错误在哪里?

在 CentOS 下

$ sha1sum /bin/tini
fa23d1e20732501c3bb8eeeca423c89ac80ed452  /bin/tini
$ echo "fa23d1e20732501c3bb8eeeca423c89ac80ed452 /bin/tini" | sha1sum -c -
/bin/tini: OK

阿尔卑斯山下

$ sha1sum /bin/tini
fa23d1e20732501c3bb8eeeca423c89ac80ed452  /bin/tini
$ echo "fa23d1e20732501c3bb8eeeca423c89ac80ed452 /bin/tini" | sha1sum -c -
sha1sum: WARNING: 1 of 1 computed checksums did NOT match
4

2 回答 2

17

您能否尝试在校验和和路径之间添加 1 个空格(共 2 个):

$ echo "fa23d1e20732501c3bb8eeeca423c89ac80ed452  /bin/tini" | sha1sum -c -

我试过了/bin/busybox

# sha1sum /bin/busybox
71bdaf6e52759f7f277c89b694c494f472ca2dfb  /bin/busybox
# echo '71bdaf6e52759f7f277c89b694c494f472ca2dfb /bin/busybox' | sha1sum -c -
sha1sum: WARNING: 1 of 1 computed checksums did NOT match
# echo '71bdaf6e52759f7f277c89b694c494f472ca2dfb  /bin/busybox' | sha1sum -c -
/bin/busybox: OK

该错误是因为sha1sum在调用时期望它自己的输出作为输入,-c并且它的输出使用 2 个空格。

于 2016-05-28T12:43:02.127 回答
0

我在 Alpine Linux v3.13 上安装 kubectl 时遇到了这个问题:

echo "$(<kubectl.sha256) kubectl" | sha256sum -c
sha256sum: WARNING: 1 of 1 computed checksums did NOT match

我的两部分修复:

  1. 默认 shell (ash) 以echo "$(<file.txt)"空的新行响应,而 bash 以文件的内容响应(预期行为)。
  2. Alpine 的 sha256sum 版本需要哈希和文件名之间的两个空格(Ubuntu 接受一个空格)。
bash
echo "$(<kubectl.sha256)  kubectl" | sha256sum -c
kubectl: OK
于 2021-12-03T18:01:05.620 回答