1. 概述
日常的工作中,經常要安裝和卸載軟件,在linux centos的版本里提供了rpm這個命令進行安裝,但是這個命令經常因為包的依賴性導致了安裝失敗,后面就有了yum這個工具。兩者之間的關系如下
rpm是由紅帽公司開發的軟件包管理方式,使用rpm我們可以方便的進行軟件的安裝、查詢、卸載、升級等工作。但是rpm軟件包之間的依賴性問題往往會很繁瑣,尤其是軟件由多個rpm包組成時。
Yum(全稱為Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
rpm是linux的一種軟件包名稱,以.rmp結尾,安裝的時候語法為:rpm -ivh,rpm包的安裝有一個很大的缺點就是文件的關聯性太大,有時候裝一個軟件要安裝很多其他的軟件包,很麻煩,所以為此RedHat小紅帽開發了yum安裝方法,他可以徹底解決這個關聯性的問題,很方便,只要配置兩個文件即可安裝,安裝方法是:yum -y install,yum并不是一中包,而是安裝包的軟件
簡單點說, rpm只能安裝已經下載到本地機器上的rpm包. Yum不僅能配置本地的yum源進行安裝而且能在線下載并安裝rpm包,能更新系統,且還能自動處理包與包之間的依賴問題,這個是rpm工具所不具備的。
本文主要是講解如何配置本地yum源,網絡yum源,配置ftp yum源倉庫,以及第三方倉庫的制作。
2. yum源配置
yum的配置文件分為兩部分:main和repository
main部分定義了全局配置選項,整個yum配置文件應該只有一個main。常位于/etc/yum.conf中。
repository(定義倉庫)部分定義了每個源/服務器的具體配置,可以有一到多個。常位于/etc/yum.repo.d目錄下以.repo結尾的文件。
2.1 yum.conf配置解釋
cachedir=/var/cache/yum ?//yum緩存的目錄,yum在此存儲下載的rpm包和數據庫,默認設置為/var/cache/yum
keepcache=0 ?//安裝完成后是否保留軟件包,0為不保留(默認為0),1為保留
debuglevel=2 ?//Debug信息輸出等級,范圍為0-10,缺省為2
logfile=/var/log/yum.log ?//yum日志文件位置。用戶可以到/var/log/yum.log文件去查詢過去所做的更新。
pkgpolicy=newest ?//包的策略。一共有兩個選項,newest和last,這個作用是如果你設置了多個repository,而同一軟件在不同的repository中同時存在,yum應該安裝哪一個,如果是newest,則yum會安裝最新的那個版本。如果是last,則yum會將服務器id以字母表排序,并選擇最后的那個服務器上的軟件安裝。一般都是選newest。
distroverpkg=redhat-release ?//指定一個軟件包,yum會根據這個包判斷你的發行版本,默認是redhat-release,也可以是安裝的任何針對自己發行版的rpm包。
tolerant=1 ?//有1和0兩個選項,表示yum是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設為1,則yum不會出現錯誤信息。默認是0。
exactarch=1 ?//有1和0兩個選項,設置為1,則yum只會安裝和系統架構匹配的軟件包,例如,yum不會將i686的軟件包安裝在適合i386的系統中。默認為1。
retries=6 ?//網絡連接發生錯誤后的重試次數,如果設為0,則會無限重試。默認值為6.
obsoletes=1 ?//這是一個update的參數,具體請參閱yum(8),簡單的說就是相當于upgrade,允許更新陳舊的RPM包。
plugins=1 ?//是否啟用插件,默認1為允許,0表示不允許。我們一般會用yum-fastestmirror這個插件。
exclude=selinux*//排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對于安裝了諸如美化包,中文補丁的朋友特別有用。
gpgcheck=1 //有1和0兩個選擇,分別代表是否是否進行gpg(GNU Private Guard)校驗,以確定rpm包的來源是有效和安全的。這個選項如果設置在[main]部分,則對每個repository都有效。默認值為0。
這個配置文件在自己配置的時候,根據實際進行修改,一般也是可以不進行修改。
2.2 yum倉庫配置
在yum倉庫配置里,默認只要三個參數就可以實現功能,配置id [id],指定源地址baseurl,配置每個版本對應的公鑰的地址gpgkey=url,這里如果不檢查包的來源,要添加配置語句gpgcheck=0 即可安裝軟件。
2.2.1 設置本地源
[sunny]? //第一行 id,即倉庫名,可以自己命名,但是.只能一個單詞,所以不能有空格
name=sunny-media-yum-source //自己寫一個名字,相當于描述,格式沒要求
baseurl=file:///misc/cd/? //則該路徑為yum源,選擇是repodata所在文件夾的路徑,該倉庫路徑有四個格式,http,https,ftp,file等,其中file://為本地的路徑
gpgcheck=1 //檢查包的來源,1檢查,0不檢查
enabled=1 //1為啟用改倉庫,0為禁用。這里可以用語句開啟或禁用該倉庫yum-config-manager --enable sunny表示啟用倉庫名為sunny的yum源。disable為禁用。
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-6 ?// key的地址
2.2.2 設置sohu源
[sohu]
name=sohu-source
baseurl=http://mirrors.sohu.com/centos/6/os/i386/
gpgcheck=1
enabled=1 ?
gpgkey=http://mirrors.sohu.com/centos/6/os/i386/RPM-GPG-KEY-CentOS-6
2.3 yum源倉庫制作
服務器搭建前,先關閉防火墻和selinux,防止對實驗現象產生干擾.以下實驗演示在centOS7上操作
關閉防火墻
centos7上
systemctl disable firewalld.service
systemctl stop firewalld.service
centos6上
chkconfig iptables off
service iptables stop
檢查,運行iptables -vnL查看是否有策略生效,沒有表示關閉成功
?關閉SElinux
vim /etc/selinux/config
SELINUX=permissive
setenforce? 0
getenforce 驗證是否生效,結果為Permissive表示生效
2.3.1 ftp服務器yum源
制作ftp服務器,一般是用來給自己公司內部使用的,我們需要提前準備好所有的軟件,一般也是可以直接把安裝的光驅的內容全部拷貝到ftp服務器上
2.3.1.1 ftp服務器端配置
服務器端運行
rpm -ivh vsftpd-3.0.2-21.el7.x86_64.rpm
新建源倉庫的文件夾,規則操作 如下的語句進行創建,如果只有64為的6和7x86_64,而沒有32為i386的系統,文件夾路徑不需要對同一版本的64位或者32位進行區別,/os/$basearch/就可以省略
baseurl=/var/ftp/pub/centos/$releasever/os/$basearch/
運行語句
mkdir -p /var/ftp/pub/centos/{6,7}
拷貝軟件包和相關數據到對應文件夾
這里做實驗,直接把光盤資料全部拷貝到到這里
cp -r /media/* /var/ftp/pub/centos/7
這里為了做實驗的方便,直接把光盤掛載在對應的文件夾6和7也可以實現效果。光盤掛載,ftp上識別會慢一點,等待10分鐘后再刷新ftp服務器
到這里,ftp服務器yum 倉庫已經創建完成
2.3.1.2 ftp客戶端配置
編輯配置文件vim ?/etc/yum.repos.d/sunny.repo
[sunnyftp]
name=sunny-build-ftp-for-yum
baseurl=ftp://172.18.254.71/pub/centos/$releasever/
gpgcheck=1
enabled=1
gpgkey=ftp://172.18.254.71/pub/centos/$releasever/RPM-GPG-KEY-CentOS-$releasever
測試安裝軟件,如果正常安裝,則實驗完成
2.3.2 http服務器yum源制作
一般我們通過http服務器來制作第三方的源,是為了給其他人或者公司來下載使用的。直接將rpm包拷貝到http服務器上對應的文件夾,然后在通過 工具createrepo來創建倉庫,如果有新的包放到服務器上,建議把repodate刪掉,重新利用createrepo來創建
2.3.2.1 http服務器端配置
安裝http服務器,由于http服務器安裝包具有依賴關系,所以我們通過yum進行安裝
yum install httpd
systemctl start httpd //啟動httpd服務
systemctl enable httpd //設為開機自動啟動 httpd服務
測試http服務器是否正常運行
vim /var/www/html/index.html
welcome to Sunny home
打開網頁http://172.18.254.71/ ,顯示welcome to Sunny home,表示服務已經正常啟用
準備第三方rpm相關包
mkdir /var/www/html/sunny //創建文件夾sunny,用來放置rpm包和repodata
//這里測試兩個軟件 tree和lsof.在實際環境中,第三方放置的軟件可能是公共資源沒有的
//如果存在依賴關系,我們有開啟其他的倉庫源,系統會自動從其他倉庫獲取需要安裝的依賴軟件包
cp /media/Packages/tree-1.6.0-10.el7.x86_64.rpm /var/www/html/sunny
cp /media/Packages/lsof-4.87-4.el7.x86_64.rpm /var/www/html/sunny
createrepo? /var/www/html/sunny? //如有新的服務包放到服務器,都要重新運行該語句
服務器端配置完成了。打開網頁http://172.18.254.71/sunny/可以看到相應的服務包
2.3.2.2 客戶端配置
客戶端的配置如下
[sunnyhttp]
name=sunny-build-for-third-part-packet
baseurl=http://172.18.254.71/sunny/ ? ?//服務器的對應的地址
enabled=1
gpgcheck=0 ? ?//這里如果是大型軟件包,那么第三方軟件的提供方一般會提供對應的key,有key的話在配置gpgkey選項 ?
客戶端配置完成,測試tree 和 lsof是否可以成功安裝即可。
2.4 常用服務包下載源
附上網絡上常用的服務包下載的源。除此之外,還可以通過軟件官網來獲取相關軟件安裝包
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com