專有云之組件yum源

前言

巴拉巴拉

 

1. RPM

1.1 什麼是RPM

RPM早期被稱爲RedHat Package Manager,但由於目前RPM非常流行,且已經成爲Linux工業標準。所以RPM現在又被稱爲RPM is Package Manager。

RPM管理支持事務機制,增強了程序安裝卸載的管理,其主要包括打包、安裝、查詢、升級、卸載、校驗、數據庫管理。更直白的講RPM是一種軟件安裝包的規範和格式定義。

linux的軟件包安裝與windows有所不同,windows下所有的二進制文件、配置文件、庫文件、說明文檔等都在一個文件夾下;linux對同一軟件包不同類型的文件則安裝在不同目錄(如二進制程序在 /bin、 /sbin、 /usr/bin、 /usr/sbin、 /usr/local/bin、  /usr/local/sbin 等目錄,配置文件在/etc目錄,庫文件在/lib、/usr/lib、 /usr/local/lib等目錄、說明文檔在/usr/share/doc目錄  )。所以在linux進行軟件包的安裝與卸載等管理會十分複雜,RPM就是爲了解決此問題出現的。

1.2 RPM包的格式

源程序的命名規範name-version.tar.{gz|bz2|xz},例如bash-4.3.1.tar.xz

RPM包的命名規範name-version-release.os.arch.rpm,例如bash-4.3.2-5.el6.x86_64.rpm

  • name:程序名稱。
  • version:程序版本號。
  • release(發行號):用於標識RPM包本身的發行號,與源程序的release號無關。
  • os:即說明RPM包支持的操作系統版本。如el6(即rhel6)、centos6、suse11。
  • arch:主機平臺。如i686、x86_64、amd64、ppc(power-pc)、noarch(即不依賴平臺)

 

2. YUM

2.1 什麼是yum源

yum,是Yellow dog Updater, Modified 的簡稱,是一種rpm軟件包管理器。使用yum進行rpm包管理,可以自動的解決包之間的依賴關係(RPM無法解決軟件包的依賴關係)。

linux系統基本上分兩大類: 
1.RedHat系列:Redhat、Centos、Fedora等,使用yum源進行rpm包管理
2.Debian系列:Debian、Ubuntu等,使用dpkg進行apt包管理

https://mirrors.aliyun.com/centos/

2.2 yum源CS工作模式

服務器端:在服務器上面存放了所有的RPM軟件包,然後以相關的功能去分析每個RPM文件的依賴性關係,將這些數據記錄成文件存放在服務器的某特定目錄內。 
客戶端:如果需要安裝某個軟件時,先下載服務器上面記錄的依賴性關係文件(可通過WWW或FTP方式),通過對服務器端下載的紀錄數據進行分析,然後取得所有相關的軟件,一次全部下載下來進行安裝。

2.3 client端相關配置

client端的YUM配置方式是基於分段配置的,主配置文件位於/etc/yum.conf, 片段配置在/etc/yum.repos.d/目錄下(所有以.repo結尾的配置文件), 兩個配置文件的大致如下

主配置文件配置了一個特殊的倉庫,名稱爲main。main是爲其他倉庫提供默認的全局配置的。主配置文件中提供的配置項如下所示

