在 Alpine 中检查文件校验和
Checking File Checksum In Alpine
我在使用 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 space(总共 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 spaces.
我在 Alpine Linux v3.13 上安装 kubectl 时遇到了这个问题:
echo "$(<kubectl.sha256) kubectl" | sha256sum -c
sha256sum: WARNING: 1 of 1 computed checksums did NOT match
我的两部分修复:
- 默认 shell (ash) 以空换行响应
echo "$(<file.txt)"
而 bash 以文件内容响应(预期行为)。
- Alpine 的 sha256sum 版本需要在散列和文件名之间有两个 space(Ubuntu 接受一个 space)。
bash
echo "$(<kubectl.sha256) kubectl" | sha256sum -c
kubectl: OK
我在使用 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 space(总共 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 spaces.
我在 Alpine Linux v3.13 上安装 kubectl 时遇到了这个问题:
echo "$(<kubectl.sha256) kubectl" | sha256sum -c
sha256sum: WARNING: 1 of 1 computed checksums did NOT match
我的两部分修复:
- 默认 shell (ash) 以空换行响应
echo "$(<file.txt)"
而 bash 以文件内容响应(预期行为)。 - Alpine 的 sha256sum 版本需要在散列和文件名之间有两个 space(Ubuntu 接受一个 space)。
bash
echo "$(<kubectl.sha256) kubectl" | sha256sum -c
kubectl: OK