从 4.12-rc1 开始的 RC tarball 和补丁

您可能已经知道,从 4.12-rc1 开始,Linus 将不再提供预发布(“-rc”)内核的签名 tarball 和补丁。造成这种情况的原因有很多,但主要是因为对预发布版本标签最感兴趣的人(内核开发人员)不依赖补丁和 tarball 来完成他们的工作。

自行获取 tarball

以下是如何使用 "git archive" 命令从预发布标签生成 tarball 的方法(在这些示例中我们将使用 4.12-rc1)

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
git verify-tag v4.12-rc1
git archive --format=tar.gz --prefix=linux-4.12-rc1/ \
  -o linux-4.12-rc1.tar.gz v4.12-rc1

此方法的优点是在 "git verify-tag" 步骤中,您将检查标签上的 PGP 签名,以确保您克隆的内容与 Linus Torvalds 计算机上的树完全相同。

此方法的缺点是,您需要下载大约 1 GiB 的数据(整个 Linux 内核的 git 历史记录)才能获得最新的标签。值得注意的是,当 -rc2 被标记时,您只需运行一个快速的 "git pull" 即可获得最新的对象,并且下载的数据量会大大减少,因此如果您计划将来再次执行此操作,那么克隆整个树可能对您来说是值得的。

如果您不想下载整个 git 存储库,而只想获取最新的 tarball,则可以从 cgit 自动生成的版本中下载,网址如下(或类似的 URL)

wget https://git.kernel.org/torvalds/t/linux-4.12-rc1.tar.gz

请注意,您将无法以加密方式验证此存档的完整性,但是下载大小将比完整的 git 树小约 10 倍。

获取到之前主线的补丁

如果您只想获取到之前主线版本的补丁,也可以从 cgit 中获取

wget -O patch-4.12-rc1 https://git.kernel.org/torvalds/p/v4.12-rc1/v4.11

不幸的是,cgit 当前没有提供获取 gzip 压缩补丁的简单方法,但是如果您想减少下载的数据量,可以使用 http 级别的 gzip 压缩

wget -O patch-4.12-rc1.gz --header="accept-encoding: gzip" \
  https://git.kernel.org/torvalds/p/v4.12-rc1/v4.11

这些补丁的链接在 https://linuxkernel.org.cn/ 的首页上提供。

为什么不将它们放在旧的位置?

我们有意不提供在 Linus 之前使用的位置(/pub/linux/kernel/v4.x/testing)中自动生成的这些 tarball 和补丁,即使这意味着可能会破坏依赖于此处发布内容的自动化脚本。放置在 /pub 树中的任何内容都由开发人员直接签名和管理,并且此处发布的所有补丁和软件存档都始终带有该软件的开发人员(或其中一位开发人员)直接提供的 PGP 签名。

git.kernel.org 自动生成的补丁和 tarball 并不能替代此严格的过程,而仅仅是一种便利服务,其信任含义截然不同。通过在不同的 URL 中提供这些内容,我们希望这些服务的所有用户都能有意识地决定是否要信任这些自动生成的 tarball 和补丁,或者他们是否要更改他们的流程,继续直接使用 git 树中 PGP 可验证的标签。

其他资源

社交