如何将 Linux 安装包转换为其他格式

显示终端提示的笔记本电脑屏幕。fatmawati achmad zaenuri/Shutterstock.com

外星人程序将安装包从一个 Linux 发行版转换为在另一个发行版上使用。 但是现在 Snap 和 Flatpak 不会让这变得多余吗? 有点,但它不是那么简单。

Linux 盘点系统

为了允许他们的用户安装软件,Linux 发行版需要一个软件打包系统。 如果发行版是另一个已建立发行版的分支,它通常会坚持使用旧发行版的打包系统。

这就是为什么 Fedora 使用 RPM 包(过去代表 RedHat 包管理器)而 Ubuntu 及其众多子代使用 DEB 包的原因。 DEB 是“Debian”的简称。 其他发行版选择编写自己的包管理系统。 为一个包管理器打包的安装文件不能与其他包管理器互换。

传统上,应用程序开发人员必须以他们选择支持的每种格式打包他们的应用程序,或者与不同 Linux 发行版的维护者合作,并将打包步骤交给他们。 后者引入了将新版本交付给用户的延迟,前者给了开发人员很多额外的工作。

Snap 和 Flatpak项目试图提供包分发的圣杯:一次打包您的应用程序,然后将其安装在任何 Linux 发行版上。 当然,您所追求的应用程序可能有也可能没有 Snap 或 Flatpak。

只要您对克隆 Git 存储库和从源代码构建应用程序感到满意,您就可以完全从等式中删除打包系统。 但不是每个人都是。 并不是所有的应用程序——即使是在 Linux 上——都是开源的,所以你无论如何都不能从源代码构建所有东西。

一些发行版的维护者非常擅长为其他平台获取包并将它们重新打包以用于他们自己的包管理系统,包括闭源应用程序。 但总会有应用程序提供 DEB 或 RPM(这两种主要格式)的情况,而其他所有人都需要自己弄清楚。

存在诸如外星人之类的程序来解决将包文件从另一个发行版转换为您在 Linux 计算机上需要的版本的问题。 这在理论上很好,但他们有多成功?

外星人实验

布丁的证据在吃。

我们采用了三种不同的 RPM,并使用外星人将它们转换为 DEB。 然后我们尝试在 Ubuntu 上安装新创建的 DEB。

在我们所有的测试用例中,也有一个可以下载的 DEB,所以我们所做的实际上是多余的。 但我们认为测试应用程序——Microsoft Edge 浏览器、Atom 编辑器和 Slack——会很好地测试外星人的能力,所以我们忽略了现成的 DEB。

安装外星人

在 Ubuntu、Fedora 和 Manjaro 上安装外星人很简单。

在 Ubuntu 上,您可以使用以下命令:

sudo apt install 外星人

在 Ubuntu 上安装外星人

在 Fedora 上,您需要输入:

sudo dnf 安装外星人

在 Fedora 上安装外星人

在 Manjaro 上,外星人包位于 Arch 用户存储库中。 这意味着 pacman 将无法看到它,所以我们需要使用像 yay 这样的 AUR 辅助程序。 包名也略有不同。

耶-S alien_package_converter

在 Manjaro 上安装外星人

使用外星人

要使用外星人,您需要指定要转换的文件,以及要转换为的格式。 它会创建一个具有相同文件名的文件——通常——并具有您要求的格式的扩展名。

使用外星人创建包会导致外星人增加包的版本号。 如果包号在文件名中,文件名也会改变。

这些是外星人可以转换的格式。

  • -d:转换为 DEB 文件,适用于 Debian、Ubuntu 和所有衍生产品。
  • -r:转换为 RPM 文件,用于 RedHat、CentOS 和 Fedora。
  • -t:转换为 TAR.GZ 存档文件,用于 Arch 和基于 Arch 的系统,如 EndeavourOS 和 Manjaro。
  • -l:转换为 LSB 文件,Linux Standard Base 文件。 这是开发交叉分发包格式的另一项举措。
  • -p:转换为 PKG 文件,这是 Solaris 使用的一种格式。
  • –to-slp:转换为 SLP 包,这是已停产的 Stampede Linux 发行版使用的格式。

