1、原理shell
服務器端:數據庫
存放全部的rpm軟件包,經過命令分析rpm包之間的依賴關係,將這些依賴關係記錄成文件存放在服務器上。vim
客戶端:centos
配置yum配置文件,安裝某個軟件包,經過yum服務器上記錄的依賴關係,自動解決rpm軟件包的依賴關係。緩存
目的:服務器
自動解決rpm軟件包的依賴關係,自動下載安裝。測試
###分析安裝軟件依賴管理ui
man rpmthis
-R, --requiresurl
List capabilities on which this package depends.
rpm -q --requires vsftpd-2.2.2-11.el6_3.1.x86_64.rpm
###分析軟件包
# rpm -qf `which yum`
yum-3.2.29-40.el6.centos.noarch
配置文件
# rpm -ql yum-3.2.29-40.el6.centos.noarch
logfile=/var/log/yum.log #日誌文件
CentOS-Base.repo#官方提供的yum源
CentOS-Media.repo#本地yum源
刪除其它三個文件
*********************************************************************************
###yum源
[root@nan2 yum.repos.d]# pwd
/etc/yum.repos.d
[root@nan2 yum.repos.d]# cat CentOS.repo
[Packages]
name=Packages
baseurl=ftp://10.201.1.221/Packages
gpgcheck=0
enabled=1
~~~~~~~~~~~~~~~~~~
出現錯誤:
當安裝軟件時,退出,後臺在運行
解決方法:
ps -ef |grep yum #後臺全部進程
kill -9 1091 #殺進程
~~~~~~~~~~~~~~~~~~
###yum命令
查看yum安裝包 list是查出yum裏存在的軟件
[root@nan2 yum.repos.d]# yum list|grep vsftpd
vsftpd.x86_64 2.2.2-11.el6_3.1 Packages
#Packages是沒有安裝
刪除安裝的軟件
]# yum remove vsftpd-2.2.2-11.el6_3.1.x86_64
安裝軟件
#-y是不須要手動輸入y,但通常不建議
清理緩存
# yum clean all
**********************************************************************************
1.創建本地軟件倉庫
1)掛載光盤 mount /dev/cdrom /mnt/dvd 2) 創建本地配置文件 [CentOS6-Media] #容器的名稱,儘可能跟軟件包 name=CentOS-$releasever - Media #說明 baseurl=file:///share/ #目錄 gpgcheck=1 #gpg校檢 enabled=1 #是否可用 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #密鑰 [root@nan2 yum.repos.d]# mkdir /share/ #把目錄複製到/share/ [root@nan2 share]# cp -rf /mnt/dvd/* .
2.FTP軟件倉庫
由於複製的文件比較大,因此若是空間不夠,須要添加一個硬盤!!!! 若是空間足夠,就不須要增長磁盤空間: 虛擬機設置 fdisk /dev/sdb #新增一個硬盤(a,b,c....) 新增 n 安裝 partprobe mkfs -t ext4 /dev/sdb1 #格式化 mount /dev/sdb1 /share/ #掛載 fdisk -l dumpe2fs /dev/sdb1 |grep UUID #查看UUID ***設置自動掛載**** vim /etc/fstab #手工分區掛載 UUID= /share ext4 defaults #根據配好的配置 init 6 df -lh
正式建立ftp軟件倉庫
(1)複製鏡像文件到share shell>mkdir /share shell>mount /dev/cdrom /mnt/dvd shell>cp -rf /mnt/dvd/* . (2)安裝vsftp,配置CentOS-ftp.repo文件 shell>cd /share/Centos shell>rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm shell> pwd /etc/yum.repos.d shell>rm -fr * shell>cat CentOS-ftp.repo [Packages] name=Packages baseurl=ftp://10.90.2.48/Packages gpgcheck=0 enable=1 shell>yum clean all (3)保障匿名能夠訪問,匿名根目錄/share shell> vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_upload_enable=YES anon_root=/share shell> /etc/init.d/vsftpd restart (4)建立軟件倉庫 shell>pwd /share/CentOS shell>rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm shell>cd /share shell>createrepo -v -g repodata/repomd.xml . shell>createrepo -v -g /share/repodata/repomd.xml /share/CentOS repodate數據庫是精確描述一個rpm包的詳細信息,如依賴關係,包含關係,校驗碼等信息。 repomd.xml描述其餘元數據文件的文件。至關與其它數據的索引。包含其它文件的時間戳和校驗值。 這樣客戶端只要下載這一文件,就能夠知道其餘文件中哪些有更新 (5)測試 shell>yum clean all shell>yum list ###出現錯誤: Loaded plugins: fastestmirror, security Determining fastest mirrors ftp://10.90.2.48/Packages/repodata/repomd.xml: [Errno 4] IOError: [Errno ftp error] 550 Failed to change directory. Trying other mirror. Error: Cannot retrieve repository metadata (repomd.xml) for repository: Packages. Please verify its path and try again ###解決方法: shell>ps -ef|grep yum 進程殺掉 再yum list