当我需要在答案中链接到打包代码时,我一直发现 Launchpad 的源代码浏览器非常有用。URL 模式非常简单 ( https://code.launchpad.net/ubuntu/+source/<package>
),我通常可以在输入code
地址栏后替换最后一个单词。但是,最近,我发现找到实际的包装代码越来越不一致。
例如:
- GDM - 那里没有比 15.10(狡猾)更新的东西。但从变更日志中可以清楚地看出,从那时起,打包代码发生了变化。
- Bash - 这很有趣。该页面中有一个指向Launchpad 上的 Git 存储库的链接,您可以在那里看到更新版本的打包。同样适用于apt、 bash、 git、 grub2、....
请注意,没有列出用于 GDM 打包的 Git 存储库。其他人喜欢 GDM:集市本身,LightDM,zsh,Chromium,...
所有这些包装代码都去哪儿了?
请注意,我不想下载打包代码,我有apt-get source
这个。我不想浏览软件源代码,我会在 LP 之外寻找(当然,除非软件是在 LP 上开发的)。我想在线浏览 Ubuntu 的打包代码,并能够链接到它。对于 Debian,我通常可以在Alioth上挖掘包装。
简短的回答:要获得所有内容,您必须单独下载源包;目前没有针对 Ubuntu 的单一公共浏览服务普遍可用。但我们正在努力!
长答案:
所有 Ubuntu 的规范源代码都以源包的形式提供。您可以访问https://launchpad.net/ubuntu/+source/hello,例如,单击其中一个版本号,您可以从“下载”部分下载源代码。要查找 Ubuntu 发布的每个 hello 版本的源代码,您可以点击链接查看其完整的发布历史,然后单击其中的任何版本号字符串。相同的 URL 模式适用于任何源包;您只需要知道源包的名称。
源代码包是规范的,因为它们是 Ubuntu 开发人员用来开发 Ubuntu 的基本单元。但是它们有些笨拙。解压源包需要一些工具。
dget
,从devscripts
包中,如果您将 dsc 文件的 URL 提供给它,则可以在一个命令中下载、验证和解压源包。当然,这不是很方便。
多年前,有人努力使这变得更好。Ubuntu 将其称为“Ubuntu 分布式开发”,简称 UDD,并开发了一个名为 Bazaar 的分布式版本控制系统来尝试解决这个问题。作为这项工作的一部分,源包在发布时会自动导入 Launchpad 上的 Bazaar VCS 托管平台。那时,理论上你可以在
code.launchpad.net
. 例如,您仍然可以在https://code.launchpad.net/ubuntu/+source/hellohello
看到 Precise and Trusty Ubuntu 版本的包的 Bazaar 导入源。Bazaar 专注于一组特定的用例,并且有一个经过深思熟虑的命令行界面。它的开发者之一 Jelmer Vernooij 写了一篇关于 Bazaar 开发的有趣回顾,包括它如何与当时正在开发的其他分布式版本控制系统相适应。
随着时间的推移,git 接管了世界,而 Bazaar 则退居二线。与此同时,UDD 开始出现裂痕。越来越多的包无法导入,需要人工干预才能修复。这意味着,即使 Ubuntu 继续对源包进行开发,这些包的 Bazaar 视图也
code.launchpad.net
无法更新。最终,UDD 导入器被关闭,因为没有人维护它,并且认为它不值得继续运行。
与此同时,我在 2014 年发表了一些关于我如何使用 git 进行 Ubuntu 开发的笔记;即使当时 Ubuntu 软件包通常没有在 git 中维护。
这个基于 git 的工作流程已被我的团队(Ubuntu Server 团队)采用,我们继续致力于通过 git 提供 Ubuntu 源代码。我和一位同事已经开始写一个博客系列(尚未完成)来解释我们正在做什么。
您为某些包找到的 git 存储库是我们的导入器 (
~usd-import-team
) 的结果。我们仍在积极开展这项工作,这就是为什么并非所有软件包都以这种方式可用的原因。我们还没有处于“beta”阶段,预计在我们准备好之前重新导入所有包(打破所有以前的提交哈希),并且还没有使所有导入的存储库与最新的 Ubuntu 开发工作保持同步。但是在我们导入了特定版本的包的地方,它应该足够准确以供浏览。我们希望在接下来的几个月内逐步导入所有软件包并使其自动保持最新状态。
我们的目标之一就是解决您提出的问题:在 Launchpad 上拥有一个可以浏览所有 Ubuntu 源代码的官方位置。