2009年1月28日 星期三

Linux上的套件管理 (rpm, dpkg, yum, apt)

目前市面上大部分的Linux distro都是根基於Red Hat及Debian這兩大廠牌的改裝(SuSE是一個異類)。因此在套件管理上,Red Hat的RPM與Debian的DPKG就成為Linux套件管理上的兩大標準。

這邊也不討論類Unix作業系統在套件管理(軟體的安裝,移除,查詢)上所持的哲學與一般人常用的MS Windows系列有很大的不同而衍生出的困難了,直接就這兩個套件管理工具列出比較以利查詢。

以下整理列表來自Jamyy's Weblog

安裝

目的 rpm 用法 dpkg 用法
安裝指定套件 rpm -i pkgfile.rpm dpkg -i pkgfile.deb

查詢

目的 rpm 用法 dpkg 用法
顯示所有已安裝的套件名稱 rpm -qa dpkg -l (小寫 L)
顯示套件包含的所有檔案 rpm -ql softwarename (小寫 L) dpkg -L softwarename
顯示特定檔案所屬套件名稱 rpm -qf /path/to/file dpkg -S /path/to/file
查詢套件檔案資訊 rpm -qip pkgfile.rpm (顯示套件資訊)
rpm -qlp pkgfile.rpm (小寫 L, 顯示套件內所有檔案)
dpkg -I pkgfile.deb (大寫 I )
dpkg -c pkgfile.deb
顯示指定套件是否安裝 rpm -q softwarename (只顯示套件名稱)
rpm -qi softwarename (顯示套件資訊)
dpkg -l softwarename (小寫 L, 只列出簡潔資訊)
dpkg -s softwarename (顯示詳細資訊)
dpkg -p softwarename (顯示詳細資訊)

移除

目的 rpm 用法 dpkg 用法
移除指定套件 rpm -e softwarename dpkg -r softwarename (會留下套件設定檔)
dpkg -P softwarename (完全移除)

在 Debian 使用 alien 處理 RPM 套件

alien 可處理 .deb、.rpm、.slp、.tgz 等檔案格式, 進行轉檔或安裝.
於 Debian 安裝非 Debian 套件時, 可使用 alien 進行安裝.
安裝 alien 套件: apt-get install alien

  • 在 Debian 安裝 RPM 套件: alien -i quota-3.12-7.i386.rpm
  • 製作成 deb 的套件格式: alien -d quota-3.12-7.i386.rpm
  • 製作成 rpm 的套件格式: alien -r quota_3.12-6_i386.deb

APT與YUM

雖然RPM與DPKG有效的解決的軟體的安裝,移除與查詢的需求,但是在Linux上的套件管理還有一個很大的問題必須解決,就是各軟體間的相依性 (dependency)。RPM與DPKG只能做到檢查相依性,在安裝或移除時告知相依性的不滿足,皆下來就需要使用者自行去找出所需的套件來安裝。這 樣的確是有點不方便,因此產生了前端工具軟體 - APT及YUM。

APT

Debian開發,目前也有porting到其他版本,要在Red Hat系的Fedora或CentOS使用也是可以的。

使用方法:

  • 編輯 /etc/apt/sources.list,設定所選用的版本,如stable,testing,unstable及套件來源站台或裝置。檔案詳細設定請參考:了解 Debian 系統的哲學
  • 基本指令:
apt-setup 設定/etc/apt/souces.list
apt-get update 軟體資料庫同步
apt-get install softwarename1 [softwarename2.....] 安裝軟體
apt-get remove softwarename1 [softwarename2...] 移除軟體(保留設定檔)
apt-get --purge remove softwarename1 [softwarename2...] 移除軟體(不保留設定檔)
apt-cache search softwarename 列出所有sofrwarename的套件
apt-upgrade [softwarename1 softwarename2...] 更新套件,不指定套件名則更新所有可更新的套件
apt-get clean(autoclean) 刪除系統暫存的deb(autoclean只會將比目前系統舊版的套件刪除)
apt-get dist-upgrade 轉換系統的版本(需在/etc/apt/sources.list指定stable,testing或unstable)

YUM

YUM(Yellow dog Updater, Modified )是Yellow Dog Linux開發的。Yellow Dog Linux原本是一套完全源於Red Hat但運作於先前使用IBM PPC平台的MAC機器,原本以為這個版本已經消失,沒想到最新消息是他們推出了在Sony PS3上面運作的版本。CentOS及Fedora的基本預設安裝中即將YUM列入其內。如果沒記錯,要在Debian上使用YUM也是可以的。

使用方法:

  • 編輯 /etc/yum.conf 檔案詳細設定請參考:簡易 APT/YUM 伺服器設定 註1
  • 基本指令: (如果 yum 在工作過程中需要使用者回應,可加上 -y參數直接回答 yes )
yum install softwarename1 [softwarename2.....] 安裝套件
yum update [softwarename1 softwarename2...] 更新套件,不指定套件名則更新所有可更新的套件
yum list 列出目前在 yum server 上面有的套件
yum info 類似 rpm -qi
yum clean 移除下載到本機的 packages 或 headers
yum remove softwarename1 [softwarename2.....] 移除已經安裝的套件

註1:Red Hat近年來致力於將一個設定檔切割成很多小設定檔。以yum.conf為例,Red Hat將其分割成xxx.repo檔放置在/etc/yum.repos.d這個目錄下。並在yum.conf檔裡增加一行註解: PUT YOUR REPOS HERE OR IN separate files named file.repo in /etc/yum.repos.d。個人可視喜好決定。

0 意見:

張貼留言