我正在尝试重建一个软件包(具体来说grub2
),以解决一些上游已修复但在 Ubuntu 中未修复的错误,并让该软件包正确集成到 Ubuntu 中。该软件包在 Launchpad 和 GNU Savannah 上的 bzr 中托管。
如何将“原始”上游源包转换为“Ubuntu”版本并重新编译/重新打包?我已经弄清楚我可以使用 获得最新的 Ubuntu 版本包源apt-get source
,但与上游版本存在显著差异。这里最好的行动方案是什么?
答案1
安装 bzr 和 bzr-builddeb 后,你可能需要尝试这个技巧:
bzr branch ubuntu:yourrelease/grub2
cd grub2
[ -d debian/patches ] && quilt pop -a
bzr commit -m 'reverting all patches' || :
bzr merge-upstream lp:grub2
dch -i
# Here edit the version info to match upstream..
bzr bd
这应该会为您构建一个纯粹来自上游源代码的新 grub2(无补丁)。您可能会发现您需要其中一些补丁,因此值得查看列表并做出决定。
请注意,'ubuntu:yourrelease/grub2' 可能不适用于旧版本的 bzr。如果不行,请尝试 'lp:ubuntu/yourrelease/grub2'
答案2
Ubuntu 中打包的 Grub 版本可能比上游 Grub 分支中的版本旧。
Ubuntu 分支还将有一个“debian/”目录,其中包含软件包的 Debian/Ubuntu 特定元数据,以及可能包含一些带有错误修复反向移植或进一步集成 Ubuntu 的补丁。有关更多信息,请阅读http://developer.ubuntu.com/packaging/html/
答案3
对于我自己的与问题类似的包装要求,我遵循了这种方法: https://wiki.ubuntu.com/PackagingGuide/Complete#Updating_an_Ubuntu_Package
您可能需要关注 pbuilder 链接以加快速度。
至于我,我按照方法中的说明进行操作,直到第 5 步。然后我做了:
apt-get build-dep <package> #since I had not configured pbuilder
dpkg-buildpackage -k<key id>