如何将 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 外星人
在 Fedora 上,您需要输入:
sudo dnf 安装外星人
在 Manjaro 上,外星人包位于 Arch 用户存储库中。 这意味着 pacman 将无法看到它,所以我们需要使用像 yay 这样的 AUR 辅助程序。 包名也略有不同。
耶-S alien_package_converter
使用外星人
要使用外星人,您需要指定要转换的文件,以及要转换为的格式。 它会创建一个具有相同文件名的文件——通常——并具有您要求的格式的扩展名。
使用外星人创建包会导致外星人增加包的版本号。 如果包号在文件名中,文件名也会改变。
这些是外星人可以转换的格式。
- -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
如果没有 -c (scripts) 选项,它不会创建 DEB 文件,它会报告错误。 使用 -c 选项,它确实创建了 DEB。
请注意,DEB 文件名包含 54-2,而不是 54-1。
转换脚本不太可能有好的结果。 它们很可能是针对原始包文件的真正目标平台所特有的特定情况或配置而编写的。 正因为如此,我们并没有抱太大希望。 尽管如此,我们还是尝试使用 dpkg 程序和 -i(安装)选项来安装 DEB。
sudo dpkg -i microsoft-edge-beta_97.0.1072.54-2_amd64.deb
它没有用。
我们还尝试双击 DEB 文件并使用 Ubuntu Software 应用程序安装 DEB。 有趣的是,软件应用程序知道 DEB 是由外星人创建的。
那也没有用。 为了确保 Edge 浏览器能够真正安装在 Ubuntu 上,我们安装了官方的 Microsoft Edge DEB 文件。
sudo dpkg -i microsoft-edge-beta_97.0.1072.54-1_amd64.deb
这没有问题。 您可以在下面看到在 Ubuntu 上运行的 Microsoft Edge。
Atom编辑器
我们下载了流行的 Atom 编辑器的 RPM 安装包。 我们使用相同的外星人命令将其转换为 DEB。
须藤外星人-d -c atom.x86_64.rpm
这创建了一个没有任何警告或错误的 DEB 文件。 我们使用带有 -i(安装)选项的 dpkg 命令安装它。
sudo dpkg -i atom_1.58.0-1.1_amd64.deb
那工作得很好。
Slack 商务通讯应用
最后,我们尝试将 Slack RPM 转换为 DEB。
sudo 外星人 -d -c slack-4.23.0-0.1.fc21.x86_64.rpm
同样,这创建了一个没有警告和错误的 DEB。 我们使用了这个安装命令:
sudo dpkg -i slack_4.23.0-1.1_amd64.deb
安装工作完美无缺。 Slack 已启动并运行,没有任何问题。
结果好坏参半
像外星人这样的公用事业公司不可避免地要打一场艰苦的战斗。 它在每种情况下都能正常工作的可能性很大,我们的少量测试证明了这一点。 话虽如此,当它起作用时,它很棒。
如果您处于没有其他选择的情况,请尝试使用外星人。 但是,如果您有任何其他可用的方法——Snap、Flatpak 或从源代码构建——请先尝试这些方法。 甚至外星人的作者也知道它的局限性,并将此警告放在手册页中:
不应使用外星人来替换重要的系统包,如 init、libc 或其他对系统运行至关重要的东西。 这些包中的许多包在不同的发行版中设置不同,并且来自不同发行版的包不能互换使用。 一般来说,如果您无法在不破坏系统的情况下删除软件包,请不要尝试用外来版本替换它。
虽然它可能会让你摆脱困境,但在转向外星人之前,请确保你已经用尽了所有其他可能性。
但是,当没有别的东西时,外星人可能会让你大吃一惊。
相关:如何使用 Linux 的 man 命令:隐藏的秘密和基础