搭建YUM服务器,配置yum客户端
2019獨角獸企業重金招聘Python工程師標準>>>
搭建YUM服務器 配置yum客戶端
?
作者:沈小然
版本:1.0
日期:2013年4月23日
1?? YUM介紹
YUM是Yellow dog Updater, Modified的縮寫,是由Duke University所發起的計劃,目的就是為了解決在安裝或卸載RPM包過程中的依賴問題,使用者在對RPM包的安裝、升級、卸載過程中自動安裝需要的依賴,卸載過程也自動卸載相關的軟件包。可以實現這樣功能的除了YUM外,還有APT (Advanced Package Tool,是由debian所發展的一個軟件管理工具)。
?YUM的工作原理,在每一個 RPM軟件的頭(header)里面都會紀錄該軟件的依賴關系,那么如果可以將該頭的內容紀錄下來并且進行分析,可以知道每個軟件在安裝之前需要額外安裝哪些基礎軟件。也就是說,在服務器上面先以分析工具將所有的RPM檔案進行分析,然后將該分析紀錄下來,只要在進行安裝或升級時先查詢該紀錄的文件,就可以知道所有相關聯的軟件。
所以YUM的基本工作流程如下:
服務器端:在服務器上面存放了所有的RPM軟件包,然后以相關的功能去分析每個RPM文件的依賴性關系,將這些數據記錄成文件存放在服務器的某特定目錄內。
客戶端:如果需要安裝某個軟件時,先下載服務器上面記錄的依賴性關系文件(可通過http或FTP方式,所以yum服務器還要把RPM數據源通過http或ftp發布出來),通過對服務器端下載的紀錄數據進行分析,然后取得所有相關的軟件,一次全部下載下來進行安裝。
2?? 搭建YUM服務器
?
系統環境:
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
YUM服務器需要的軟件包:
yum
yum-security
yum-rhn-plugin
yum-metadata-parser
yum-updatesd
createrepo
yum客戶端需要安裝的軟件包:
yum
yum-updatesd
YUM服務器配置步驟
1.? 復制RHEL5光盤中的Cluster? ClusterStorage? Server? VT四個目錄做為YUM服務器的數據源。RHEL6中只需要copy一個目錄Packages就可以了。
# mkdir -p /apps/Yum_Server/redhat5.6/
將Cluster? ClusterStorage? Server? VT四個目錄拷貝到/apps/Yum_Server/redhat5.6/
注:用戶屬主是root.root,不影響http的虛擬機發布。
2.? 使用Createrepo命令將這4個目錄里的所有包進行一次“包依賴性關系生成”,并且會把生成關系的xml文件保存到同級目錄的一個叫repodata的文件夾里comps-rhel5-xxxx.xml(xxxx和目錄名一致)。命令如下:
# createrepo Cluster(RHEL6 則是createrepo Packages
32/32 - Cluster_Administration-as-IN-5.2-1.noarch.rpm??????????????????????????
Saving Primary metadata
Saving file lists metadata
Saving other metadata
查看生成的文件
# ls Cluster/repodata/
comps-rhel5-cluster.xml
?
# createrepo ClusterStorage/
39/39 - Global_File_System-si-LK-5.2-1.noarch.rpm??????????????????????????????
Saving Primary metadata
Saving file lists metadata
Saving other metadata
查看生成的文件
# ls ClusterStorage/repodata/
comps-rhel5-cluster-st.xml
?
# createrepo Server/
2428/2428 - gettext-devel-0.17-1.el5.i386.rpm???????????????????????????????????
Saving Primary metadata
Saving file lists metadata
Saving other metadata
查看生成的文件
# ls Server/repodata/
comps-rhel5-server-core.xml
?
# createrepo VT/
38/38 - Virtualization-as-IN-5.2-11.noarch.rpm?????????????????????????????????
Saving Primary metadata
Saving file lists metadata
Saving other metadata
查看生成的文件
# ls VT/repodata/
comps-rhel5-vt.xml
3. 配置一個HTTP或FTP服務器,發布Cluster? ClusterStorage? Server? VT四個目錄
直接通過非80端口來發布,這樣不影響原來80端口運行的應用。
Listen 9100
<VirtualHost *:9100>
??? ServerAdmin shenxiaoran
??? DocumentRoot /var/www/html/Yum_Server
??? ServerName test.yum.com
</VirtualHost>
?
重啟apache服務,記得關閉selinux,否則不允許開9100端口。
測試HTTP服務
?
http://192.168.1.10:9100/Packages/
4. 創建一個YUM客戶端的xxx.repo文件,放到服務器上供yum客戶端下載,這樣不必在上百臺客戶端上逐個手動配置了。
創建一個yum.repo文件(擴展名必須是repo,文件名隨便起)放到每個客戶端的/etc/yum.repos.d/yum.repo位置。
| [rhel-base] name= redhat5.6 x86 baseurl=http://192.168.1.10:9100/redhat5.6/Server gpgcheck=0 enabled=1 ? [rhel-vt] name= redhat5.6 x86 baseurl=http://192.168.1.10:9100/redhat5.6/VT gpgcheck=0 enabled=1 ? [rhel-cluster] name= redhat5.6 x86 baseurl=http://192.168.1.10:9100/redhat5.6/Cluster gpgcheck=0 enabled=1 ? [rhel-ClusterStorage] name= redhat5.6? x86 baseurl=http://192.168.1.10:9100/redhat5.6/ClusterStorage gpgcheck=0 enabled=1 |
?
相關參數說明:
l? [ ]:內的是倉庫的名字,不重復即可。
l? name:倉庫的描述。
l? baseurl: YUM源地址,這里配置的是http,還可以是ftp,FILE等。
l? enabled :是否啟用這個倉庫,1為起用,0為禁用
l? gpgcheck :是否檢查GPG簽名(驗證要安裝的包是不是REDHAT官方的),我們搭建內部的yum源這里要關閉GPG簽名檢查。
3?? 配置YUM客戶端
?
首先從YUM服務器把客戶端需要的yum文件下載到本地相應目錄
# wget http://192.168.1.10:8080/redhat5.6/yum.repo
# cp -f /root/yum.repo /etc/yum.repos.d/
測試yum客戶端
# yum install openssl*
?
至此,YUM服務器成功搭建,yum客戶端也可以成功訪問
4 創建國外Saltstack的本地yum鏡像源
解決的問題:
因為Saltstack自己的repo源是在國外,解決國內服務器yum安裝Saltstack的時候下載慢,經常下載失敗的問題;
解決本地某些服務器無法訪問外網的情況下需要yum源的問題;
解決國內鏡像版本不夠新的問題;
搭建步驟
1) 在之前搭建的yum server的基礎上,我們只需要yum-utils包的/usr/bin/reposync命令即可實現鏡像整個國外Saltstack的yum源。
2) yum -y install yum-utils
3) 在yum server存放yum源rpm包的目錄結構下,單獨創建一個SaltStack的目錄,做為本地Saltstack的yum源目錄
# mkdir -p /var/www/html/Yum_Server/SaltsStack/
4) 去Saltstack官網,找到對應操作系統的repo源
| cat > /etc/yum.repos.d/saltstack.repo << EOF [saltstack] name=SaltStack repo for RHEL/CentOS \$releasever baseurl=https://repo.saltstack.com/yum/redhat/\$releasever/\$basearch/latest enabled=1 gpgcheck=1 gpgkey=https://repo.saltstack.com/yum/redhat/\$releasever/\$basearch/latest/SALTSTACK-GPG-KEY.pub EOF |
執行上面的命令,創建一個Saltstack的repo文件
5) 使用 yum repolist命令查看國外Saltstack的yum源的倉庫標識
# yum repolist
?
6) 使用reposync命令把saltstack倉庫里的所有軟件包都鏡像下載到本地的目錄
# reposync -r saltstack /var/www/html/Yum_Server/SaltsStack/
?
一共116個包,大概10幾分鐘下載完了。
7) 最后,創建鏡像yum源的依賴關系
[root@ops1 SaltsStack]# createrepo saltstack/
116/116 - python27-tools-2.7.14-2.ius.el6.x86_64.rpm???????????????????????? ???
Saving Primary metadata
Saving file lists metadata
Saving other metadata
8) 創建本地客戶端使用的salt.repo文件
# vi salt.repo
| [saltstack-base] name= local satlstack for redhat6.x_X64 baseurl=http://172.21.20.1:9100/SaltsStack/saltstack gpgcheck=0 enabled=1 |
把這個salt.repo傳到各個客戶機上就大功告成。
5 ? 客戶端多yum源提速
場景:通常客戶端除了加載本地yum源,還加載了很多互聯網上的yum源,每次yum list都要先讀取互聯網上的yum源列表才會讀取本地的,而需要安裝的包卻在本地yum源。如何提升訪問yum的速度?
解決方案,使用yum-plugin-priorities插件,設置多個yum.repo的優先級。
1、安裝YUM 的 yum-plugin-priorities 插件。
$ yum install yum-plugin-priorities
2、開啟優先級配置,默認安裝后即開啟
cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
3、設置優先級
# vi yumdiy.repo
| [DIY-base] name= DIY for redhat6.x_X64 baseurl=http://172.21.20.1:9100/DIY_RedHat6_X64 gpgcheck=0 enabled=1 priority=1 |
說明:priority=1,priority 越小表示優先級越高
6? FAQ
6.1 Yum客戶端若提示類似下面的Public key 相關錯誤,如何處理?
“warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
updates/gpgkey????????????????????????????????????????????????????????????????????????????????????????????????? | 1.7 kB???? 00:00????
Public key for openssl-devel-0.9.8e-26.el5_9.1.i386.rpm is not installed”
解決辦法:刪掉/etc/yum.repos.d/目錄下其他的.repo文件,例如系統自帶的rhel-xxx.repo文件,因為這些文件中包含對GPG簽名的校驗,這將導致無法成功安裝我們自搭建的yum服務器中的rpm包。
6.2 Yum客戶端提示錯誤“Error performing checksum Trying other mirror.”如何處理?
部分錯誤截取如下:
rhel-ClusterStorage??????????????????????????????????????????????????????????????????????? | 1.3 kB???? 00:00??? ?
rhel-ClusterStorage/primary??????????????????????????????????????????????????????????????? | 8.9 kB???? 00:00??? ?
http://172.21.20.1:9100/RedHat5.8_X64/ClusterStorage/repodata/primary.xml.gz: [Errno -3] Error performing checksum
Trying other mirror.
rhel-ClusterStorage/primary??????????????????????????????????????????????????????????????? | 8.9 kB???? 00:00??? ?
http://172.21.20.1:9100/RedHat5.8_X64/ClusterStorage/repodata/primary.xml.gz: [Errno -3] Error performing checksum
Trying other mirror.
Error: failure: repodata/primary.xml.gz from rhel-ClusterStorage: [Errno 256] No more mirrors to try.
原因分析:如果使用redhat6版本搭建yum服務器,使用createrepo命令創建的數據倉庫,而yum客戶端是redhat5版本來執行yum list就會出現上面的錯誤。
原因是redhat6版本的createrepo默認使用的checksum類型是sha256算法,而redhat5客戶端的yum使用的checksum類型是md5。二者校驗時因使用了不同的校驗類型導致校驗結果不同,所以報錯。
解決方法:在YumServer上對于搭建redhat5版本的yum源時,使用createrepo -s md5來創建數據倉庫就可以解決這個問題。yum客戶端執行 yum clean all 以后在試一切正常。
RHEL 6.5的yum.repo文件樣例
[rhel-base]
name= redhat6.5_X64
baseurl=http://192.168.1.10:9100/Packages
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
enabled=1
?
CentOS 6 的客戶端可以直接使用互聯網的yum源
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
yum clean all
增加第三方YUM源,方便安裝APF,Saltstack等應用軟件
1)安裝rpmforge源,可以方便安裝APF
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
2)安裝epel源,方便安裝Saltstack
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -ivh epel-release-latest-6.noarch.rpm
sed -i 's/mirrorlist=https/mirrorlist=http/g' /etc/yum.repos.d/epel.repo
sed -i 's/mirrorlist=https/mirrorlist=http/g' /etc/yum.repos.d/epel-testing.repo
RHEL7的YUM服務器和客戶端配置
1、拷貝光盤中的Packages目錄
?
cp -Rp /media/Packages/ /var/www/html/YumServer/rhel7.2/Packages/
2、使用createrepo命令創建依賴
createrepo Packages/
Spawning worker 0 with 1155 pkgs
Spawning worker 1 with 1155 pkgs
Spawning worker 2 with 1155 pkgs
Spawning worker 3 with 1155 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
3、配置HTTPD服務發布YumServer目錄
vi /etc/httpd/conf/httpd.conf
Listen 9100
<VirtualHost *:9100>
??? ServerAdmin shenxiaoran
??? DocumentRoot /var/www/html/YumServer
??? ServerName test.yum.com
</VirtualHost>
注:RHEL7的httpd安裝后,httpd.conf文件內容中沒有關于虛擬機的配置模版了
?
<VirtualHost>... </VirtualHost>?
3、YUM客戶端的配置
vi /etc/yum.repos.d/yum.repo
[rhel-base]
name= RedHatES7.2
baseurl=http://172.16.96.59:9100/rhel7.2/Packages
gpgcheck=0
enabled=1
?
4.6、RHEL7在安裝httpd服務器時,提示“could not open mime types config file /etc/mime.types.”
分析:/etc/mime.types文件屬于mailcap這個安裝包,安裝上即可解決問題。
解決辦法:若不知道某個文件屬于哪個rpm包,使用 ?yum install /etc/mime.types 安裝就可以了。前提是需要配置yum源。
?
轉載于:https://my.oschina.net/lionel45/blog/124940
總結
以上是生活随笔為你收集整理的搭建YUM服务器,配置yum客户端的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot2.0 基础案例(0
- 下一篇: 关于DataGridView_DataE