我想在 Ubuntu 中创建 network-manager-openconnect 包的更新版本。显然我需要获取最新的包源:
bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head
然后呢?该软件包似乎有办法使用 git 从最新的上游代码更新自身。但我该如何让它做到这一点呢?
答案1
从 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”将您的更改复制回来。
如果您想要一个新的上游版本,一旦更改日志被更改,您可能会运行类似于以下命令:
debian/rules get-orig-source
这通常会从上游发布者处下载正确的 tarball 以帮助您入门。如果需要进一步更改,请按照上述步骤进行“修补”或更改Debian/目录,否则你就快完成了:
bzr bd -S
必应屋将负责构建。不带参数调用它将开始在您的系统上构建,而使用-S告诉它准备一个源包,其中将包括一个..._source.changes你要上传到 PPA 的文件(使用dput ppa:<你的名字>/<你的 ppa 的名字> <更改文件>要做到这一点)。
对于 NetworkManager 包来说,情况有些不同。我们来具体看一下 openconnect:
bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect
确保您还拥有所有构建依赖项:sudo get-build-deps
检索到分支后,将显示debian/控制文件并尝试下载构建 network-manager-openconnect 所需的一切。不过你可能还需要 git。完成后,运行获取原始来源从 git 获取最新快照的 tarball:
debian/rules get-orig-source
您将看到文本飞过,并出现一个带有长版本号的 tarball。这是您可以获得的最新 nm-openconnect 代码。
然后你需要使用 tarball 中的版本号来更新变更日志,只需保留-0ubuntu1后缀完整。
或者,改变debian/更新日志使用您想要的特定版本号,然后运行:debian/rules get-current-source
由于插件没有太大变化,您应该能够从那里构建包,使用必应屋如上所述。如果不是,请如上所述应用任何必要的更改。
别忘了bzr 提交在您做出更改之后。
我首先忘了补充一点,不要犹豫使用合并提案系统(提议合并当您所做的更改可能使其他人受益时,请将您分支的页面链接到 LP。通常,您可以提议合并您所在的分支(例如,在本例中为 lp:~network-manager/network-manager/openconnect-ubuntu.head)。
答案2
好的,已更新如何从启动板提取代码
bzr 分支 lp:~network-manager/network-manager/openconnect-ubuntu.head
这个命令的作用是从 lp(启动板托管服务)中提取代码。我们需要找到代码所在的位置。
man bzr
343 #当手册页出现时输入 343。
bzr branch FROM_LOCATION [TO_LOCATION]
If the TO_LOCATION is omitted, the last component of the FROM_LOCATION
will be used. In other words, "branch ../foo/bar" will attempt to cre‐
ate ./bar. If the FROM_LOCATION has no / or path separator embedded,
the TO_LOCATION is derived from the FROM_LOCATION by stripping a lead‐
ing scheme or drive identifier, if any. For example, "branch
lp:foo-bar" will attempt to create ./foo-bar.
尝试更改为您想要工作的目录或添加您和代码要去的目录。
cd /home/[你的用户名]/[开发目录路径]
或 bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head /home/[你的用户名]/[开发目录路径]
例如 bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head /home/joe/projects/network-manger/dev
如果你已经完成此操作,你的主目录中可能有一个目录
ls ~
./openconnect-ubuntu.head
该目录中应该有一个 README 文件,要查看其中的内容,请查看项目代码,以下是链接README.源
README 应该包含有关构建该单个项目的说明。
其他有用的 bzr 工具需要安装
sudo apt-get 安装 bzr-builddeb bzr-builder bzr-explorer quilt
bzr-explorere 将允许您以 GUI 形式浏览您在机器上创建的 bzr 存储库。
另一点需要注意的是,您可能需要提取整个网络管理器源才能构建一个组件 openconnect。不同组件之间可能存在许多依赖关系。
您需要为当前的 opneconnect 软件包创建一个修复程序,然后使用您使用的每个 diff 工具创建一个补丁。并将其发送给软件包维护者。
- http://packages.ubuntu.com/en/karmic/network-manager-openconnect
- 这包含指向不同资源的链接,可重新评估您的软件包,查看提交错误报告并提出问题。提出问题可能会让您从使用该软件包的人那里获得帮助。
- 这就是我要开始的地方。在这里提问,了解你需要做什么。
- 补丁如何发挥作用
或者如果您想在本地使用修复的新包,您需要创建一个.deb 包文件。
创建一个包这相当复杂请阅读以下链接
- 如何从头开始制作 Debian 标准 deb
- Debian 新维护者指南
- 这可能是您需要阅读的第一件事。
- Ubuntu 打包指南
- 我使用过的一些东西检查安装
- 我对大学时使用的小型 vpn 连接器进行了一些修复,只有大约 4 个人真正需要。我使用 checkinstall 为我们制作了一个包。