使用Alien将RPM从DE转换为DEB和DEB转换为RPM包

Posted mrjason

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Alien将RPM从DE转换为DEB和DEB转换为RPM包相关的知识,希望对你有一定的参考价值。

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

                                     使用Alien将RPM转换为DEB和DEB转换为RPM包

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

这个工具,即使它的作者不再维护它并在他的网站上说外星人总是可能保持实验状态,如果你需要某种类型的包但只能找到另一种包装格式的程序,它可以派上用场。

例如,当我为喷墨打印机寻找.deb驱动程序时,外星人节省了我的一天,但却找不到 - 制造商只提供了一个.rpm包。我安装了外星人,转换了包装,不久我就可以毫无问题地使用我的打印机了。

也就是说,我们必须澄清这个实用程序不应该用于替换重要的系统文件和库,因为它们在不同的发行版中设置不同。如果本文开头的建议安装方法不能满足所需程序的要求,请仅使用外星人作为最后的手段。

最后但并非最不重要的是,我们必须注意,尽管我们将在本文中使用CentOS和Debian,但除了前两个发行版及其各自的系列之外,外星人也知道在Slackware甚至Solaris中工作。

第1步:安装外来和依赖项

要在CentOS / RHEL 7中安装外星人,您需要按顺序启用EPEL和Nux Dextop(是的,它是Dextop - 而不是桌面)存储库:

 

#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安装外星人

由于制作rpm包过程较为麻烦,此处使用rpmrebuild去将本机已安装好的openvswitch包进行重新打包,用于下次安装部署

# yum install rpmrebuild -y

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

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

技术图片

                                检查CentOS版本

#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

技术图片

                                           在Linux中将.deb转换为.rpm包

重要 :(请注意,默认情况下,alien会增加目标包的版本次要编号。如果要覆盖此行为,请添加-keep-version标志)。

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

技术图片

                                                          安装RPM包

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

      #yum --enablerepo = epel-testing安装rpmrebuild

然后跑,

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

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

                                        将.deb转换为外星人版

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

#rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm
技术图片

                                                     构建RPM包

现在,您可以继续安装软件包并照常验证:

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

技术图片

                                                       安装Build RPM Package

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

#ls -l / usr / bin | grep dateutils

技术图片

                                                  验证已安装的RPM包

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

在本节中,我们将说明如何将.rpm转换为.deb。在32位Debian Wheezy框中,让我们从CentOS 6操作系统下载zsh shell 的.rpm包存储库。请注意,默认情况下,Debian和衍生产品中不提供此shell。

#cat / etc / shells
#lsb_release -a | 尾巴-n 4
技术图片

                          检查Shell和Debian OS版本

#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

您可以放心地忽略有关丢失签名的消息:

技术图片

                                                     将.rpm转换为.deb包

片刻之后,应该生成.deb文件并准备安装:

#dpkg -i zsh_4.3.11-5_i386.deb
技术图片

                                                 安装RPM Converted Deb Package

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

#cat / etc / shells
技术图片

                     确认已安装的Zsh包

摘要

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

 
 

以上是关于使用Alien将RPM从DE转换为DEB和DEB转换为RPM包的主要内容,如果未能解决你的问题,请参考以下文章

使用alien命令让deb包和rpm互相转换

deb 转换 rpm

Deepin(Ubuntu)安装rpm软件包

使用该方法在ubuntu下安装flashplayer的rpm包

如何在 Ubuntu 中安装 rpm 软件包

Ubuntu无法安装rpm包,ubuntu RPM should not be used directly install RPM packages, use Alien instead!