我知道如何提取包,进行一些小的更改,然后重新打包它。我想知道如果您要重新打包 deb 软件包以使其与旧操作系统版本兼容,是否需要做一些特殊的事情。
例如,我想在 Ubuntu 12 上升级 xyz 软件包,但 xyz 软件包仅在 Ubuntu 14 上可用。我可以修改控制文件将 Utopic Unicorn 更改为 Precise Pangolin 吗?
答案1
如果您想从较新的系统获取软件包并安装在较旧的系统上,您将获得未满足的依赖项。您可以在 部分检查控制文件中的依赖关系Depends:
。您可以尝试通过升级来解决依赖关系,但这样做可能会破坏依赖于旧版本的其他应用程序。如果您能设法获得它们,您可以重建软件包或尝试从源代码安装此软件包。
答案2
如果包中已经编译了代码,则大多数情况下您需要重新构建它。
关于如何做到这一点的简短摘要:
为此,请下载来源在 Ubuntu 14.04 或 14.10(无论您所说的“Ubuntu 14”是什么意思)上打包apt-get source -d packagename
并复制下载的文件,一个.dsc
,通常一个.debian.tar.xz
或.debian.tar.gz
(有时仍然是一个.diff.gz
),通常一个.orig.tar.gz
到具有较旧 Ubuntu 版本的计算机上(我假设 Ubuntu 12.04 自12.10 不再支持)。
dpkg-source -x file.dsc
在那里,使用复制的文件(如包中的以下工具dpkg-dev
)解压源包.dsc
并更改到创建的目录。
然后检查是否安装了所有构建依赖项dpkg-checkbuilddeps
,如有必要,安装缺少的依赖项。
(可选)运行dch --bpo
以添加适当的变更日志条目和版本号,具体取决于向后移植的正确程度。
然后运行dpkg-buildpackage -b
重建包。