网站搜索

如何使用 Alien 将 RPM 转换为 DEB 以及将 DEB 转换为 RPM 包


我相信您已经知道,在 Linux 中安装软件有很多方法:使用您的发行版提供的包管理系统(aptitude、yum 或 zypper,仅举几个例子)、从源代码编译(尽管有点如今很少见,这是 Linux 早期唯一可用的方法),或者使用低级工具,例如 dpkgrpm 以及 .deb<.rpm 分别是独立的预编译包。

在本文中,我们将向您介绍 alien,这是一个在不同 Linux 软件包格式之间进行转换的工具,将 .rpm 转换为 .deb(反之亦然)反之亦然)是最常见的用法。

即使它的作者不再维护它并在他的网站上声明外星人可能始终处于实验状态,如果您需要某种类型的程序包但只能找到另一种程序包格式的程序,这个工具也可以派上用场。

例如,当我为 inkjet 打印机寻找 .deb 驱动程序但找不到任何驱动程序时,alien 拯救了我的一天 –制造商仅提供.rpm包。我安装了 Alien,转换了软件包,不久之后我就可以毫无问题地使用我的打印机了。

也就是说,我们必须澄清,该实用程序不应用于替换重要的系统文件和库,因为它们在各个发行版中的设置不同。如果本文开头建议的安装方法对于所需的程序来说是不可能的,则仅将 Alien 作为最后的手段。

最后但并非最不重要的一点是,我们必须注意,尽管我们将在本文中使用 CentOSDebian,但 Alien 也可以在 Slackware 中工作甚至在 Solaris 中,除了前两个发行版及其各自的系列之外。

第1步:安装Alien和依赖项

要在CentOS/RHEL 7中安装alien,您需要启用EPELNux Dextop(是的,它是 Dextop,而不是 Desktop)存储库,按以下顺序:

yum install epel-release
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

支持此存储库的软件包的最新版本当前为 0.5(发布于2015 年 8 月 10 日)。在继续操作之前,您应该检查 http://li.nux.ro/download/nux/dextop/el7/x86_64/ 以查看是否有更新的版本:

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

然后做,

yum update && yum install alien

Fedora中,您只需要运行最后一个命令。

在 Debian 及其衍生版本中,只需执行以下操作:

aptitude install alien

步骤 2:从 .deb 转换为 .rpm 包

对于此测试,我们选择了dateutils,它提供了一组日期时间实用程序来处理大量财务数据。我们将 .deb 包下载到 CentOS 7 盒子中,将其转换为 .rpm 并安装它:

cat /etc/centos-release
wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

重要:(请注意默认情况下,alien 如何增加目标包的版本次要编号。如果您想覆盖此行为,请添加 –保留版本标志)。

如果我们尝试立即安装该软件包,我们将遇到一个小问题:

rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm 

为了解决这个问题,我们将启用epel-testing存储库并安装rpmrebuild实用程序来编辑要重建的包的设置:

yum --enablerepo=epel-testing install rpmrebuild

然后运行,

rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

这将打开您的默认文本编辑器。转到 %files 部分并删除引用错误消息中提到的目录的行,然后保存文件并退出:

当您退出文件时,系统将提示您继续重建。如果选择Y,文件将被重建到指定目录(与当前工作目录不同):

rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

现在您可以像往常一样继续安装软件包并进行验证:

rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
rpm -qa | grep dateutils

最后,您可以列出 dateutils 中包含的各个工具,也可以查看它们各自的手册页:

ls -l /usr/bin | grep dateutils

步骤 3:从 .rpm 转换为 .deb 包

在本节中,我们将说明如何从 .rpm 转换为 .deb。在 32 位 Debian Wheezy 机器中,我们从 CentOS 6 OS 下载 zsh shell 的 .rpm 软件包强> 存储库。请注意,该 shell 在 Debian 及其衍生版本中默认不可用。

cat /etc/shells
lsb_release -a | tail -n 4

wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

您可以安全地忽略有关缺少签名的消息:

片刻之后,.deb 文件应该已生成并可以安装:

dpkg -i zsh_4.3.11-5_i386.deb

安装完成后,您可以验证 zsh 是否已添加到有效 shell 列表中:

cat /etc/shells

概括

在本文中,我们解释了如何从 .rpm 转换为 .deb,反之亦然,当此类程序在存储库中或作为可分发源代码不可用时,作为最后的手段安装软件包。您需要为这篇文章添加书签,因为我们所有人都会在某个时候需要外星人。

请随意使用下面的表格分享您对本文的看法。