我们在介绍yum本地源的时候 先给大家谈谈RPM安装。

RPM(Redhat Package Manager)解决源码包安装的众多依赖关系,,旨在校验安装卸载查询升级等管理软件操作。

安装:rpm -ivh filename.rpm

升级:rpm -Uvh filename.rpm

卸载:rpm -e filename.rpm

查询软件的描述信息:rpm -qpi filename

列出软件的文件信息:rpm -qpl filename.rpm

查询文件数据哪个RPM: rpm -qf filename


虽然RPM能帮助用户查询软件相关的依赖关系,但还是要靠我们自己解决,如依赖关系众多这对于我们而言也是不小的负担

YUM仓库则是为进一步简化RPM管理软件难度而设计的,能分析出所需软件包及相关依赖关系,自动从服务器下载软件包并安装。

YUM:Yellowdog Updater Modified  

 

 

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。(bing 词典)

 

    yum可以检测软件间的依赖性,并提示用户解决,将发布的软件放到yum server,然后分析这些软件的依赖关系,然后将软件相关性记录成列表。当客户端有软件安装请求时,yum客户端在yum服务器上下载记录列表,然后通 过列表信息与本机rpm数据库已安装软件数据对比,明确软件的依赖关系,能够判断出那些软件需要安装。

    列表信息保存在yum客户端的/var/cache/yum中,每次yum启动都会通过校验码与yum服务器同步更新列表信息。

    使用yum需要有yum repositories,用来存放软件列表信息和软件包。yum repositories可以是http站点,ftp站点,本地站点。

    路径格式:

       ftp://hostname/PATH/TO/REPO   REPO指repodata所在路径的父目录
         http://hostname/PATH/TO/REPO  
         file:///PATH/TO/REPO     

 



本文中的“本地YUM源”包括三种类型:一是直接使用CentOS光盘作为本地yum源,优点是简单便捷,缺点是光盘软件包可能不完整(centos 7 Everything 总共才6.57G);二是同步CentOS官方源到本地(相当于创建了一个公共镜像),优点是最靠谱,缺点是占空间费流量;三是创建完全自定义的本地源,优点是灵活性最大,缺点是只是作为其他源的补充。

一、使用CentOS光盘作为本地yum源

(1) 实体机上直接放入光盘
(2) VMware Workstation 虚拟机:虚拟机-->可移动设备-->CD/DVD-->连接

复制代码

代码如下:


mkdir /mnt/cdrom #创建目录
mount /dev/cdrom /mnt/cdrom #挂载
umount /mnt/cdrom #卸载
若不想每次都要放光盘,那就复制光盘文件到本地硬盘吧
[code]
cp -avf /mnt/cdrom /yum # -a:该选项保留链接、文件属性,并递归地复制目录


2、创建repo文件



复制代码

代码如下:


cat >>/etc/yum.repos.d/CentOS-Local.repo<<-EOF
[Local]
name=Local Yum
baseurl=file:///yum/
gpgcheck=1(是否检查)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1(启用为1)


问:为什么连createrepo软件都不用安装?

createrepo 的作用是创建索引文件的(位于repodata文件夹),光盘中连GPG-KEY都有了。

二、如何为CentOS创建公共镜像

详细说明见官方中文文档:

http://wiki.centos.org/zh/HowTos/CreatePublicMirrors

提供一个SHELL脚本,然后cron自动运行~~

脚本稍作修改,换成中科大的镜像源。可用镜像列表见:http://www.centos.org/download/mirrors/


复制代码

代码如下:


localpath="/mirrors/CentOS"
mirror="mirrors.hustunique.com::centos"
rsync="rsync -avzH --delete"</p> <p>verlist="7"
baselist="centosplus extras fasttrack os updates"
archlist="x86_64"</p> <p>for ver in $verlist
do
for base in $baselist
do
for arch in $archlist
do
remote=$mirror/$ver/$base/$arch/
mkdir -pv $localpath/$ver/$base/$arch/
$rsync $remote $localpath/$ver/$base/$arch/
done
done
done</p> <p>


三、创建完全自定义的本地源

把平时收藏的一些RPM软件包放在一个目录里,就变成一个自定义源了,可以用YUM来管理,灵活性相当大。

官方教程:How to setup your own package repository 

1、创建本地yum仓库

复制代码

代码如下:


mkdir -p /yum/local #可以有N级目录
cp ... #复制RPM包到上述目录


2、创建repo文件

复制代码

代码如下:


cat >>/etc/yum.repos.d/CentOS-Local.repo<<-EOF
[Local]
name=Local Yum
baseurl=file:///yum/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1


3、安装createrepo


复制代码

代码如下:


yum install createrepo #使用yum安装createrepo
rpm -ivh <a href="http://mirror.centos.org/centos/7/os/x86_64/Packages/createrepo-0.9.9-23.el7.noarch.rpm">http://mirror.centos.org/centos/7/os/x86_64/Packages/createrepo-0.9.9-23.el7.noarch.rpm</a>


4、创建索引


复制代码

代码如下:


createrepo /yum
yum makecache #更新缓存


YUM命令使用

yum info 软件包名称    查看软件包信息

yum install 软件包名称   安装软件包

yum reinstall 软件包名称   重新安装软件包

yum update 软件包  升级软件包

yum remove 软件包 移除软件包

yum clean alla  清楚所有仓库缓存

yum grouplist 查看系统中已经安装的软件包

yum check-update   查看可更新软件包

yum grouplist   查看系统中已经安装的软件包组

yum groupinstall软件包组   安装制定的软件包组

yum groupremove 软件包组   移除指定的软件包组

yum groupinfo 软件包组  查询制定的软件包组信息