一、原理
服务器端:
存放所有的rpm软件包,通过命令分析rpm包之间的依赖关系,将这些依赖关系记录成文件存放在服务器上。
客户端:
配置yum配置文件,安装某个软件包,通过yum服务器上记录的依赖关系,自动解决rpm软件包的依赖关系。
目的:
自动解决rpm软件包的依赖关系,自动下载安装。
###分析安装软件依赖管理
man rpm
-R, --requires
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