一、概念/區(qū)分:
yum源
什么是yum源:
yum是一個在CentOS、RedHat和Fedora操作系統(tǒng)中使用的Shell前端軟件包管理器。yum主要管理基于rpm的軟件包,Centos先將發(fā)布的軟件放置到YUM服務器內(nèi),然后分析這些軟件的依賴屬性問題,將軟件內(nèi)的記錄信息寫下來(header)。然后再將這些信息分析后記錄成軟件相關性的清單列表。這些列表數(shù)據(jù)與軟件所在的位置可以稱為倉庫(repository)。當客戶端有軟件安裝的需求時,客戶端主機會向網(wǎng)絡上面的YUM服務器的倉庫網(wǎng)址上下載清單,然后通過清單列表的數(shù)據(jù)與本機RPM數(shù)據(jù)庫已存在的軟件數(shù)據(jù)相比較,就可以安裝所有需要的具有依賴屬性的軟件了。
yum的基本工作流程
服務器端:
在服務器上面存放了所有的RPM軟件包,然后以相關的功能去分析每個RPM文件的依賴性關系,將這些數(shù)據(jù)記錄成文件存放在服務器的某特定目錄內(nèi)。客戶端:
如果需要安裝某個軟件時,先下載服務器上面記錄的依賴性關系文件(可通過WWW或FTP方式),通過對服務器端下載的紀錄數(shù)據(jù)進行分析,然后取得所有相關的軟件,一次全部下載下來進行安裝。
yum客戶端的配置文件:
repo文件是CentOS、RedHat和Fedora操作系統(tǒng)中yum源(軟件倉庫)的配置文件,通常一個repo文件定義了一個或者多個軟件源。
yum 的客戶端配置文件分為兩部分main 和repository:
main:定義了全局配置選項,整個yum 配置文件應該只有一個main,常位于/etc/yum.conf ,這個文件為所有倉庫提供公共配置,包括yum下載的RPM包的緩存目錄,日志所在位置,是否允許更新不同版本的RPM包等等。
repository:定義了每個源/服務器的具體配置,可以有一到多個。常位于/etc/yum.repo.d 目錄下的各文件中,這個文件為倉庫的指向提供配置。
yum 的配置方式也分兩種:
直接配置/etc目錄下的yum.conf文件,增加repository片段
在/etc/yum.repos.d目錄下增加.repo文件
/etc/yum.conf文件詳解:
[main]
cachedir=/var/cache/yum # cachedir:yum緩存的目錄,yum在此存儲下載的rpm包和數(shù)據(jù)庫,一般是/var/cache/yum
debuglevel=2 # debuglevel:除錯級別,0──10,默認是2 貌似只記錄安裝和刪除記錄
logfile=/var/log/yum.log # 日志路
pkgpolicy=newest # pkgpolicy: 包的策略。一共有兩個選項,newest和last,這個作用是如果你設置了多個repository,而同一軟件在不同的repository中同時存 在,yum應該安裝哪一個,如果是newest,則yum會安裝最新的那個版本。如果是last,則yum會將服務器id以字母表排序,并選擇最后的那個 服務器上的軟件安裝。一般都是選newest。
distroverpkg=centos-release # 指定一個軟件包,yum會根據(jù)這個包判斷你的發(fā)行版本,默認是redhat-release,也可以是安裝的任何針對自己發(fā)行版的rpm包。
tolerant=1 # tolerent,也有1和0兩個選項,表示yum是否容忍命令行發(fā)生與軟件包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經(jīng)安裝了,如果你設為1,則yum不會出現(xiàn)錯誤信息。默認是0。
exactarch=1 # exactarch,有兩個選項1和0,代表是否只升級和你安裝軟件包cpu體系一致的包,如果設為1,則如你安裝了一個i386的rpm,則yum不會用1686的包來升級。
retries=20 # retries,網(wǎng)絡連接發(fā)生錯誤后的重試次數(shù),如果設為0,則會無限重試。
obsoletes=1 # 這是一個update的參數(shù),具體請參閱yum(8),簡單的說就是相當于upgrade,允許更新陳舊的RPM包
gpgcheck=1 # gpgchkeck= 有1和0兩個選擇,分別代表是否進行gpg校驗,以確定rpm 包的來源是有效和安全的,如果沒有這一項,默認是檢查的。
exclude=xxx #exclude 排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對于安裝了諸如美化包,中文補丁的朋友特別有用。
keepcache=[1 or 0] #設置 keepcache=1,yum 在成功安裝軟件包之后保留緩存的頭文件 (headers) 和軟件包。默認值為 keepcache=0 不保存
reposdir=[包含 .repo 文件的目錄的絕對路徑] # 該選項用戶指定 .repo 文件的絕對路徑。.repo 文件包含軟件倉庫的信息 (作用與 /etc/yum.conf 文件中的 [repository] 片段相同)。
repo文件詳解:
我們以Centos-Base.repo倉庫基礎配置文件為例
一個標準的centos的repo文件內(nèi)容如下:[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 11: releasever&?arch=basearch&repo=os
#baseurl=http://mirror.centos.org/centos/releasever/os/releasever/os/basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
各個選項說明如下:
[base]:代表倉庫的名字,中括號一定要存在,里面的名稱可以隨意,但是不能有兩個相同的容器名稱。
name:說明一下倉庫的意義。
mirrorlist:這個是倉庫的鏡像站點列表。一般情況下默認是使用此選項。
baseurl:這個最重要,因為后面接的就是倉庫的實際地址。mirrorlist是由yum程序自行去找鏡像站點,baseurl則是指定固定的一個倉庫網(wǎng)址。一個repo文件可以定義多個軟件源。
enable=1:就是讓這個容器啟動,如果不想啟動可以使用enable=0.
gpgcheck=1:指定是否需要查閱RPM文件內(nèi)的數(shù)字證書。
gpgkey:就是數(shù)字證書的公鑰文件所在的位置。
在Centos-Base.repo中還定義的其它的名稱的倉庫,如:[updates]、[extras]、[centosplus]等等,這些倉庫都為YUM服務器額外附加或者是升級是用到的軟件倉庫,分別指向不同的路徑軟件倉庫。
epel源
EPEL源是什么:
EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一個項目,為“紅帽系”的操作系統(tǒng)提供額外的軟件包,適用于RHEL、CentOS和Scientific Linux。說白了,有些組件yum源沒有,epel里面有
如何獲取 EPEL 的軟件包:
EPEL 包含一個叫做 ‘epel-release’ 的包,其中包含了用于軟件包簽名的 gpg 密鑰和軟件源的信息。安裝這個包到您的企業(yè)版 Linux 上之后,您將可以通過使用類似于 yum 的工具來安裝軟件包和它們的依賴。在默認情況下,EPEL 倉庫的穩(wěn)定版本是開啟的。除了 epel-release 源,還有一個叫做 ‘epel-testing’ 倉庫 包含尚未被視作穩(wěn)定的軟件,請自行斟酌開啟的風險。 CentOS 用戶可以直接通過 yum install epel-release 安裝并啟用 EPEL 源。
二、部署
部署阿里yum源
1.備份本地yum源
[root@75-124 yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
2.獲取阿里yum源配置文件
[root@75-124 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
部署阿里epel(RHEL 7)源
兩種方案:
一、yum安裝
1.安裝 epel 配置包
[root@75-124 yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
2.將 repo 配置中的地址替換為阿里云鏡像站地址
sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
多了兩個文件:epel.repo 和epel-testing.repo
二、wget下載直接用
[root@75-124 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.兩個都要更新yum緩存
[root@75-124 yum.repos.d]# yum clean all
[root@75-124 yum.repos.d]# yum makecache
講解:
yum clean all:清除YUM緩存,清除所有已下載的包文件。yum 會把下載的軟件包和header存儲在cache中,而不會自動刪除。并且如果覺得它們占用了磁盤空間,可以使用yum clean指令進行清除,更精確的用法是yum clean headers清除header,yum clean packages清除下載的rpm包,yum clean all 全部清除
yum makecache:就是把服務器的包信息下載到本地電腦緩存起來,yum安裝的時候,會先從本地緩存中調(diào)用,其實即使沒有yum makecache,yum檢測本地無包,會從yum拉取,所以可執(zhí)行可不執(zhí)行,不過最好還是再執(zhí)行一下yum makecache命令。其實即使沒有yum makecache,如果yum安裝的時候會將安裝包進行緩存,不過最好還是再執(zhí)行一下yum makecache命令
4.(可不執(zhí)行) yum源更新命令
[root@75-124 yum.repos.d]# yum update -y(升級所有包同時也升級軟件和系統(tǒng)內(nèi)核)
講解:
其實更推薦用yum upgrade取代yum update,yum update只更新系統(tǒng)中已有的軟件包,不會更新內(nèi)核軟件包(kernel-這個包),yum upgrade是更徹底的update,會分析包的廢棄關系,可以跨小版本升級(比如從centos 7.1升級到centos 7.4),除了做了yum update完全相同的事之外,還會更新kernel-的包,也會卸載掉已經(jīng)廢棄的包。
新部署系統(tǒng)需要yum update/upgrade是因為yum不會給你解決依賴沖突(但是apt會)。所以yum update 是為了解決跟換yum源之后,rpm包之間的依賴關系,以免后面yum 安裝某些服務報錯。
因為拿到的服務器都是軟件包版本比較低的操作系統(tǒng),安裝上層應用的時候可能會告訴你依賴不能滿足,此時你需要用yum update/upgrade更新下系統(tǒng)的軟件包,以滿足安裝依賴
舉個例子,你的系統(tǒng)中已經(jīng)安裝了kernel-2.6.32.500,但是你要安裝的某個軟件包依賴于kernel-2.6.32.600,此時yum會報錯退出,告訴你依賴不滿足,并不會升級kernel包(只是舉個例子而已,實際上幾乎沒有軟件包直接依賴于kernel包),所以你只能yum update/upgrade一次,把系統(tǒng)中所有的軟件包全部更新,這樣滿足新部署的軟件包的依賴。
在debian/ubuntu的系統(tǒng)中,apt會對這種情況自動處理,會自動升級依賴的軟件包。
換句話來說,對于新部署的服務器,也是推薦upgrade全部的軟件包,已獲得最新的安全補丁。即使對于已經(jīng)上線的服務器,也是推薦定期打安全漏洞補丁,減少漏洞帶來的侵害。
5.查看當前yum源
[root@75-124 yum.repos.d]# yum repolist

版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至2705686032@qq.com 舉報,一經(jīng)查實,本站將立刻刪除。文章鏈接:http://m.z1146.cn/zx/yunwei/4206.html