从上游源代码重新构建软件包?

我正在尝试重新构建一个软件包(具体来说是grub2),以解决一些在Ubuntu中尚未修复但在上游已经修复的错误,并使软件包能够正确地集成到Ubuntu中。该软件包在Launchpad和GNU Savannah上都有托管。
如何将“原始”的上游源代码包转换为“Ubuntu”版本并重新编译/打包呢?我已经弄清楚可以使用apt-get source获取软件包源代码的最新Ubuntu版本,但与上游版本存在显著差异。在这种情况下,最佳的行动方案是什么?
3个回答

在安装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”。

yourrelase 是指在 http://packaging.ubuntu.com/html/udd-getting-the-source.html 中提到的 precisetrusty 等。 - Ciro Santilli OurBigBook.com

可能是因为Ubuntu打包的Grub版本比上游Grub分支中的版本要旧。
Ubuntu分支还会有一个名为"debian/"的目录,其中包含了针对该软件包的Debian/Ubuntu特定元数据,可能还包含一些修复错误或进一步集成到Ubuntu中的补丁。欲了解更多信息,请阅读http://developer.ubuntu.com/packaging/html/

根据我自己的打包需求,与问题类似,我按照以下方法进行操作: 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>