在 Alpine Linux 中,当我运行命令时,apk update
它会查看我的/etc/apk/repositories
文件并APKINDEX.tar.gz
从每个存储库下载该文件。然后,它使用校验和将每个文件重命名为表示某些校验和的APKINDEX
tar
格式。APKINDEX.12345678.tar.gz
12345678
我一直在尝试了解此校验和的工作原理,因为我想更新脱机 Alpine 安装的软件包列表。为了更好地理解它,我正在阅读apk工具的源代码。从源头来看,我知道校验和是 SHA1 哈希值的 4 个字节,但我无法弄清楚 SHA1 哈希值的含义。
校验和的 4 个字节从哪里来APKINDEX
?具体来说,重新计算的算法是什么?如果这个问题已经得到解答,我深表歉意,但我花了很多天在互联网上搜索,但没有得到任何结果。
答案1
找到了答案。它是存储库名称的 SHA1 哈希值的简单 4 个字节。因此,如果存储库是https://dl-cdn.alpinelinux.org/alpine/v3.18/main
,则该 URL 的 SHA1 哈希值是49104001a9bfdb6b41229ce23bb30b7aec6c4fdd
,APKINDEX
文件将是APKINDEX.49104001.tar.gz