如何使用 Alien 转换 Linux 软件包

开发人员和包维护人员可能并不总是为所有 Linux 发行版创建包。 某些软件包可能仅适用于特定的 Linux 平台。 在这种情况下,您可以使用包转换工具,例如 外星人 轻松地将 Linux 包转换为不同的格式。 在本指南中,我们将了解什么是 Alien,如何在各种 Linux 操作系统中安装 Alien,以及如何使用 Alien 包转换器将 Linux 包从一种格式转换为另一种格式。

内容

  1. 什么是外星人?
  2. 在 Linux 中安装 Alien
  3. 使用 Alien 转换 Linux 软件包
    1. 使用 Alien 将 RPM 包转换为 DEB 包
    2. 使用 Alien 将 DEB 包转换为 RPM 包
    3. 自动安装软件包
    4. 转换为多种包格式
    5. 保留版本号
    6. 获得帮助
  4. 结论

什么是外星人?

Alien 是一个命令行包转换器,可以在不同的 Linux 包格式之间进行转换,例如 Red Hat rpm、Debian deb、Stampede slp、Slackware tgz 和 Solaris pkg 等。

Alien 目前支持以下封装格式:

  • Linux 标准库 (LSB),
  • 符合 LSB .rpm 包裹,
  • .deb,
  • 踩踏 (.slp),
  • 索拉里斯 (.pkg)
  • Slackware (.tgz, .txz, .tbz, .tlz)。

当特定软件包或特定版本的软件包不可用于您的 Linux 发行版时,外星人程序就会派上用场。 您可以使用 Alien 轻松地将此类包转换为您喜欢的包格式并将其安装在您的系统上。

Alien 不仅是一个包转换器,它还可以在包转换后自动安装生成的包。 它甚至可以选择转换要在安装包时运行的脚本。 使用此选项时必须小心。 在使用此选项之前,您应该仔细检查脚本并检查这些脚本的作用。

当心: Alien 不应该用于转换重要的系统包,例如 在里面, ,这是 Linux 系统运行所必需的。 专为特定 Linux 发行版设计的系统软件包不能互换使用,如果您强行尝试安装它们,可能会破坏您的系统。

在 Linux 中安装 Alien

Alien 包转换器在流行的 Linux 发行版的默认存储库中可用。

要在 Alpine Linux 中安装 Alien,请运行:

$ sudo apk add alien

在 Debian、Ubuntu LTS、Linux Mint、Pop!_OS 中安装 Alien:

$ sudo apt install alien

安装外星人 Fedora:

$ sudo dnf install alien

在 CentOS 8、RHEL 8、AlmaLinux 8、Rocky Linux 8 中安装 Alien:

$ sudo dnf install epel-release
$ sudo dnf install alien

使用 Alien 转换 Linux 软件包

使用 Alien 将 Linux 软件包从一种格式转换为另一种格式的一般语法是:

alien [--to-deb] [--to-rpm] [--to-tgz] [--to-slp] [options] file [...]

使用 Alien 转换软件包非常简单!

转换一个 .rpm 打包成一个 .deb 包,只需运行外星人 root 或者 sudo 用户:

$ sudo alien --to-deb /path/to/file.rpm

同样,要转换 .deb 归档到 .rpm, 跑:

$ sudo alien --to-rpm /path/to/file.deb

这是将 Linux 包转换为不同格式的受支持标志列表。

  • -d, --to-deb – 制作 debian 软件包。 这是默认设置。
  • -r, --to-rpm – 制作 rpm 包。
  • -l, --to-lsb – 制作一个 LSB 包。
  • -t, --to-tgz – 制作 tgz 包。
  • --to-slp – 制作 slp 包。
  • -p, --to-pkg – 制作 Solaris pkg 软件包。

让我们看一些例子。 出于本指南的目的,我将使用 hello world .rpm 包裹。 请注意 hello 几乎所有的 Linux 发行版都打包了 package。 所以你不需要转换它。 我只是为了演示而使用它。

使用 Alien 将 RPM 包转换为 DEB 包

现在让我们将 hello rpm 包转换为 .deb 使用 Alien 格式,如下所示:

