linux软件包管理(dpkg、rpm)与软件源的由来(apt、yum、Yast)
文章補(bǔ)充與總結(jié):
ubuntu中dpkg與apt的關(guān)系:
dpkg繞過apt包管理數(shù)據(jù)庫對軟件包進(jìn)行操作,所以你用dpkg安裝過的軟件包用apt可以再安裝一遍,系統(tǒng)不知道之前安裝過了,將會(huì)覆蓋之前dpkg的安裝。dpkg是用來安裝.deb文件,但不會(huì)解決模塊的依賴關(guān)系,且不會(huì)關(guān)心ubuntu的軟件倉庫內(nèi)的軟件,可以用于安裝本地的deb文件
apt會(huì)解決和安裝模塊的依賴問題,并會(huì)咨詢軟件倉庫, 但不會(huì)安裝本地的deb文件, apt是建立在dpkg之上的軟件管理工具
aptitude與?apt-get?一樣,是?Debian?及其衍生系統(tǒng)***能極其強(qiáng)大的包管理工具。與?apt-get?不同的是,aptitude在處理依賴問題上更佳一些。舉例來說,aptitude在刪除一個(gè)包時(shí),會(huì)同時(shí)刪除本身所依賴的包。這樣,系統(tǒng)中不會(huì)殘留無用的包,整個(gè)系統(tǒng)更為干凈。
源是指線上軟件倉庫,它解決了我們通過本地軟件管理命令(rpm、dpkg)的包依賴問題,我們可以在ubuntu下使用apt命令集安裝源里的軟件(opensuse 上用zyper,redhat用yum),他可以直接幫我們安裝好所依賴的軟件包。如果下載源碼包,自行編譯或者使用dpkg或rpm安裝.deb或.rpm的軟件包安裝好之后可能會(huì)因?yàn)槿鄙僖蕾嚢鴮?dǎo)致軟件無法運(yùn)行或者運(yùn)行失敗。
ubuntu源列表文件存放位置: /etc/apt/sources.list
Linux界的兩大主流: RPM與DPKG
?
由于自由軟體的蓬勃發(fā)展,加上大型Unix-Like 主機(jī)的強(qiáng)大效能,讓很多軟體開發(fā)者將他們的軟體使用Tarball 來釋出。后來Linux 發(fā)展起來后,由一些企業(yè)或社群將這些軟體收集起來制作成為distributions 以發(fā)布這好用的Linux 作業(yè)系統(tǒng)。但后來發(fā)現(xiàn)到,這些distribution 的軟體管理實(shí)在傷腦筋, 如果軟體有漏洞時(shí),又該如何修補(bǔ)呢?使用tarball 的方式來管理嗎? 又常常不曉得到底我們安裝過了哪些程式?因此,一些社群與企業(yè)就開始思考Linux 的軟體管理方式。
?
如同剛剛談過的方式,Linux 開發(fā)商先在固定的硬體平臺(tái)與作業(yè)系統(tǒng)平臺(tái)上面將需要安裝或升級的軟體編譯好, 然后將這個(gè)軟體的所有相關(guān)檔案打包成為一個(gè)特殊格式的檔案,在這個(gè)軟體檔案內(nèi)還包含了預(yù)先偵測系統(tǒng)與相依軟體的腳本, 并提供記載該軟體提供的所有檔案資訊等。最終將這個(gè)軟體檔案釋出。 用戶端取得這個(gè)檔案后,只要透過特定的指令來安裝,那么該軟體檔案就會(huì)依照內(nèi)部的腳本來偵測相依的前驅(qū)軟體是否存在,若安裝的環(huán)境符合需求,那就會(huì)開始安裝 ,安裝完成后還會(huì)將該軟體的資訊寫入軟體管理機(jī)制中,以達(dá)成未來可以進(jìn)行升級、移除等動(dòng)作呢。
?
目前在Linux 界軟體安裝方式最常見的有兩種,分別是:
- dpkg :
這個(gè)機(jī)制最早是由Debian Linux 社群所開發(fā)出來的,透過dpkg 的機(jī)制, Debian 提供的軟體就能夠簡單的安裝起來,同時(shí)還能提供安裝后的軟體資訊,實(shí)在非常不錯(cuò)。只要是衍生于Debian 的其他Linux distributions 大多使用dpkg 這個(gè)機(jī)制來管理軟體的, 包括B2D, Ubuntu 等等。
- RPM :
這個(gè)機(jī)制最早是由Red Hat 這家公司開發(fā)出來的,后來實(shí)在很好用,因此很多distributions 就使用這個(gè)機(jī)制來作為軟體安裝的管理方式。包括Fedora, CentOS, SuSE 等等知名的開發(fā)商都是用這咚咚。
如前所述,不論dpkg/rpm 這些機(jī)制或多或少都會(huì)有軟體屬性相依的問題,那該如何解決呢?其實(shí)前面不是談到過每個(gè)軟體檔案都有提供相依屬性的檢查嗎? 那 么如果我們將相依屬性的資料做成列表, 等到實(shí)際軟體安裝時(shí),若發(fā)生有相依屬性的軟體狀況時(shí),例??如安裝A 需要先安裝B 與C ,而安裝B 則需要安裝D 與E 時(shí),那么當(dāng)妳要安裝A ,透過相依屬性列表,管理機(jī)制自動(dòng)去取得B, C, D, E 來同時(shí)安裝, 不就解決了屬性相依的問題嗎?
?
沒錯(cuò)! 您真聰明! 目前新的Linux 開發(fā)商都有提供這樣的『線上升級』機(jī)制,透過這個(gè)機(jī)制, 原版光碟就只有第一次安裝時(shí)需要用到而已,其他時(shí)候只要有網(wǎng)路,妳就能夠取得原本開發(fā)商所提供的任何軟體了呢!在dpkg 管理機(jī)制上就開發(fā)出APT 的線上升級機(jī)制,RPM 則依開發(fā)商的不同,有Red Hat 系統(tǒng)的yum , SuSE 系統(tǒng)的Yast Online Update (YOU), Mandriva 的urpmi 軟體等。
| distribution 代表 | 軟體管理機(jī)制 | 使用指令 | 線上升級機(jī)制(指令) |
| Red Hat/Fedora | RPM | rpm, rpmbuild | YUM (yum) |
| Debian/Ubuntu | DPKG | dpkg | APT (apt-get) |
我們這里使用的是CentOS 系統(tǒng)嘛! 所以說: 使用的軟體管理機(jī)制為RPM機(jī)制,而用來作為線上升級的方式則為yum !底下就讓我們來談?wù)凴PM 與YUM 的相關(guān)說明吧!
?
RPM與DPKG
目前市面上大部分的Linux distro都是根基于Red Hat及Debian這兩大廠牌的改裝(SuSE是一個(gè)異類)??。因此在套件管理上,Red Hat的RPM與Debian的DPKG就成為Linux套件管理上的兩大標(biāo)準(zhǔn)。
?
這邊也不討論類Unix作業(yè)系統(tǒng)在套件管理(軟體的安裝,移除,查詢)上所持的哲學(xué)與一般人常用的MS Windows系列有很大的不同而衍生出的困難了,直接就這兩個(gè)套件管理工具列出比較以利查詢。
?
以下整理列表來自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,顯示套件內(nèi)所有檔案) | dpkg -I pkgfile.deb (大寫I ) dpkg -c pkgfile.deb |
| 顯示指定套件是否安裝 | rpm -q softwarename (只顯示套件名稱) rpm -qi softwarename (顯示套件資訊) | dpkg -l softwarename (小寫L,只列出簡潔資訊) dpkg -s softwarename (顯示詳細(xì)資訊) dpkg -p softwarename (顯示詳細(xì)資訊) |
移除
| 目的 | rpm 用法 | dpkg 用法 |
| 移除指定套件 | rpm -e softwarename | dpkg -r softwarename (會(huì)留下套件設(shè)定檔) dpkg -P softwarename (完全移除) |
在Debian使用alien處理RPM套件
alien 可處理.deb、.rpm、.slp、.tgz 等檔案格式, 進(jìn)行轉(zhuǎn)檔或安裝.
于Debian安裝非Debian套件時(shí),可使用alien進(jìn)行安裝.
安裝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上的套件管理還有一個(gè)很大的問題必須解決,就是各軟體間的相依性(dependency)。RPM與DPKG只能做到檢查相依性,在安裝或移除時(shí)告知相依性的不滿足,皆下來就需要使用者自行去找出所需的套件來安裝。這樣的確是有點(diǎn)不方便,因此產(chǎn)生了前端工具軟體- APT及YUM。
?
?
APT
Debian開發(fā),目前也有porting到其他版本,要在Red Hat系的Fedora或CentOS使用也是可以的。
使用方法:
- 編輯/etc/apt/sources.list ,設(shè)定所選用的版本,如stable,testing,unstable及套件來源站臺(tái)或裝置。檔案詳細(xì)設(shè)定請參考: 了解Debian系統(tǒng)的哲學(xué)
- 基本指令:
| apt-setup | 設(shè)定/etc/apt/souces.list |
| apt-get update | 軟體資料庫同步 |
| apt-get install softwarename1 [softwarename2.....] | 安裝軟體 |
| apt-get remove softwarename 1 [softwarename 2...] | 移除軟體(保留設(shè)定檔) |
| apt-get --purge remove softwarename 1 [ softwarename 2...] | 移除軟體(不保留設(shè)定檔) |
| apt-cache search softwarename | 列出所有sofrwarename的套件 |
| apt-upgrade [softwarename 1softwarename 2...] | 更新套件,不指定套件名則更新所有可更新的套件 |
| apt-get clean(autoclean) | 刪除系統(tǒng)暫存的deb(autoclean只會(huì)將比目前系統(tǒng)舊版的套件刪除) |
| apt-get dist-upgrade | 轉(zhuǎn)換系統(tǒng)的版本(需在/etc/apt/sources.list指定stable,testing或unstable) |
?
?
YUM
YUM(Yellow dog Updater, Modified )是Yellow Dog Linux開發(fā)的。Yellow Dog Linux原本是一套完全源于Red Hat但運(yùn)作于先前使用IBM PPC平臺(tái)的MAC機(jī)器,原本以為這個(gè)版本已經(jīng)消失,沒想到最新消息是他們推出了在Sony PS3上面運(yùn)作的版本。CentOS及Fedora的基本預(yù)設(shè)安裝中即將YUM列入其內(nèi)。 如果沒記錯(cuò),要在Debian上使用YUM也是可以的。
使用方法:
- 編輯/etc/yum.conf檔案詳細(xì)設(shè)定請參考: 簡易APT/YUM伺服器設(shè)定注1
- 基本指令: (如果yum在工作過程中需要使用者回應(yīng),可加上-y參數(shù)直接回答yes )
| yum install softwarename1 [softwarename2.....] | 安裝套件 |
| yum update [softwarename 1softwarename 2...] | 更新套件,不指定套件名則更新所有可更新的套件 |
| yum list | 列出目前在yum server 上面有的套件 |
| yum info | 類似rpm -qi |
| yum clean | 移除下載到本機(jī)的packages 或headers |
| yum remove softwarename1 [softwarename2.....] | 移除已經(jīng)安裝的套件 |
注1:Red Hat近年來致力于將一個(gè)設(shè)定檔切割成很多小設(shè)定檔。 以yum.conf為例,Red Hat將其分割成xxx.repo檔放置在/etc/yum.repos.d這個(gè)目錄下。 并在yum.conf檔里增加一行注解: PUT YOUR REPOS HERE OR IN separate files named file.repo in /etc/yum.repos.d。個(gè)人可視喜好決定。
?
參考文件:
原文地址:http://justcoding.iteye.com/blog/1937171
總結(jié)
以上是生活随笔為你收集整理的linux软件包管理(dpkg、rpm)与软件源的由来(apt、yum、Yast)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tesklink 管理员项目角色被修改后
- 下一篇: linux软件包安装方式汇总