我如何获得 debian 软件包的 *.changes 文件?

How do I get the *.changes file for a debian package?

我知道我可以用这个将 Debian 软件包源文件下载到当前目录:

$ apt-get source tree
...
$ ls -lahn
total 88K
drwx------  3 10335 11111 4,0K Apr 29 15:24 .
drwxrwxrwt 16     0     0  20K Apr 29 16:39 ..
drwxr-xr-x  5 10335 11111 4,0K Apr 29 15:24 tree-1.7.0
-rw-r--r--  1 10335 11111 5,9K Oct 25  2014 tree_1.7.0-3.debian.tar.xz
-rw-r--r--  1 10335 11111 1,8K Oct 25  2014 tree_1.7.0-3.dsc
-rw-r--r--  1 10335 11111  46K Apr 27  2014 tree_1.7.0.orig.tar.gz

我也知道 *.dsc 文件(通常)带有一个我可以检查的签名:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 3.0 (quilt)
Source: tree
Binary: tree
Architecture: any
Version: 1.7.0-3
Maintainer: Florian Ernst <florian@debian.org>
Homepage: http://mama.indstate.edu/users/ice/tree/
Standards-Version: 3.9.5
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/tree.git
Vcs-Git: git://anonscm.debian.org/collab-maint/tree.git
Build-Depends: debhelper (>= 8), dpkg-dev (>= 1.16.1~)
Package-List:
 tree deb utils optional arch=any
Checksums-Sha1:
 35bd212606e6c5d60f4d5062f4a59bb7b7b25949 47082 tree_1.7.0.orig.tar.gz
 d9c3f9d6882e6a26f2428db6528de2a1c9a620da 5944 tree_1.7.0-3.debian.tar.xz
Checksums-Sha256:
 6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12 47082 tree_1.7.0.orig.tar.gz
 1af303c6b9fc640c8346a6c21f45fa6275e7fa7df9f6656af16b504a1a261732 5944 tree_1.7.0-3.debian.tar.xz
Files:
 abe3e03e469c542d8e157cdd93f4d8a6 47082 tree_1.7.0.orig.tar.gz
 1bf74f9218c1b300de1246043b421173 5944 tree_1.7.0-3.debian.tar.xz

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBCAAGBQJULE31AAoJEAY3Qbr13R7OYnYQALFkasPqrvRt4lPYiROjkx50
3YfZ9yfnvAbsjhMkECl5ItWfQmNgpgObwTidV9JdJ8N70joaayRPDw7ACaBiOM9z
gA6ERv27hw7uoww1U7pu7J5WTLI2rH592BhU+qhnnrFs6mzFXc6SzuiV1oqEzbjP
dfP73v4lgIw6xPKdOo/l9oKY+tJXgEnspaZu/bnTkUbeV/p9xWmwE8ilGllMx7RA
YGQSq/Jn90mk7C2bfEH96kV0//ThTylCXiqNKafNDNeVYcRKJ1xbTentREMTr6vn
YxLR8e0mAz1hviAc2o+Ga+3zAzwgf+MZzdyAWWWNcH0K4r/UT4IYm7ajwFkaiPW8
+p+iHAVkABWicSKb51wIb2azmow1/PlSYzx1D5JZs8rh07rHC1zE2ni+zSxdtNFq
7yQ8k2WUKVzlJudXQBlZDSNbwHsetNVrceVPXF6xLrwxDf1+rUg0W7KLstKbjtlP
oqDuqzKhD6Mzl1YKMwraFIltlUt9DMZRwtmymjPIAsx56+/sPGv4PYqiPJpih6Gk
rw7fvYMU/dflUAxz13tFAY6qTCQR0DJ1HDiPD86/+/imwCVb9DAq2fJZZtF6W84T
xDipKYuYsVqXwXaWH1xlt7pSgKyoPJzUJt+M+8XDBXncn36M7aVpP57LjrHvDgNu
DVKPiaUlkR25A0/gqoQ1
=5N30
-----END PGP SIGNATURE-----

我知道软件包维护者可以 debsign the *.dsc and/or *.changes file that is produced during the package build process

那么,*.changes 文件在哪里?我如何为给定的 Debian 软件包下载 *.changes 文件?为什么 apt-get source 下载 *.dsc 文件而不下载 *.changes 文件?

参考文献:

.changes 文件是“维护者”准备上传的清单,是否确实已签名,接受上传的存档软件需要信任该维护者。但随后信任被转移到档案中。维护者可能已经辞职,可能已经让他们的 OpenPGP 密钥过期或撤销,他们可能已经被开除等。存档确保签署源和包存储库元索引,处理密钥轮换,过期等

信任锚因此从维护者到档案,然后转移到档案,这样它就可以从档案到用户。如果你不信任一个档案,你甚至不应该尝试从它下载​​工件,因为它可以在那里注入任何东西,包括对由维护者正确签名的包进行重放攻击,但是已经过时并且存在已知的安全漏洞,f.ex.

这就是为什么 apt 在下载 .dsc 之前确实对 Sources 元索引强制执行签名验证的主要原因,但是 dpkg-source 仅对 .dsc 签名进行机会性(非致命)验证。

如果出于某种原因您仍想获得 .changes 文件,至少对于 Debian 而言,可以从列表档案中获得这些文件(如 Giacomo Catenazzi 所提到的)。