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 从最新的上游代码更新自身。但我如何让它做到这一点?
从 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 在这种情况下)。