有没有一种简便的方法可以自动修补ubuntu来源,使其可用并上传到PPA?


9

我正在寻找一种工具来执行以下操作:

  • 自动检测对一组源软件包(特别是gtk + 2和gtk + 3)的更新
  • 下载源包
  • 将我自己的自定义补丁应用于源
  • 正确提交补丁(dpkg-source --commit [something-or-other]?)
  • 如果成功,则将它们上传到Launchpad上的PPA(然后可以按通常的方式将其指向系统)。

Launchpad可以为我做所有这些吗?

如果不是,是否有工具可以自动执行cron作业中的所有操作?

如果以上操作失败,我自己将某些东西击倒,但是我需要什么命令:

  • 检测并下载源软件包更新?(我更喜欢像(bzr | git)pull之类的东西,而不是每次都必须获得一个全新副本的来源)
  • 在本地自动提交补丁(我每次都会使用相同的提交描述)?
  • 非交互地将源上传到PPA?

我发现了一个问题(为自定义PPA修补Wine的正确方法是什么?),但这很相似,但是答案中的步骤基本上仍然是手动和交互的。完全放手的版本加上自动检测源代码更新将大有帮助。

Answers:


2

好吧,这听起来像是包装食谱。基本上,每当启动板上的bzr分支发生更改时,包装配方都可以自动创建Ubuntu源软件包并将其上传到PPA。该在线文档是相当不错的,但我会给出几个例子...

首先,您指定要跟踪的分支(例如lp:gtk3),然后添加命令以将您自己的Debian包装分支嵌套到该分支中。看看我为Inkscape的日常构建创建的食谱

# bzr-builder format 0.4 deb-version 1:0.48+devel+{revno}+{revno:packaging}
lp:inkscape
nest packaging lp:~inkscape.dev/inkscape/debian-packaging debian

该配方每天使用最新的Inkscape上游资源创建一个Ubuntu软件包,但是将自定义的Debian打包说明从lp:~inkscape.dev/inkscape/debian-packaging分支复制到名为“ debian” 的子文件夹中。

Launchpad上的包装配方页面允许您指定自动将软件包上传到哪个PPA。在我们的情况下,将其上传到此处

作为一种替代方法,您可以将配方基于现有的Ubuntu软件包,而不是直接基于上游源。例如,lp:ubuntu/gtk+3.0。然后,您需要创建此代码的分支,并提交所需的任何修改。让我们把它叫做lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build,例如。然后,您将创建一个配方来自动合并您的更改,而不是嵌套包装说明。配方看起来像:

# bzr-builder format 0.4 deb-version {debversion}+{date}
lp:ubuntu/gtk+3.0
merge my-custom-build lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build

因此,此配方会自动构建自定义的Ubuntu源程序包,并在官方Ubuntu程序包发生更改时将其上传到您的PPA。

如果采用这种“合并”方法,则有两个应用补丁的选项。您可以直接在分支中直接编辑上游源代码,然后让bzr进行合并,也可以debian/使用quilt 在文件夹内创建补丁文件。每个都有其自身的优点/缺点。前一种方法更聪明...如果上游开发人员采用了您的补丁程序中的一种,则合并通常仍然有效,Ubuntu程序包也可以正常运行。后一种方法使您可以使用基于Debian的标准方法来处理补丁,该方法将打包代码与上游代码分开...但是,如果上游开发人员采用了您的补丁之一,则quilt将无法应用(重复)补丁程序,该软件包将无法构建。


但是lp:ubuntu/gtk+3.0跟踪哪个gtk-3版本?当前稳定版本还是当前开发版本?
库尔希德·阿拉姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.