我正在将产品从 Ubuntu 12.04 迁移到 Centos 6.6。我有大约 500 个 deb 文件。 (例如“dpkg -i libaio1_0.3.109-2ubuntu1_amd64.deb”)。我需要 Centos 上的这些 debs。
有没有可行的方法在 Centos 上安装 deb 软件包?
将 deb 文件转换为 Centosable 格式的可靠方法? (我尝试了“alien”包,但它不起作用,给出了错误,每次都失败)
另外,dpkg 命令对 deb 文件有什么作用?我知道 rpm 软件包使用规范文件并通过 rpm 命令触发来使用它。但在 .debs 中找不到类似的文件。
答案1
你在外星人方面遇到的问题很可能不是由于外星人的错误或限制,而是由于你的方法的内在问题。将 deb 包转换为 rpm 包很容易,alien 做得很好。转换一个适用于 Ubuntu 的软件包变成一个适用于 CentOS 的软件包困难得多。这意味着不仅以不同的格式重新打包文件,还意味着将文件移动到 CentOS 期望的目录中,修改配置文件以便它们在 CentOS 上工作(例如使用不同的 init 系统),声明对以下软件包的依赖关系:有不同的名称(或者甚至可能根本不存在于发行版中),等等。
对于 500 个包,您可能会遇到一些困难的情况。是否值得努力制作虚拟包、创建符号链接和包装脚本、调整系统配置等取决于您,但我肯定会寻找另一种解决方案。特别要注意的是,Debian 二进制文件很可能是针对与 CentOS 中不同的库版本进行编译的。
如果您想在 CentOS 机器上运行为 Debian 构建的程序,最省力的解决方案是在 chroot 中安装 Debian (本指南关于在另一个 Debian 版本上安装 Debian可能有用,因为对主机端没有太多依赖性)。
如果您想要拥有“正确的”CentOS 软件包,那么从源代码构建它们将比转换 Debian 软件包容易得多。
答案2
alien
deb
是转换或反转的工具rpm
...示例:
sudo alien -r /var/cache/apt/archives/alien_8.90_all.deb /home/ubuntu/
答案3
如果您认为简单的转换就可以做到这一点,请小心:由于文件系统布局的巨大差异,将 deb 转换为 RPM,反之亦然,就像给美国人穿上法国服装并期望他能融入其中一样。文件系统布局、内核、库和调优就像文化差异;而且您根本不能指望平滑贴合。
如果您从来不想正确打包某些东西,只需要一种有效负载交付方法,并且也不介意永远无法获得源 RPM,那么 FPM 就非常有用。由于 FPM 在将某些内容喷绘到文件系统上之后对其进行打包(make install 或类似的 2000 年前的“安装”方法),因此您也不会将其打包在具有所有固有优点的干净隔离位置。
最终,如果您只是将其打包,您将节省少量时间并了解更多有关流程、方法和逻辑的信息。 “小”的时间就像90天和91天之间的差异,但交付后的“第二天”问题,即由于交付中不可预见的问题而需要进行小的更改,却轻而易举地解决了。
在你考虑 fpm 或其他 hack 之前,如果你不能/不会学习在企业 Linux 上打包,那就雇一个人吧。正确的书呆子会正确地做到这一点,虽然您不知道如何或为什么以某种方式完成某件事,但至少您将拥有可以快速调整的 SPEC 文件。
答案4
检查将包fpm
转换为.我还没有尝试在和之间进行转换。deb
rpm
deb
rpm