如何从源代码更新 Ubuntu 软件包?

Jam*_*ard 8 installation package-management launchpad network-manager

我想在 Ubuntu 中创建 network-manager-openconnect 包的更新版本。显然我需要获取最新的包源:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head
Run Code Online (Sandbox Code Playgroud)

然后呢?该软件包似乎有一种方法可以使用 git 从最新的上游代码更新自身。但我如何让它做到这一点?

Mat*_*rre 6

从 bzr 分支构建更新的包往往会有很大差异,具体取决于谁维护分支或包的一般工作方式。但是,这里有一些指南,可以快速更新几乎任何要推送到 PPA 的软件包:

获取分支:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head
Run Code Online (Sandbox Code Playgroud)

然后切换到它,并更新更改日志:

dch -i
Run Code Online (Sandbox Code Playgroud)

dch -i将简单地在 debian/changelog 中打开一个新条目,将版本修订增加一个。如果你想添加一个补丁,那是完美的,但如果你想更新到上游软件的更新版本,你需要在破折号 (-) 之前更新版本号。比如说,1.2-0ubuntu1 中的一个版本,如果您启动dch -i它将更改为1.2-0ubuntu2,这有利于修补,但如果您需要一个新版本,您可能希望将其更改为1.3-0ubuntu1

如果您需要修补,现在是添加更改的时候了。在只有debian/目录的分支中,您可以使用bzr bd-do(需要 bzr-builddeb 包)切换到可以进行更改的工作树,使用 quilt 或任何补丁系统,然后“退出 0”以将您的更改复制回来。

如果您想要一个新的上游版本,一旦更改日志已更改,您可能会运行类似于以下命令的命令:

debian/rules get-orig-source
Run Code Online (Sandbox Code Playgroud)

这通常会从上游发布者下载正确的 tarball 以帮助您入门。如果需要进一步更改,请按上述操作“修补”或更改debian/目录中的其他文件,否则您就快完成了:

bzr bd -S
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

确保您还拥有所有构建依赖项:sudo get-build-deps

检索分支后,这将读取debian/control文件并尝试下载构建 network-manager-openconnect 所需的所有内容。不过,您可能也需要 git。完成后,运行get-orig-source以从 git 获取最新快照的 tarball:

debian/rules get-orig-source
Run Code Online (Sandbox Code Playgroud)

你会看到文本飞过,并出现一个带有长版本号的 tarball。这是您可以获得的 nm-openconnect 的最新代码。

然后,您需要使用 tarball 中的版本号更新变更日志,只需保持-0ubuntu1后缀不变即可。

或者,使用您想要的特定版本号更改debian/changelog,然后运行: debian/rules get-current-source

由于插件没有太大变化,您应该能够从那里构建包,使用bzr bd如上所述。如果没有,请应用上述任何必要的更改。

做出更改后不要忘记bzr commit

我首先忘记添加,当您所做的更改可以使他人受益时,请不要犹豫使用合并提案系统(建议合并链接您在 LP 上的分支页面)。通常你可以建议合并你的分支(例如 lp:~network-manager/network-manager/openconnect-ubuntu.head 在这种情况下)。