在阿尔卑斯山中检查文件校验和



我在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

您能否尝试在校验和和路径之间添加 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 个空格。

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

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

我的两部分修复:

  1. 默认外壳 (ASH) 使用空的新行响应echo "$(<file.txt)",而 Bash 使用文件内容(预期行为)进行响应。
  2. Alpine的sha256sum版本在哈希和文件名之间需要两个空格(Ubuntu接受一个空格)。
bash
echo "$(<kubectl.sha256)  kubectl" | sha256sum -c
kubectl: OK

相关内容

  • 没有找到相关文章

最新更新