You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取Ubuntu软件包中单个文件的官方校验码以与IMA测量值比对

如何获取Ubuntu软件包中单个文件的官方校验码以与IMA测量值比对

我完全懂你的需求——想要高效比对Linux内核IMA架构生成的文件校验码和Ubuntu官方软件包中单个文件的校验码,不想每次都手动下载解压deb包,对吧?下面分享几个实用的方法:

方法一:使用debsums工具(最便捷的方式)

debsums是专门用来验证已安装软件包文件完整性的工具,它会自动从官方仓库拉取对应包的文件校验码并完成比对,完美适配你的高效需求。

  1. 先安装工具:
sudo apt update && sudo apt install debsums
  1. 查看指定包下所有文件的官方校验码及比对结果:
    比如你提到的g++-12包:
debsums g++-12

输出会类似这样(左边是官方校验码,右边是文件路径,OK表示本地文件和官方校验码匹配):

db905ca30da311c0bcd005b3d475d22e6fa395c3205ff5f17cdd9a02d830e1fb  /usr/bin/x86_64-linux-gnu-g++-12
OK  /usr/bin/x86_64-linux-gnu-g++-12
  1. 如果只想获取官方校验码而不做本地比对,可以用:
debsums -a g++-12 | grep -v "OK"

方法二:不安装额外工具,直接从远程仓库提取校验码

如果不想安装debsums,可以通过命令行直接从Ubuntu远程仓库获取deb包内的校验和文件(多数包默认提供MD5校验码,部分新包会包含SHA256校验码):

# 替换成你要查询的包名,比如g++-12
PACKAGE_NAME="g++-12"
apt download --print-uris "$PACKAGE_NAME" | awk '{print $2}' | xargs curl -s | dpkg-deb -f - md5sums

这个命令的逻辑是:先拿到目标包的下载链接,用curl把包内容下载到标准输出,最后用dpkg-deb提取包内的md5sums文件,里面就有该包所有文件的官方MD5校验码。如果需要SHA256校验码,把命令里的md5sums替换成sha256sums即可尝试。

补充说明

  • 若目标包还没安装,方法二依然有效;debsums默认处理已安装包,也可以通过额外参数让它处理未安装包(需要下载对应校验和数据)。

备注:内容来源于stack exchange,提问作者Haris

火山引擎 最新活动