$ sudo alien --to-deb hello-2.10-5.fc34.x86_64.rpm

或者不久,

$ sudo alien -d hello-2.10-5.fc34.x86_64.rpm

这将转换给定的 .rpm 打包成 .deb 打包并将生成的包保存在当前目录下。

使用 Alien 将 rpm 包转换为 deb 包

当心: 如果未指定标志,Alien 会将包转换为 .deb 默认格式。

您可以使用默认包管理器安装生成的包。

我们也可以一次转换多个包。 以下命令会将给定的包(hello & vim)转换为 .deb 格式。

$ sudo alien hello-2.10-7.x86_64.rpm vim-enhanced-8.2.2637-1.fc34.x86_64.rpm 

使用 Alien 将 DEB 包转换为 RPM 包

类似地,我们可以将 .deb 打包成 .rpm 包文件如下:

$ sudo alien --to-rpm hello-2.10-5.fc34.x86_64.rpm

或者不久,

$ sudo alien -r hello-2.10-5.fc34.x86_64.rpm
使用 Alien 将 deb 包转换为 rpm 包

自动安装软件包

有时,您可能希望自动安装生成的包。

要使用 Alien 转换软件包并自动安装它,请使用 -i 旗帜。

$ sudo alien -d -i hello-2.10-7.x86_64.rpm 

该命令会将给定的 .rpm 包转换为 .deb 包格式然后安装,最后删除生成的包。

示例输出:

	dpkg --no-force-overwrite -i hello_2.10-8_amd64.deb Selecting previously unselected package hello. (Reading database ... 52712 files and directories currently installed.) Preparing to unpack hello_2.10-8_amd64.deb ... Unpacking hello (2.10-8) ... Setting up hello (2.10-8) ... Processing triggers for man-db (2.9.4-2) ...
使用 Alien 自动安装软件包使用 Alien 自动安装软件包

转换为多种包格式

Alien 可以从单个包文件创建多种包文件格式。 下面的例子展示了如何创建 .deb, 和 .tgz 包裹来自 .rpm 文件。

$ sudo alien --to-deb --to-tgz hello-2.10-7.x86_64.rpm
将单个包转换为多种包格式使用 Alien 将单个包裹转换为多种包裹格式

保留版本号

默认情况下,Alien 会在它转换的每个包的次要版本号上加 1。 比如版本号是1.2-3,Alien会在次要版本上加一个,改成1.2-4。

看看下面的命令输出。

$ sudo alien --to-deb hello-2.10-7.x86_64.rpm  hello_2.10-8_amd64.deb generated

上述命令中源码包版本为2.10.7。 包转换后,Alien 将目标文件中的次要版本从 7 更改为 8。

如果您不想 Alien 更改版本号,请使用 -k, --keep-version 标志以在生成的包中保留原始版本号。

$ sudo alien -k --to-deb hello-2.10-7.x86_64.rpm  hello_2.10-7_amd64.deb generated

如上所示,源文件和目标具有相同的版本号。

获得帮助

要显示 Alien 的简要说明和所有支持的常规选项,请通过运行以下命令参考 Alien 帮助部分:

$ alien --help

另外,请参阅手册页。

$ man alien

结论

我不会对 Alien 转换器的准确性做出任何保证。 我只测试了几个包,比如 Vim、Hello world 和 Nano。 就我测试而言,Alien 在 Debian 11 Bullseye 中对我来说效果很好。

它可能不适用于某些依赖大量依赖项的包。 结果可能因包装而异。

在这种情况下,您可能需要手动或使用其他可靠的应用程序从源代码构建它们,例如 检查安装 或者 转速. 我建议您查看以下资源以了解如何从源代码构建包。

  • 如何从源代码构建 Debian 软件包
  • 如何使用 CheckInstall 从源代码构建包
  • 如何轻松地为多个平台构建 Linux 包
  • 重新创建已安装在系统上的 Debian 二进制包
  • 如何将 DEB 包转换为 Arch Linux 包

希望这可以帮助。

资源:

  • 外星人主页

AlienCommandline命令行工具转换Linux包LinuxLinux命令Linux howto开源包管理