歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Alien 魔法:RPM 和 DEB 互轉

Alien 魔法:RPM 和 DEB 互轉

日期:2017/2/28 13:58:13   编辑:Linux教程

正如我確信,你們一定知道Linux下的多種軟件安裝方式:使用發行版所提供的包管理系統(aptitude,yum,或者zypper,還可以舉很多例子),從源碼編譯(盡管現在很少用了,但在Linux發展早期卻是唯一可用的方法),或者使用各自的低級工具dpkg用於.deb,以及rpm用於.rpm,預編譯包,如此這般。

使用Alien將RPM轉換成DEB以及將DEB轉換成RPM

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

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

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

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

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

步驟1:安裝Alien及其依賴包

要安裝alien到CentOS/RHEL 7中,你需要啟用EPEL和Nux Dextop(是的,是Dextop——不是Desktop)倉庫,順序如下:

  1. # yum install epel-release

啟用Nux Dextop倉庫的包的當前最新版本是0.5(2015年8月10日發布),在安裝之前你可以查看http://li.nux.ro/download/nux/dextop/el7/x86_64/上是否有更新的版本。

  1. # rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
  2. # rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

然後再做,

  1. # yum update && yum install alien

在Fedora中,你只需要運行上面的命令即可。

在Debian及其衍生版中,只需要:

  1. # aptitude install alien

步驟2:將.deb轉換成.rpm包

對於本次測試,我們選擇了date工具,它提供了一系列日期和時間工具用於處理大量金融數據。我們將下載.deb包到我們的CentOS 7機器中,將它轉換成.rpm並安裝:

Check CentOS Version

檢查CentOS版本

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

在Linux中將.deb轉換成.rpm

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

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

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

安裝RPM包

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

  1. # yum --enablerepo=epel-testing install rpmrebuild

然後運行,

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

它會打開你的默認文本編輯器。請轉到%files章節並刪除涉及到錯誤信息中提到的目錄的行,然後保存文件並退出:

轉換.deb到Alien版

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

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

構建RPM包

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

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

安裝構建RPM包

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

  1. # ls -l /usr/bin | grep dateutils

驗證安裝的RPM包

步驟3:將.rpm轉換成.deb包

在本節中,我們將演示如何將.rpm轉換成.deb。在一台32位的Debian Wheezy機器中,讓我們從CentOS 6操作系統倉庫中下載用於zsh shell的.rpm包。注意,該shell在Debian及其衍生版的默認安裝中是不可用的。

  1. # cat /etc/shells
  2. # lsb_release -a | tail -n 4

檢查Shell和Debian操作系統版本

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

你可以安全地無視關於簽名丟失的信息:

將.rpm轉換成.deb包

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

  1. # dpkg -i zsh_4.3.11-5_i386.deb

安裝RPM轉換來的Deb包

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

  1. # cat /etc/shells

確認安裝的Zsh包

小結

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

請自由分享你關於本文的想法,寫到下面的表單中吧。

下面關於RPM包制作相關的內容你可能也喜歡

CentOS 中如何快速定制二進制的內核 RPM 包 http://www.linuxidc.com/Linux/2015-07/120197.htm

RPM包創建入門 http://www.linuxidc.com/Linux/2015-02/113559.htm

如何在Linux中創建RPM包? http://www.linuxidc.com/Linux/2012-05/60278.htm

制作自己的rpm包 http://www.linuxidc.com/Linux/2013-06/86435.htm

Linux 下rpm安裝後的目錄結構和一些配置 http://www.linuxidc.com/Linux/2013-06/85761.htm

rpm與yum的綜合性介紹與示例演示 http://www.linuxidc.com/Linux/2013-05/84480.htm

RedHat Linux---rpm 命令詳解 http://www.linuxidc.com/Linux/2013-03/81971.htm

使用FPM輕松制作RPM包 http://www.linuxidc.com/linux/2014-06/103019.htm


via: http://www.tecmint.com/convert-from-rpm-to-deb-and-deb-to-rpm-package-using-alien/

作者:Gabriel Cánepa 譯者:GOLinux 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

Copyright © Linux教程網 All Rights Reserved