debian - 如何获取 debian 软件包的 *.changes 文件?

标签 debian apt deb dpkg

我知道我可以使用以下命令将 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 <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5e3832312c373f301e3a3b3c373f3070312c39" rel="noreferrer noopener nofollow">[email protected]</a>>
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 package build process 期间生成的 *.dsc 和/或 *.changes 文件.

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

引用文献:

最佳答案

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

信任 anchor 因此从维护者到存档,然后转移到存档,以便它可以从存档到用户。如果您不信任存档,您甚至不应该尝试从中下载工件,因为它可能会在那里注入(inject)任何内容,包括对由维护者正确签名但已过时且具有已知安全漏洞的包进行重播攻击。

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

如果出于某种原因您仍然想获取 .changes 文件,至少对于 Debian 来说,可以从列表文件中获取这些文件(正如 Giacomo Catenazzi 提到的那样)。

关于debian - 如何获取 debian 软件包的 *.changes 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50089033/

相关文章:

linux - 将 linux box 配置为具有静态 ip

java - 如何为 Linux 打包游戏?

linux - 快速密码套件

python - 如何修复损坏的 ConfigParser 导入的 apt?

ffmpeg - 如何在 Debian 8 Jessie 上安装 gstreamer0.10-ffmpeg(无安装候选)

node.js - 使用 Raspbian 升级 Node JS 版本在 Raspberry Pi 4 中不起作用

python - Django collectstatic 可以覆盖旧文件吗?

linux - 如何在安装之前创建安装另一个 deb 的 deb?

ssl - NGINX HTTPS 超时

pythonbrew 导入 bz2 产生 : ImportError: No module named '_bz2'