您可能已经知道,从 4.12-rc1 开始,Linus 将不再为预发布(“-rc”)内核提供签名的压缩包和补丁。原因有很多,但主要在于那些最关注预发布标签的人——内核开发者——在工作中并不依赖补丁和压缩包。
自行获取压缩包
以下是您如何使用“git archive”命令从预发布标签生成压缩包的方法(在这些示例中我们将使用 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 仓库,而只想获取最新的压缩包,您可以从以下(或类似)URL 下载由 cgit 自动生成的版本:
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),即使这意味着可能破坏依赖于在那里发布内容的自动化脚本。任何放置在 /pub 目录下的内容都由开发者直接签名和管理,并且所有在那里发布的补丁和软件归档文件都无一例外地附带由该软件开发者(或其中一位开发者)直接提供的 PGP 签名。
由 git.kernel.org 自动生成的补丁和压缩包并非旨在替代这一严格流程,而仅仅是一种便利服务,其信任含义截然不同。通过在不同的 URL 提供这些,我们希望所有这些服务的用户都能有意识地决定,是信任这些自动生成的压缩包和补丁,还是希望改变他们的流程,继续直接从 Git 树使用 PGP 可验证的标签。