我正在尝试在 64 位 Xubuntu 14.04 上修补和重建一个软件包(libvorbis,不管它值多少钱)。过去,当我想做这样的事情时,我遵循以下公式:
sudo apt-get build-dep <package>
apt-get source <package>
cd <package-dir>
patch -Np1 < ../<patch>
dch -i
dpkg-source --commit
debuild -us -uc
cd ..
sudo dpkg -i <new.deb>
过去,对于 Wine 的修补,它非常有效。对于我当前的项目,我设法完成了所有工作并重建了软件包,但当我去安装新的软件包时,我得到了:
dpkg: error processing package libvorbis0a:amd64 (--install):
package libvorbis0a:amd64 1.3.2-1.3ubuntu2 cannot be configured because libvorbis0a:i386 is at a different version (1.3.2-1.3ubuntu1)
我打算尝试卸载 32 位软件包,因为我不确定我是否真的需要它,但这会破坏很多东西的依赖关系。我该如何修改我的程序(或重新运行它)以同时构建 32 位版本的软件包以进行并行安装?这可能吗?
编辑:我尝试过apt-get source libvorbis:i386
,但得到:
E: Can not find a package for architecture 'i386'
E: Unable to find a source package for libvorbis:i386
编辑2: apt-get source libvorbis0a:i386
似乎可以工作,但我最终还是得到了 64 位软件包。
答案1
后四处打探我发现,尽管有多架构的优点,你还是无法完成你需要做的事情,至少在没有安装大量的软件包和/或创建 chrooted 环境的情况下是无法做到的。
幸运的是,buildbots 和维护人员似乎需要这样做,因此有几个工具可以实现这一目标。我将使用pbuilder
,原因有二,它在 Debian 主存储库中可用,即 Ubuntu',并且自动创建一个干净的生态系统,可以随时更新/删除/维护,而无需触及主系统,而且它还很灵活。也许过一段时间我会写关于交叉工具链的文章。
因此,首先安装pbuilder
和ubuntu-dev-tools
包,然后运行pbuilder-dist trusty i386 create
(例如,您也可以使用指定目标版本--distribution trusty
)。现在,根据您的下载和系统速度,这可能需要一段时间。完成后,您应该能够使用以下命令创建任何包:
pbuilder-dist trusty i386 libvorbis_1.3.2-1.4.dsc
您可以更改trusty
为任何其他可用版本。它将生成您的软件包的 i386 版本。