openSUSE:软件包维护

跳转到:导航搜索
本文档描述了打包人员如何提交已发布 openSUSE 产品的更新,作为维护过程的一部分。
Icon-warning.png
警告: openSUSE 构建服务中的所有软件包都是完全公开的。因此,构建服务不能用于准备禁运的安全更新。对于禁运的更新,打包人员必须等到禁运结束才能提交修复。
Icon-warning.png
警告: 在开始处理 Leap 软件包之前,请检查维护流程
有些软件包已经迁移到 Git 跟踪。如果您看到与 Git 或 SCM 相关的意外行为,请阅读 openSUSE:OBS_to_Git

找到您需要处理的软件包

构建服务包含许多不同版本的软件包。有些可能是官方发布版本,而另一些可能由用户在他们的主项目中开发。找到哪些版本是维护候选版本的最简单方法是使用osc maintained命令。我们将 nfs-utils 软件包作为示例。

$ osc maintained nfs-utils openSUSE:Leap:15.1:Update/nfs-utils 

创建分支

构建服务提供了一种简单的方法来处理软件包,而无需不必要地污染原始软件包。它允许用户将原始软件包的私有版本签出到他们的主项目中。提交到其中的任何更改都将存储为对原始软件包的一组更改。这具有使两种项目之间的差异在分支最终提交回原始项目时变得明显的优势。

从单个项目分支单个软件包的过程是

$ osc branch -M -c openSUSE:Leap:42.3 nfs-utils [...] 

在这种情况下,nfs-utils 的更新先前已经发布。更新后的源代码存储在不同的项目中,openSUSE:Leap:42.3:Update。您不必担心这个细节。osc 会自动执行正确的操作并使用更新后的源代码。因此,只需按照提供的说明并签出您分支的软件包副本即可

如果您已经有此软件包的分支,则应删除并重新创建它。仍然存在的分支,您想知道原因,需要进行调查。它可能意味着提交请求未被接受,因此清理从未触发。删除这样的分支可能会破坏您以前的工作。

分支点存在于您创建分支的时间点。如果在中间提交了其他更改,如果您使用现有的分支,它们将会丢失。您可以通过使用osc rdelete 项目 软件包 命令删除分支。对于我们的示例,将是osc rdelete home:BenniBrunner:branches:openSUSE:Leap:42.3:Update nfs-utils.openSUSE_Leap_42.3_Update.

一次分支所有代码流

有时您需要为所有维护的代码流更新软件包,例如,对于安全修复。使用上述方法,您需要分支并签出软件包两次,一次用于 Leap 42.2,一次用于 Leap 42.3。


osc mbranch命令将使其更方便。它可以查询构建服务以查找标记为维护的软件包的项目列表。

Icon-warning.png
警告: 这依赖于构建服务内的正确配置。如果您怀疑osc mbranch使用的项目列表不正确,请咨询维护团队。

osc mbranch从所有标记为维护的项目收集软件包的所有副本,并在一个项目中创建这些软件包的分支

$ osc mbranch nfs-utils Project home:BenniBrunner:branches:OBS_Maintained:nfs-utils created. 

$ osc co home:BenniBrunner:branches:OBS_Maintained:nfs-utils A home:BenniBrunner:branches:OBS_Maintained:nfs-utils A home:BenniBrunner:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_Leap_42.2_Update [...] A home:BenniBrunner:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_Leap_42.3_Update [...] 

Icon-warning.png
警告: 如果您的软件包中有多个 spec 文件,请使用osc ls home:用户名:branches:OBS_Maintained:软件包名称来仔细检查是否为所有 spec 文件创建了软件包。

添加新的代码流

osc mbranch无法将新的代码流添加到维护项目。相反,您可以使用osc branch-M参数。

 osc branch -M openSUSE:Leap:15.5:Update nfs-utils home:BenniBrunner:branches:OBS_Maintained:nfs-utils 

这将把软件包链接到 Leap 15 Update 仓库,正确命名软件包(即,附加代码流的名称),并在项目配置中添加必要的仓库。

现在,您可以在osc up在维护项目目录中运行以签出新创建的代码流软件包。

手动获取维护副本列表

如果您仍然有疑问,请联系维护团队以获取正确的列表。

进行更改

现在您有了软件包的私有副本,可以对软件包进行任何需要的更改。处理更新文件列表的最简单方法是确保源软件包目录中没有临时文件,并使用osc addremove命令。

如果您添加了新的补丁,请确保遵循补丁标记指南

完成更改后,使用osc vc.

  • 在 .changes 文件中添加条目,简要描述问题,每行一个问题
  • 包括对错误编号的引用,格式为 (bnc#12345)(如果您有错误,必须包含)
  • 对于安全修复,如果可用,请包括 CVE 编号。

最后使用osc commit命令。

提交您的更改到您的分支。请参阅 HOWTO 编写良好的更改

提交您的更改

您的分支现在是一个单独的软件包,将在您的主项目中独立构建。在提交之前,确保它在构建系统的严格约束下构建并经过正确测试,通常是一个好主意。提交过程很简单。

从您签出的项目目录

$ osc mr created request id 22864 

来自远程项目的全部软件包

$ osc mr $prj created request id 22864 

来自远程项目的特定软件包

$ osc mr $prj $pkg $target #(例如,$target 可以是 openSUSE:Leap:15.5:Update) created request id 22864 

来自远程项目的软件包子集

 $osc mr $prj $list $of $packages $target created request id 22864 

Osc 会提示您输入提交请求的消息。通常,您只需使用 .changes 文件中的相同消息即可。

Icon-warning.png
警告: 请检查创建的请求 ID 是否被接受或拒绝。特别是自动机器人审查有时可能会出现错误。

如果上述方法不起作用,您可以尝试,从签出的软件包目录

$ osc sr WARNING: WARNING: Project does not accept submit request, request to open a NEW maintenance incident instead WARNING: created request id Request: #180441 

更新 Bugzilla 状态

完成提交后,您的软件包构建成功,请调整 Bugzilla 条目。

如果错误是安全错误(主题以 VUL- 开头)

  • 一旦您认为一切都完成,就将其重新分配给 security-team@suse.de。

如果错误是其他任何错误

  • 一旦您提交了修复程序,就将其标记为 RESOLVED/FIXED。