dpkg 可以验证已安装软件包中的文件吗?

San*_*dra 36 linux ubuntu debian rpm dpkg

随着rpm -qV openssh-server我将获得与默认值相比已更改的文件列表。

~$ rpm -qV openssh-server
S.?....T.  c /etc/ssh/sshd_config
~$ 
Run Code Online (Sandbox Code Playgroud)

可以dpkg在 Ubuntu 上做同样的事情吗?

pal*_*lxk 27

与 dpkg/1.17.2 一样,它实现了--verify选项,根据这个debian 错误报告

请注意,这是对 dpkg 的一个相对较新的更改。Date: Thu, 05 Dec 2013 04:56:31 +0100dpkg v1.17.2 包中的一行显示了这一点。

以下是--verify从 dpkg 手册页引用的操作的简要说明。

   -V, --verify [package-name...]
          Verifies  the integrity of package-name or all packages if omit?
          ted, by comparing information from the installed paths with  the
          database metadata.

          The output format is selectable with the --verify-format option,
          which by default uses the rpm format, but that might  change  in
          the  future,  and  as  such programs parsing this command output
          should be explicit about the format they expect.
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用与 in 类似的语法yum来执行验证,并以rpm 格式获得结果。例如:

dpkg --verify openssh-server
Run Code Online (Sandbox Code Playgroud)

或仅用于dpkg --verify验证系统上安装的每个包。


聚苯乙烯

比如说dpkg --verify bash,在我的机器上运行给了我这样的东西。(我正在运行 dpkg/1.17.5)

??5?????? c /etc/bash.bashrc
??5?????? c /etc/skel/.bashrc
Run Code Online (Sandbox Code Playgroud)

似乎 .deb 包只包含用于验证的 md5sums 元数据。


use*_*517 25

我不这么认为,在 Ubuntu md5 校验和只存储某些文件。对于任何给定的包,可以在以下位置找到具有校验和的文件列表

/var/lib/dpkg/info/<package>.md5sums
Run Code Online (Sandbox Code Playgroud)

例如

/var/lib/dpkg/info/openssh-server.md5sums

这些通常不包含已由软件包安装的文件的完整列表,例如 openssh-server.md5sums

bb5096cf79a43b479a179c770eae86d8  usr/lib/openssh/sftp-server
42da5b1c2de18ec8ef4f20079a601f28  usr/sbin/sshd
8c5592e0d522fa0f8f55f3c104479ef5  usr/share/lintian/overrides/openssh-server
cfcb67f58bcd1edcaa5a770863e49304  usr/share/man/man5/sshd_config.5.gz
71a51cbb514da3044b277e05a3ceaf0b  usr/share/man/man8/sshd.8.gz
222d4da61fcb3c65b4e6e83944752f20  usr/share/man/man8/sftp-server.8.gz
Run Code Online (Sandbox Code Playgroud)

您可以使用 debsums 命令 (sudo apt-get install debsums) 检查具有 md5 签名的文件

debsums openssh-server
/usr/lib/openssh/sftp-server                                                  OK
/usr/sbin/sshd                                                                OK
/usr/share/lintian/overrides/openssh-server                                   OK
/usr/share/man/man5/sshd_config.5.gz                                          OK
/usr/share/man/man8/sshd.8.gz                                                 OK
/usr/share/man/man8/sftp-server.8.gz                                          OK
Run Code Online (Sandbox Code Playgroud)

  • 配置文件的 md5 校验和存储在 _/var/lib/dpkg/status_ 中。_"dpkg -V"_ 将验证系统上所有文件的校验和,包括 conf 文件。 (5认同)

Hrv*_*jar 6

您可以查看一些工具 debsum。

# apt-cache search debsums
debsums - tool for verification of installed package files against MD5 checksums
Run Code Online (Sandbox Code Playgroud)


Net*_*ous 5

我使用此命令来检查所有包:
dpkg -l | awk {'print $2'} | xargs | debsums | grep -v 'OK'

您应该需要安装 debsumbs、gawk 和 findutils 软件包。