openSUSE:软件包维护
找到您需要处理的软件包
构建服务包含许多不同版本的软件包。有些可能是官方发布版本,而另一些可能由用户在他们的主项目中开发。找到哪些版本是维护候选版本的最简单方法是使用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命令将使其更方便。它可以查询构建服务以查找标记为维护的软件包的项目列表。
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 [...]
添加新的代码流
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 文件中的相同消息即可。
如果上述方法不起作用,您可以尝试,从签出的软件包目录
$ 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。