CentOS7使用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转换为外星人版](https://www.tecmint.com/wp-content/uploads/2015/08/Convert-Deb-Package-to-Alien-Version.png)
将.deb转换为外星人版
当您退出该文件系统将提示您继续重建。如果你选择Y.,则文件将重建到指定目录(不同于当前工作目录):
#rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm
![构建RPM包](https://www.tecmint.com/wp-content/uploads/2015/08/Build-RPM-Package.png)
构建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
#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,反之亦然,以便在这些程序在存储库中不可用或作为可分发的源代码时,作为最后的手段安装软件包。你会想要为这篇文章添加书签,因为我们所有人都会在某个时候需要外星人。