我相信您已經知道,有很多方法可以在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
#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,反之亦然,以便在這些程序在存儲庫中不可用或作為可分發的源代碼時,作為最后的手段安裝軟件包。你會想要為這篇文章添加書簽,因為我們所有人都會在某個時候需要外星人。









