如何在 64 位系统上将 32 位 RPM 包转换为 DEB

我们之前的一篇文章已经介绍了alien从 .deb 转换为 rpm格式。虽然 Alien 是一个很棒的工具,可以让 RPM 发行版用户访问更广泛的 DEB 软件包,但它的用途并不限于 deb 到 rpm 的转换。

该工具本身的功能远不止于此。除了基本级别的更高级功能之外,alien 还可以转换以下任何包装格式:

  • DEB – 众所周知的 Debian 软件包格式,所有 Debian 衍生品(即整个 Ubuntu 系列)都使用该格式。可能是 Linux 上使用最广泛的打包系统
  • RPM – DedHat 自己的打包方法,被 RHL、Fedora、CentOS、Mageia、OpenSUSE 和许多其他公司使用
  • SLP – Stampede Linux 打包格式。这是一个有趣的补充,因为踩踏 Linux仅在 1997 年至 2002 年期间活跃,从未获得主流流行度或像其他发行版一样成为“基础发行版”,尽管它确实前瞻性的发展方针早在1997年
  • LSB – 尝试创建一个完整的最低有效位- 兼容的 RPM 包,尽管正如 Alien 手册页所述,“不能保证生成的 lsb 包将完全兼容 LSB,并且除非您在 lsbdev 环境中构建它们,否则它们不太可能。”
  • TGZ – tar 或 tar.gz 档案。仅当这些档案包含二进制文件时,从这些档案进行转换才有效。 (换句话说,它不适用于源代码存档。)

在 64 位系统上工作时,您可能会遇到想要将其转换为 DEB(或相反)的 32 位 RPM 软件包。在这种情况下,外星人很可能会抛出错误。

尝试在 64 位 Debian 系统上转换 32 位 RPM 文件将导致错误“.rpm 适用于 i386 架构;无法在此系统上构建软件包”。

解决方案是一个小解决方法。你可以使用外星人的能力来转换成简单的TGZ档案,作为一个中介。

为此,您可以使用-t开关(或--to-tgz)。使用

sudo alien -ct somepackage.rpm

或者

sudo alien -c --to-tgz somepackage.rpm

然后从 tgz 转换为 DEB。这不需要额外的开关,因为转换为 DEB 是标准行为。

sudo alien -c somepackage.tgz

结论

Alien 能够在不同的包装格式之间平滑转换。尽管 64 位系统上的 32 位包转换似乎不可能,但通过一些解决方法,它就变成了一个两步过程。有点不方便,但仍然简单易行,这个简单的技巧将允许您将 32 位 RPM 包转换为 DEB,即使在 64 位系统上也是如此。