从bzr分支构建一个更新的软件包往往会因为维护者或软件包的工作方式而有很大的不同。然而,以下是一些快速且简单地更新几乎任何软件包的指南,以便推送到PPA:
获取分支:
bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head
然后切换到它,并更新更改日志:
dch -i
dch -i只是在debian/changelog中打开一个新的条目,将版本修订号增加一位。如果你想添加一个补丁,那很好,但如果你想更新到一个较新的上游软件版本,在破折号(-)之前你需要更新版本号。比如说,如果一个版本是1.2-0ubuntu1,如果你执行dch -i,它将变成1.2-0ubuntu2,这对于打补丁很好,但如果你需要一个新版本,你可能想将其改为1.3-0ubuntu1。
如果你需要打补丁,现在是添加你的更改的时候了。在只有一个debian/目录的分支中,你可以使用bzr bd-do(需要bzr-builddeb软件包)切换到一个工作树,你可以在其中进行更改,使用quilt或任何补丁系统,然后输入"exit 0"将你的更改复制回来。
如果你想要一个新的上游版本,一旦changelog已经被更改,你可能会运行类似于以下命令:
debian/rules get-orig-source
通常情况下,这将从上游发布者下载正确的tarball,以便开始使用。如果需要进一步更改,请按照上述方式进行"打补丁"或更改其他
debian/ 目录中的文件,否则您就快完成了。
bzr bd -S
bzr bd会负责构建。不带参数调用它将在您的系统上开始构建,而使用
-S参数调用它将告诉它准备一个源代码包,其中包括一个
..._source.changes文件,这是您要上传到PPA的文件(使用
dput ppa:<yourname>/<name of your ppa> <changes file>来完成上传)。
对于NetworkManager软件包来说,情况有些不同。我们来具体看一下openconnect:
bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect
确保您还拥有所有的构建依赖项:
sudo get-build-deps
获取分支后,这将读取
debian/control文件并尝试下载构建network-manager-openconnect所需的所有内容。您可能还需要git。完成后,运行
get-orig-source仅获取来自git的最新快照的tarball:
debian/rules get-orig-source
你会看到文本飞过,然后出现一个带有长版本号的tarball。那是你可以获取到的最新的nm-openconnect代码。
然后,你需要使用tarball中的版本号更新changelog,只需保持
-0ubuntu1后缀不变。
或者,修改
debian/changelog为你想要的特定版本号,然后运行:
debian/rules get-current-source
由于插件变化不大,你应该能够直接从那里构建软件包,使用上面提到的
bzr bd命令。如果不能,请按照需要进行任何必要的更改。
在进行更改后,别忘了执行
bzr commit。
我先前忘记了添加,当你所做的更改可能对他人有益时,请毫不犹豫地使用合并提案系统(在LP上链接到你的分支页面的“Propose for merging”链接)。通常情况下,你可以针对你的分支所基于的分支(例如,在这种情况下是lp:~network-manager/network-manager/openconnect-ubuntu.head)提出合并请求。