我们将使用的格式选项是 -d (DEB),因为我们正在转换为 DEB 文件。 我们还将使用 -c(脚本)选项来转换包中包含的任何脚本。

微软边缘

我们下载了 Microsoft Edge 浏览器的 RPM,并在其上运行以下命令:

sudo alien -d -c microsoft-edge-beta-97.0.1072.54-1.x86_64.rpm

将 Edge RPM 转换为 DEB 文件

如果没有 -c (scripts) 选项,它不会创建 DEB 文件,它会报告错误。 使用 -c 选项,它确实创建了 DEB。

原始 RPM 文件和新创建的 DEB 文件

请注意,DEB 文件名包含 54-2,而不是 54-1。

转换脚本不太可能有好的结果。 它们很可能是针对原始包文件的真正目标平台所特有的特定情况或配置而编写的。 正因为如此,我们并没有抱太大希望。 尽管如此,我们还是尝试使用 dpkg 程序和 -i(安装)选项来安装 DEB。

sudo dpkg -i microsoft-edge-beta_97.0.1072.54-2_amd64.deb

使用新创建的 DEB 文件安装失败

它没有用。

我们还尝试双击 DEB 文件并使用 Ubuntu Software 应用程序安装 DEB。 有趣的是,软件应用程序知道 DEB 是由外星人创建的。

使用 Ubuntu Software 应用程序安装新创建的 DEB 文件

那也没有用。 为了确保 Edge 浏览器能够真正安装在 Ubuntu 上,我们安装了官方的 Microsoft Edge DEB 文件。

sudo dpkg -i microsoft-edge-beta_97.0.1072.54-1_amd64.deb

Microsoft Edge官方DEB文件的安装命令

这没有问题。 您可以在下面看到在 Ubuntu 上运行的 Microsoft Edge。

在 Ubuntu 上运行的 Microsoft Edge

Atom编辑器

我们下载了流行的 Atom 编辑器的 RPM 安装包。 我们使用相同的外星人命令将其转换为 DEB。

须藤外星人-d -c atom.x86_64.rpm

将 Atom RPM 文件转换为 DEB 文件

这创建了一个没有任何警告或错误的 DEB 文件。 我们使用带有 -i(安装)选项的 dpkg 命令安装它。

sudo dpkg -i atom_1.58.0-1.1_amd64.deb

从新创建的 DEB 文件安装 Atom

那工作得很好。

在 Ubuntu 上运行的 Atom

Slack 商务通讯应用

最后,我们尝试将 Slack RPM 转换为 DEB。

sudo 外星人 -d -c slack-4.23.0-0.1.fc21.x86_64.rpm

将 Slack RPM 文件转换为 DEB 文件

同样,这创建了一个没有警告和错误的 DEB。 我们使用了这个安装命令:

sudo dpkg -i slack_4.23.0-1.1_amd64.deb

从新创建的 DEB 文件安装 Slack

安装工作完美无缺。 Slack 已启动并运行,没有任何问题。

Slack 在 Ubuntu 上运行

结果好坏参半

像外星人这样的公用事业公司不可避免地要打一场艰苦的战斗。 它在每种情况下都能正常工作的可能性很大,我们的少量测试证明了这一点。 话虽如此,当它起作用时,它很棒。

如果您处于没有其他选择的情况,请尝试使用外星人。 但是,如果您有任何其他可用的方法——Snap、Flatpak 或从源代码构建——请先尝试这些方法。 甚至外星人的作者也知道它的局限性,并将此警告放在手册页中:

不应使用外星人来替换重要的系统包,如 init、libc 或其他对系统运行至关重要的东西。 这些包中的许多包在不同的发行版中设置不同,并且来自不同发行版的包不能互换使用。 一般来说,如果您无法在不破坏系统的情况下删除软件包,请不要尝试用外来版本替换它。

虽然它可能会让你摆脱困境,但在转向外星人之前,请确保你已经用尽了所有其他可能性。

但是,当没有别的东西时,外星人可能会让你大吃一惊。

相关:如何使用 Linux 的 man 命令:隐藏的秘密和基础

资讯来源:由0x资讯编译自HOWTOGEEK。版权归作者Dave McKay所有,未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