rpm 檔轉 deb 檔

接下來我們示範如何將 .rpm 檔轉換為 .deb 檔,讓 Debian 系列的 Linux 可以使用,使用的測試環境為 :

lsb_release -a
No LSB modules are available.
Distributor ID:	elementary OS
Description:	elementary OS Freya
Release:	0.3.2
Codename:	freya

這個系統中的 shells 有這一些:

cat /etc/shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

以下我們示範從 CentOS 6 的套件庫下載 zsh 的 .rpm 檔,使用 Alien 把 .rpm 檔轉換成 .deb 檔來安裝。

Step 1
從 CentOS 7 的套件庫下載 zsh 的 .rpm 檔:

wget http://mirror.centos.org/centos/6/os/x86_64/Packages/zsh-4.3.11-4.el6.centos.x86_64.rpm

Step 2
使用 Alien 將 .rpm 檔轉換為 .deb 檔:

sudo alien --to-deb --scripts zsh-4.3.11-4.el6.centos.x86_64.rpm

這時候可能會有這樣的警告訊息:

warning: zsh-4.3.11-4.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

這是套件簽署的問題,可以不用管它。正常來說,這樣就會產生 .deb 擋了。

Step 3
使用 dpkg 安裝產生出來的 .deb 檔:

sudo dpkg -i zsh_4.3.11-5_amd64.deb

安裝完成後,查看一下可用的 shells:

cat /etc/shells

輸出為:

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh

實際執行 zsh 測試:

zsh --version

輸出為:

zsh 4.3.11 (x86_64-redhat-linux-gnu)

看起來正常可以執行,這樣就完成了。

處理器架構問題

如果我們手上套件的處理器架構與系統的處理器架構不同,將 .rpm 檔轉為 .deb 檔時,就會出現這樣的錯誤訊息:

zsh-4.3.11-4.el6.centos.i686.rpm is for architecture i386 ; the package cannot be built on this system

通常若遇到這樣的問題是沒有辦法使用的,最好的方式是再找找看有沒有符合自己系統處理器架構的 .rpm 套件可以使用。

如果想要強制它產生套件的話,可以用另一種方式:

sudo alien -g --script zsh-4.3.11-4.el6.centos.i686.rpm
Directories zsh-4.3.11 and zsh-4.3.11.orig prepared.

接著進入套件的目錄中,修改 debian/control 這個設定檔:

cd zsh-4.3.11
sudo vi debian/control

debian/control 的檔案內容會像這樣:

Source: zsh
Section: alien
Priority: extra
Maintainer: GTWang <gtwang@gtwang-linux>

Package: zsh
Architecture: i386
Depends: ${shlibs:Depends}
Description: A powerful interactive shell
 The zsh shell is a command interpreter usable as an interactive login
 shell and as a shell script command processor.  Zsh resembles the ksh
 shell (the Korn shell), but includes many enhancements.  Zsh supports
 command line editing, built-in spelling correction, programmable
 command completion, shell functions (with autoloading), a history
 mechanism, and more.
 .
 (Converted from a rpm package by alien version 8.90.)

i386 改為自己處理器的架構,例如 amd64

Architecture: amd64

然後儲存檔案並離開。接著執行:

sudo debian/rules binary

產生 .deb 檔,這個過程中會有很多輸出訊息,正常的話最後一行會有這樣的訊息:

dpkg-deb:把套件 `zsh' 製作為 `../zsh_4.3.11-5_amd64.deb'。

這樣就表示已經成功在上一層目錄中產生 .deb 檔了,不過雖然這樣可以產生 .deb 檔,也可以安裝,但不表示可以正常使用,通常不同處理器架構的執行檔會使用不同的函式庫,如果系統上沒有經過特別的設定,也是沒辦法正常使用的。

參考資料:Tecmint