rpm和yum
在linux中安裝一個軟件包並不像在windows中雙擊就能安裝,因爲在linux的一個特性就是組合小的軟件完成大的功能,所以爲了完成一個大的功能通常需要安裝多個包來組合,各個包完成相應的任務而包又相互組合。
在redhat中安裝一個包用的命令是:rpm
rpm package management 最早是由redhat開發的用來在自己的系統上安裝程序包,但由於其方便實用,在CentOS,Fedora,等系統中被採用。
另一種常用的是:dep 在debain,Ubuntu,上被使用。
在安裝數據包的時候有時候有依賴關係:比如安裝A需要B,安裝B又需要安裝C,但安裝C又需要A,這樣構成循環,雖說在rpm中可以強制安裝包,但當有很多包有依賴關係時候,rpm或dep就很難解決了。所以就出現了yum:
yum 全稱yellowdog update manager,是redhat在rpm的基礎上進一步發展而成的,主要用於解決安裝多個數據包時自動的解決依賴關係,自動的將多個包歸爲一組,同時提供了更多的選項來管理數據包。yum有客戶端和服務器兩部分,兩部分可以在同一臺主機上,也可以使分開的。服務器部分通常被稱爲yum庫(因爲其提供了所有的rpm數據包)。yum客戶端的配置文件有兩部分
1. /etc/yum.conf 其內容有以下幾部分
cachedir 表示yum在本地的緩存位置
keepcache 是否存儲緩存(0不存,1存儲)
logfile 日誌保存的目錄
gpgcheck 是否檢查(0不檢查,1檢查)
exactarch 版本是否精確匹配
metadata 緩存保存的時間
一般這個配置文件中的內容不需要改變。
2. /etc/yum.repos.d/*.repo 文件的名字隨意,但後綴必須是repo,而這個文件中可以存儲多個庫,redhat中的庫有以下幾個:VT,Server,Cluster,ClusterStorage,分別實現虛擬化,基本操作,集羣,集羣中的存貯。沒個庫內容除了路徑不相同之外其他的都相同。每個庫中通常包括以下幾部分:
[identify] 庫的表示符
name=描述信息
baseurl=庫的路徑,必須寫到包含repo的文件夾(最重要)
gpgcheck=1/0 1表示檢查每個包的校驗碼,0表示不校驗
enable=1/0 1表示啓用該庫,0反之
eg:
[ClusterStorage]
name=Instructor ClusterStorage Repository
baseurl=http://instructor.example.com/yum/ClusterStorage
gpgcheck=0
enable=1
表示ClusterStroage庫所在的位置在baseurl=http://instructor.example.com/yum/中
其他的幾個庫也依照這種寫法
yum命令的使用方法:
yum [option] [command] packagename
eg: yum -y install httpd
[option]中最常用的有:
-y 表示只要需確定的一直是yes
-q 使用靜默模式
--nogpgcheck 不對數據包校驗(要確認數據包的來源)
[command]中的命令:
install 安裝軟件包
update 升級軟件包
check-update 檢查並升級
remove/erase 卸載軟件包
list 默認列出所有軟件包,還有二級選項
all/available/updates/installed/extra/recent/glob_exp
info 顯示簡要信息
provides 表示有那個包提供
grouplist 列出組
groupinstall 已經安裝的組
groupinfo 組信息
localinstall 安裝本地的包,但有依賴關係的包在庫中時自動查找並安裝
reinstall 重新安裝
downgrade 降級
repolist 列出可用的庫
tips
1. 在使用yum庫時能夠自動的解決依賴關係主要是根據repodata這個文件中定義的信息來實現的,其中filelists.xml.gz記錄庫中的包名,other.xml.gz記錄其他內容,primary.xml.gz記錄主要信息,repomd.xml是總括前面三個信息的。當有一堆軟件包時,可以使用命令:createrepo來創建repodata這個文件夾和其中的內容。詳細createrepo的使用方法,我會在以後的博客中介紹的。
2. glob_exp 表示:bash中的統配符 如* . 等