[main]部份是yum的全局配置項,
cachedir:yum緩存的目錄,yum在此存儲下載的rpm包和數據庫,默認是/var/cache/yum。
keepcache:是否保持yum緩存,默認0。
debuglevel:除錯級別,0-10,默認2。
logfile:yum的日誌文件,默認是/var/log/yum.log。
exactarch:1或0,代表是否只升級和你安裝軟件包cpu體系一致的包,如果設爲1,則如你安裝了一個i386的rpm,則yum不會用1686的包來升級。
gpgchkeck: 1或0,代表是否進行gpg校驗
plugins:是否允許使用插件,默認是0不允許。
exclude:排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對於安裝了諸如美化包,中文補丁的朋友特別有用。
installonly_limit:允許保留多少個內核包。
distroverpkg:指定一個軟件包,yum會根據這個包判斷你的發行版本,默認是redhat-release,也可以是安裝的任何針對自己發行版的rpm包。
pkgpolicy:包的策略。一共有兩個選項,newest和last,這個作用是如果你設置了多個repository,而同一軟件在不同的repository中同時存在,yum應該安裝哪一個,如果是newest,則yum會安裝最新的那個版本。如果是last,則yum會將服務器id以字母表排序,並選擇最後的那個服務器上的軟件安裝。一般都是選newest。
retries:網絡連接發生錯誤後的重試次數,如果設爲0,則會無限重試。
tolerent:也有1和0兩個選項,表示yum是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設爲1,則yum不會出現錯誤信息。默認是0。

分析/etc/yum.repos.d/*.repo文件,下載阿里雲的yum配置文件大致分析如下

#wget -O CentOS-Base-aliyun.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#cat CentOS-Base-aliyun.repo

[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

......

yum源有一些自己的內置變量,$xxxx代表yum源的內置變量,定義的內置變量有:

  • $releasever:當前操作系統的主版本號。若CentOS6.4 該值爲6。
  • $basearch:當前平臺的基本架構。x86_64 或 i386。
  • $arch:當前平臺版本架構。x86_64 或 i386/i586/i686。

2.3 server搭建

網上有很多可用的yum源,在可聯網的機器上直接配置即可,方法如下

#安裝wget
yum install -y wget
#備份/etc/yum.repos.d/CentOS-Base.repo文件
cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo.back
#下載阿里雲的Centos-6.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#重新加載yum
yum clean all && yum makecache

如果本機無法聯網,則可以通過本地掛載鏡像的方式配置一個yum源server

#從CentOS的官網下載CentOS的完整版iso文件,並上傳到Linux文件系統中,例如/opt/xxx.iso
地址 http://isoredirect.centos.org/centos/6/isos/x86_64/

#創建掛載目錄並掛載鏡像
mkdir /mnt/yum_iso_mount && mount -o loop -t iso9660 /opt/xxx.iso /mnt/yum_iso_mount

#移除或備份Centos-Base.repo文件
cd /etc/yum.repos.d/ && mv Centos-Base.repo Centos-Base.repo.back

#編輯Centos-Media.repo文件
vim /etc/yum.repos.d/Centos-Media.repo
name=CentOS-$releasever - Media
baseurl=file:///mnt/yum_iso_mount/ #重點 將baseurl修改爲DVD的掛載目錄
gpgcheck=1
enabled=1#開啓本地更新模式

# 重新加載yum
yum clean all && yum makecache

3. 常用命令

#查找軟件包命令
yum search <keyword>
rpm -qa | grep xxx //已安裝的軟件包

#列出所有可更新的軟件清單命令:
yum check-update

#更新所有軟件命令
yum update

#僅安裝指定的軟件命令
yum install <package_name>
rpm -ivh <package_name> //指定文件安裝

yum download <package_name>

#僅更新指定的軟件命令
yum update <package_name>

#列出所有可安裝的軟件清單命令
yum list

#刪除軟件包命令
yum remove <package_name>
rpm -e <package_name> //建議,如果此包被其它包依賴,則無法刪除,需要加參數強制刪除

重建yum repo: 
清除緩存命令:
yum clean all //等於yum clean packages; yum clean oldheaders; yum clean headers
yum clean packages //清除緩存目錄下的軟件包
yum clean headers //清除緩存目錄下的 headers
yum clean oldheaders //清除緩存目錄下舊的 headers

rpm 數據庫重建(有時候機器rpm db會損壞,導致rpm命令無法使用,此時需要重建rpm db)
cd /var/lib/rpm
rm -rf __db*
rpm --rebuilddb

參考資料

https://www.cnblogs.com/shijiaqi1066/p/3843955.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章