Linux rpm 與 dpkg 用法比較

2021-08-27 14:41:57 字數 4957 閱讀 4338

linux界的兩大主流: rpm與dpkg

由於自由軟體的蓬勃發展,加上大型unix-like 主機的強大效能,讓很多軟體開發者將他們的軟體使用tarball 來發布。

後來linux 發展起來後,由一些企業或社群將這些軟體收集起來製作成為distributions 以發布這好用的linux 作業系統。

但後來發現到,這些distribution 的軟體管理實在傷腦筋, 如果軟體有漏洞時,又該如何修補呢?

使用tarball 的方式來管理嗎?

又常常不曉得到底我們安裝過了哪些程式?

因此,一些社群與企業就開始思考linux 的軟體管理方式。

如同剛剛談過的方式,linux 開發商先在固定的硬體平台與作業系統平台上面將需要安裝或公升級的軟體編譯好, 然後將這個軟體的所有相關檔案打包成為乙個特殊格式的檔案,在這個軟體檔案內還包含了預先偵測系統與相依軟體的指令碼, 並提供記載該軟體提供的所有檔案資訊等。

最終將這個軟體檔案發布。

使用者端取得這個檔案後,只要透過特定的指令來安裝,那麼該軟體檔案就會依照內部的指令碼來偵測相依的前驅軟體是否存在,若安裝的環境符合需求,那就會開始安裝 ,安裝完成後還會將該軟體的資訊寫入軟體管理機制中,以達成未來可以進行公升級、移除等動作呢。

目前在linux 界軟體安裝方式最常見的有兩種,分別是:

如前所述,不論dpkg/rpm 這些機制或多或少都會有軟體屬性相依的問題,那該如何解決呢?

其實前面不是談到過每個軟體檔案都有提供相依屬性的檢查嗎?

那 麼如果我們將相依屬性的資料做成列表, 等到實際軟體安裝時,若發生有相依屬性的軟體狀況時,例​​如安裝a 需要先安裝b 與c ,而安裝b 則需要安裝d 與e 時,那麼當妳要安裝a ,透過相依屬性列表,管理機制自動去取得b, c, d, e 來同時安裝, 不就解決了屬性相依的問題嗎?

沒錯!您真聰明!

目前新的linux 開發商都有提供這樣的『線上公升級』機制,透過這個機制, 原版光碟就只有第一次安裝時需要用到而已,其他時候只要有網路,妳就能夠取得原本開發商所提供的任何軟體了呢!

在dpkg 管理機制上就開發出apt 的線上公升級機制,rpm 則依開發商的不同,有red hat 系統的yum , suse 系統的yast online update (you), mandriva 的urpmi 軟體等。

distribution 代表

軟體管理機制

使用指令

線上公升級機制(指令)

red hat/fedora

rpmrpm, rpmbuild

yum (yum)

debian/ubuntu

dpkg

dpkg

apt (apt-get)

我們這裡使用的是centos 系統嘛!

所以說: 使用的軟體管理機制為rpm機制,而用來作為線上公升級的方式則為yum !

底下就讓我們來談談rpm 與yum 的相關說明吧!

rpm與dpkg

目前市面上大部分的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

apt與yum

雖然rpm與dpkg有效的解決的軟體的安裝,移除與查詢的需求,但是在linux上的套件管理還有乙個很大的問題必須解決,就是各軟體間的相依性(dependency)。

rpm與dpkg只能做到檢查相依性,在安裝或移除時告知相依性的不滿足,皆下來就需要使用者自行去找出所需的套件來安裝。

這樣的確是有點不方便,因此產生了前端工具軟體- apt及yum。

apt

debian開發,目前也有porting到其他版本,要在red hat系的fedora或centos使用也是可以的。

使用方法:

apt-setup

設定/etc/apt/souces.list

apt-get update

軟體資料庫同步

apt-get install softwarename1 [softwarename2.....]

安裝軟體

apt-get remove softwarename 1 [ softwarename 2...]

移除軟體(保留設定檔)

apt-get --purge remove softwarename 1 [ softwarename 2...]

移除軟體(不保留設定檔)

apt-cache search softwarename

列出所有sofrwarename的套件

apt-upgrade [softwarename 1 softwarename 2...]

更新套件,不指定套件名則更新所有可更新的套件

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也是可以的。

使用方法:

基本指令: (如果yum在工作過程中需要使用者回應,可加上-y引數直接回答yes )

yum install softwarename1 [softwarename2.....]

安裝套件

yum update [softwarename 1 softwarename 2...]

更新套件,不指定套件名則更新所有可更新的套件

yum list

列出目前在yum server 上面有的套件

yum info

類似rpm -qi

yum clean

yum remove softwarename1 [softwarename2.....]

移除已經安裝的套件

注1:red hat近年來致力於將乙個設定檔切割成很多小設定檔。

以yum.conf為例,red hat將其分割成***.repo檔放置在/etc/yum.repos.d這個目錄下。

並在yum.conf檔裡增加一行註解: put your repos here or in separate files named file.repo in /etc/yum.repos.d。

個人可視喜好決定。

鳥哥的linux與adsl私房菜: 簡易apt/yum伺服器設定

debian**起步法: 了解debian系統的哲學

jamyy's weblog: rpm vs. dpkg常用引數對照

Linux rpm命令用法

rpm命令是rpm軟體包的管理工具。rpm原本是red hat linux發行版專門用來管理linux各項套件的程式,由於它遵循gpl規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。rpm套件管理方式的出現,讓linux易於安裝,公升級,間接提公升了linux的適用度。rpm 選項 引數...

dpkg命令的用法

dpkg 是debian package的簡寫,為 debian 作業系統 專門開發的套件管理系統,用於軟體的安裝,更新和移除。所有源自 debian 的linux的發行版都使用 dpkg,例如 ubuntu 閱讀目錄 安裝軟體 列出與該包先關聯的檔案 顯示包的版本 移除軟體 保留配置 移除軟體 不...

dpkg命令的用法

dpkg 是debian package的簡寫,為 debian 作業系統 專門開發的套件管理系統,用於軟體的安裝,更新和移除。所有源自 debian 的linux的發行版都使用 dpkg,例如 ubuntu 命令 dpkg i deb file name 例項 dpkg i download mo...