1. 程式人生 > >linux的軟體包管理工具---rpm與yum

linux的軟體包管理工具---rpm與yum

一、rpm和yum簡介

ReHat和CentOS廠商的linux上的軟體均是以rpm軟體包的方式來安裝的。rpm是安裝的是一種經過編譯後的軟體包,即是廠商經過在自己的一套硬體和軟體平臺編譯安裝後無問題打成的一個包,以這種方式安裝軟體可以認為是第一需要和其原始的硬體和軟體平臺一致、第二需要符合原先的安裝平臺的那套依賴關係、且由root來進行安裝(即將包內的檔案解壓打各指定目錄)。

因此,單獨下載一個rpm包進行安裝,是需要考慮以上三個問題的。尤其是第二個問題,依賴關係的解決。而yum的出現則解決了該問題,用yum進行安裝的時候是首先去這個rpm包中尋找依賴關係的清單,然後將這些依賴包都下載下來且安裝上,然後再安裝指定要安裝的包。注意,最終軟體的安裝還是以一個rpm包安裝的。

rpm包內的相關資料檔案在/var/lib/yum內,這裡記錄著一個rpm包的相關引數,用於以後的升級、移除、查詢等;

rpm預設按照的路徑在linux系統內的一些指定的路徑下,例如/etc下放置一些配置檔案,/usr/bin下放置一些可執行的命令,/usr/lib放置一些程式使用的動態函式庫,/usr/share/doc下放置一些軟體使用手冊和說明檔案,/usr/shar/man放置一些軟體的幫助文件等。

二、rpm的相關命令

rpm最好的地方在於提供很多命令,可以直接的檢視我當前的系統內是否有某個軟體,其安裝的位置,其的配置檔案所在等等資訊。

1、rpm的安裝

rpm  -ivh    *.rpm     ##安裝rpm軟體包,以可見的過程和進度顯示

rpm  -ivh   http://website.name/path/pkgname.rpm     ##以網上的某個檔案來安裝某軟體包

rpm  -ivh  *rpm  --test    ##檢測要安裝的某軟體包是否有依賴 

rpm  -ivh  *rpm  --prefix   PATH      ##要將軟體安裝到其他非正規目錄時。比如,想要將某軟體安裝到 /usr/local 而非常規的/bin, /etc 等目錄, 就可以使用--prefix /usr/local

一般來說,rpm 的安裝選項引數大約就是這些。通常建議直接使用 -ivh 就好了, 如果安裝的過程中發現問題,一個一個去將問題找出來,儘量不要使用『 暴力安裝法 』。

2、rpm的更新與升級

rpm -Uvh  *rpm    ##後面接的檔案若沒有則直接安裝,若有則升級

rpm  -Fvh  *rpm   ##後面接的檔案若沒有則不執行命令,若有才進行升級

3、rpm查詢

rpm  -qa     ##列出所有的rpm軟體包,一般和grep   *rpm結合使用來查詢是否安裝了某軟體包

rpm  -ql   *rpm-3.1-5.i386.rpm     ##後面要跟具體的包名稱,要帶上版本資訊,即列出包的檔案都安裝到了什麼位置

rpm  -qi  *rpm-3.1-5.i386.rpm    ##後面要跟具體的包名稱,要帶上版本資訊,即列出軟體的詳細資訊,如開發商、版本與說明等;

rpm  -qc  *rpm-3.1-5.i386.rpm    ##後面要跟具體的包名稱,要帶上版本資訊,即列出包的配置檔案(即/etc下的檔案)都有哪些

rpm  -qf  /etc/crontab     ##後面跟檔名,找出該檔案屬於哪一個已安裝的軟體

4、移除rpm軟體包

rpm  -e  *rpm   ##移除某rpm軟體包

PS:軟體的移除必須是先移除最頂層的,然後再移除下面的,比如openssh依賴於openssl,此時應該先移除openssh,若先移除openssl則有可能會造成openssh不可用的故障。

三、yum的相關命令

1、yum源及yum倉庫

是透過分析 RPM 的標頭資料後, 根據各軟體的相關性製作出屬性相依時的解決方案,然後可以自動處理軟體的相依屬性問題,以解決軟體安裝、移除、升級的問題。yum源,可以理解為是一個yum-server提供的具有多種軟體的倉庫(這裡的倉庫是以軟體分類為顆粒度的,即一個軟體分類為一個倉庫),yum進行安裝時會去這個yum源裡去尋找相應軟體倉庫中的rpm包。一個.repo的檔案就是一個倉庫,例如阿里雲提供的CentOS-Base.repo,其內容如下

[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com   ##此倉庫的名稱
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/     ##倉庫的地址
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

可知,yum在進行安裝時,是去指定倉庫中下載軟體到本地,然後進行安裝的。另外,yum 會先下載容器的清單到本機的 /var/cache/yum 裡面去!那我們修改了網址或者下載了新的yum源,卻沒有修改容器名稱 (中括號內的文字), 可能就會造成本機的列表與 yum 朋務器的列表丌同步,此時就會出現無法更新,需要yum  clean all來進行刪除所有容器快取資料。

2、yum相關命令

yum [list|info|search|provides|whatprovides] 引數    ###查詢功能

yum [install|update] 軟體    ##安裝升級軟體

yum [remove] 軟體    ##移除某軟體

yum clean [packages|headers|all]   ##清除yum倉庫的所有快取資料

yum  makecache   ##生成快取