天天看點

Alien 魔法:RPM 和 DEB 互轉

Alien 魔法:RPM 和 DEB 互轉

使用alien将rpm轉換成deb以及将deb轉換成rpm

在本文中,我們将為你介紹alien,一個用于在各種不同的linux包格式互相轉換的工具,其最常見的用法是将.rpm轉換成.deb(或者反過來)。

如果你需要某個特定類型的包,而你隻能找到其它格式的包的時候,該工具遲早能派得上用場——即使是其作者不再維護,并且在其網站聲明:alien将可能永遠維持在實驗狀态。

例如,有一次,我正查找一個用于噴墨列印機的.deb驅動,但是卻沒有找到——生産廠家隻提供.rpm包,這時候alien拯救了我。我安裝了alien,将包進行轉換,不久之後我就可以使用我的列印機了,沒有任何問題。

即便如此,我們也必須澄清一下,這個工具不應當用來轉換重要的系統檔案和庫,因為它們在不同的發行版中有不同的配置。隻有在前面說的那種情況下所建議的安裝方法根本不适合時,alien才能作為最後手段使用。

最後一項要點是,我們必須注意,雖然我們在本文中使用centos和debian,除了前兩個發行版及其各自的家族體系外,據我們所知,alien可以工作在slackware中,甚至solaris中。

<a target="_blank"></a>

要安裝alien到centos/rhel 7中,你需要啟用epel和nux dextop(是的,是dextop——不是desktop)倉庫,順序如下:

<code># yum install epel-release</code>

<code># rpm --import http://li.nux.ro/download/nux/rpm-gpg-key-nux.ro</code>

<code># rpm -uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm</code>

然後再做,

<code># yum update &amp;&amp; yum install alien</code>

在fedora中,你隻需要運作上面的指令即可。

在debian及其衍生版中,隻需要:

<code># aptitude install alien</code>

對于本次測試,我們選擇了date工具,它提供了一系列日期和時間工具用于處理大量金融資料。我們将下載下傳.deb包到我們的centos 7機器中,将它轉換成.rpm并安裝:

Alien 魔法:RPM 和 DEB 互轉

check centos version

檢查centos版本

<code># cat /etc/centos-release</code>

<code># wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb</code>

<code># alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb</code>

Alien 魔法:RPM 和 DEB 互轉

在linux中将.deb轉換成.rpm

重要:(請注意alien是怎樣來增加目标包的次版本号的。如果你想要無視該行為,請添加-keep-version辨別)。

如果我們嘗試馬上安裝該包,我們将碰到些許問題:

<code># rpm -uvh dateutils-0.3.1-2.1.x86_64.rpm</code>

Alien 魔法:RPM 和 DEB 互轉

安裝rpm包

要解決該問題,我們需要啟用epel-testing倉庫,然後安裝rpmbuild工具來編輯該包的配置以重建包:

<code># yum --enablerepo=epel-testing install rpmrebuild</code>

然後運作,

<code># rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm</code>

它會打開你的預設文本編輯器。請轉到<code>%files</code>章節并删除涉及到錯誤資訊中提到的目錄的行,然後儲存檔案并退出:

Alien 魔法:RPM 和 DEB 互轉

轉換.deb到alien版

但你退出該檔案後,将提示你繼續去重構。如果你選擇“y”,該檔案會重構到指定的目錄(與目前工作目錄不同):

<code># rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm</code>

Alien 魔法:RPM 和 DEB 互轉

建構rpm包

現在你可以像以往一樣繼續來安裝包并驗證:

<code># rpm -uvh /root/rpmbuild/rpms/x86_64/dateutils-0.3.1-2.1.x86_64.rpm</code>

<code># rpm -qa | grep dateutils</code>

Alien 魔法:RPM 和 DEB 互轉

安裝建構rpm包

最後,你可以列出date工具包含的各個工具,也可以檢視各自的手冊頁:

<code># ls -l /usr/bin | grep dateutils</code>

Alien 魔法:RPM 和 DEB 互轉

驗證安裝的rpm包

在本節中,我們将示範如何将.rpm轉換成.deb。在一台32位的debian wheezy機器中,讓我們從centos 6作業系統倉庫中下載下傳用于zsh shell的.rpm包。注意,該shell在debian及其衍生版的預設安裝中是不可用的。

<code># cat /etc/shells</code>

<code># lsb_release -a | tail -n 4</code>

Alien 魔法:RPM 和 DEB 互轉

檢查shell和debian作業系統版本

<code># wget http://mirror.centos.org/centos/6/os/i386/packages/zsh-4.3.11-4.el6.centos.i686.rpm</code>

<code># alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm</code>

你可以安全地無視關于簽名丢失的資訊:

Alien 魔法:RPM 和 DEB 互轉

将.rpm轉換成.deb包

過了一會兒後,.deb包應該已經生成,并可以安裝了:

<code># dpkg -i zsh_4.3.11-5_i386.deb</code>

Alien 魔法:RPM 和 DEB 互轉

安裝rpm轉換來的deb包

安裝完後,你看看可以zsh是否添加到了合法shell清單中:

Alien 魔法:RPM 和 DEB 互轉

确認安裝的zsh包

在本文中,我們已經解釋了如何将.rpm轉換成.deb及其反向轉換,這可以作為這類程式不能從倉庫中或者作為可分發源代碼獲得的最後安裝手段。你一定想要将本文添加到書簽中,因為我們都需要alien。

本文來自雲栖社群合作夥伴“linux中國”,原文釋出日期:2015-08-31

繼續閱讀