- A+
1. YUM仓库介绍
YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。
相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
1.1 YUM是什么
YUM(Yellow Dog Updater
Modified)为多个Linux发行版的软件包管理器,例如Redhad RHEL CentOS & Fedora。YUM主要用于自动安装,升级rpm软件包,他能自动查找并解决rpm包的依赖关系
YUM自动下载YUM包并安装,类似软件管家的一键安装功能:
1.2 YUM源是什么?
1)要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源,
2)网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败,特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受,因此我们在优化系统时,都会更换国内的源
3)相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性,有了局域网中的YUM源服务器,即便在Internel连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
2. YUM安装步骤
yum源配置文件存放路径:/etc/yum.repos.d
-----------------------yum仓库服务端配置----------------------
1. 安装createrepo软件,用于生成yum仓库数据库的软件
yum -y install createrepo rpm -qa install createrepo
2. 创建yum仓库目录
mkdir -p /yum/x86_64/repo cd /yum/x86_64/repo
获取rpm软件包方法:
1. 自己制作rpm包
2. yumdownloader pcre-devel openssl-devel # 只下载软件不安装
3. 平时yum安装软件时不删除安装包,对yum主配置文件做如下两项更改
vim /etc/yum.conf
cachedir=/var/cache/yum/basearch/releasever yum缓存的目录,存储下载的rpm包和数据库
keepcache=1 安装完成后是否保留软件包,0:不保留(默认);1:保留
3. 将自己收集的软件包复制到/application/yum/centos6/x86_64/目录下
4. 初始化repodata索引文件
createrepo -pdo /yum/x86_64/repo/ .
5. 每加入一个新rpm包就要更新一下
createrepo --update /yum/x86_64/repo
6. 如果有一个服务器占用80端口,需要将其关掉,防止80端口冲突,当然你也可以改其它端口
netstat -tunl|grep 80 # 检测80端口是都存在,存在就关闭该服务或者pkill掉
7. 将软件包发布到浏览其上,命令如下
cd /yum/x86_64/repo #必须在这个目录下 python -m SimpleHTTPServer 80 &>/dev/null &
8. 提供web服务,查看80端口是否开启
lsof -i:80
说明:python命令是通过80端口发布当前路径下的内容到浏览器上,所以要先cd到该目录下,然后可以用过浏览其输入本机的IP地址或域名查看
-----------------------yum仓库客户端配置----------------------
8. 检查YUM发布的页面客户端是否可以访问
curl -I www.linuxgogo.com
9. 配置客户端yum源
cd /etc/yum.repos.d/ mkdir yum_bak && mv *repo yum_bak #<== 在该创建新目录,并将该目录原有文件移动到该目录下 ---------------继续在该路径下编辑文件(配置新的yum源)--------------------------------------------------------------- ## vim yumrepo.repo #<== 继续在该路径下编辑文件(配置新的yum源) [yumrepo] #<== yum名称 name=Server #<== 自行定义 baseurl=http://*.*.*.* #<== yum源服务器的IP地址 enable=1 #<== 1是激活源,0表示不适用 gpgcheck=0 #<== 校验机制,检查rpm包是否是官网,0:关闭;1:开启
10. 给服务器指定新的yum源
yum clean all #<== 清空本机已有yum缓存 yum list #<== 列表显示yum仓库软件包 yum --enablerepo=yumrepo --disablerepo=base,extras,updates,epel list
------搭建完成,现在就可以使用yum下载咯------哈哈哈-------
3. YUM服务配置文件及命令介绍
3.1 yum主配置文件yum.conf
## vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/basearch/releasever yum缓存的目录,存储下载的rpm包和数据库
keepcache=0 安装完成后是否保留软件包,0:不保留(默认);1:保留
debuglevel=2 Debug信息输出等级,范围为0-10.,缺省为2
logfile=/var/log/yum.log 日志文件位置
exactarch=1 有0/1两个选项,默认为1,则yum只会安装和系统架构匹配的软件包
obsoletes=1 update的参数。相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1
plugins=1 是否启用插件,默认1为允许,0为不允许
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release #指定一个软件包,yum会根据这个包判断发行版本。
3.2 yum命令使用
功 能 |
命 令 |
安装软件包 ***** |
yum install httpd yum -y install httpd |
将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度 |
yum makecache |
更新yum源 ***** |
yum repolist |
列出软件包 |
yum list httpd # 用list函数,可搜索带名称的特定软件包 |
搜索软件包 |
yum search httpd # 不记得软件名称,可以使用search函数,搜索与指定软件包的名称想匹配的所有可用软件包 |
查找某个特定文件属于哪个软件包 |
yum provides /etc/my.cnf |
列出所有可用群组 |
yum grouplist |
安装群组软件包 |
yum groupinstall 'MySQL Database' |
列出启用的软件库 |
yum repolist all # 包括禁用的也列出 |
安装来自特定软件库的软件包 |
yum --enablerepo=local install LNMP |
不安装来自特定软件库的软件包 |
yum --enablerepo=local --disablerepo=base,extras,updates install LNMP |
清理yum缓存内容 ***** |
yum clean all |
查看yum历史记录 *** |
yum history |
4. 镜像同步公网yum源
前面是将自己制作的rpm包,放入yum源,但还有一种企业需求,说的更加具体一点,平时学生上课yum安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网的yum服务器,但又考虑到学生回家也要使用yum安装软件,如果yum软件的数据库文件repodata不一样,就会有问题,因此我想到的解决方法就是直接使用公网yun源的repodata。上游yum源必须支持rsync协议,否则不能使用raync进行同步。
http://http//mirrors.ustc.edu.cn/status/ #科技大学开源的yum源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo # epel源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo # 阿里云源 CentOS官方标准源: rsync://mirrors.ustc.edu.cn/centos/ epel源:rsync://mirrors.ustc.edu.cn/epel/
同步命令
# 使用rsync同步yum源,为了节省带宽、磁盘和下载时间,我只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。
# 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概,这些就不用重新下载。
---http://rsync.mirrors.ustc.edu.cn/centos/6/--------------- ---http://mirrors.ustc.edu.cn/centos/6/--以下就是在这两个网站同步的---- # 创建同步的系统基本软件目录 mkdir -p /data/yum_data/centos/6/os/x86_64/ # 开始同步 /usr/bin/rsync -avz rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/ ---------------------------------------------------------------------- # 创建同步的附加软件目录 mkdir -p /data/yum_data/centos/6/extras/x86_64/ # 开始同步 /usr/bin/rsync -avz rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/ ---------------------------------------------------------------------- # 创建同步的更新的目录 mkdir -p /data/yum_data/centos/6/updates/x86_64/ # 开始同步 /usr/bin/rsync -avz rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
#epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
使用内网yum源方法
# 可以自建一个内网dns,如果没有,可使用hosts解析。
echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts
结果展示:
[root@KVM data]# du -sh yum_data 21G yum_data [root@KVM data]# tree -L 3 yum_data/ yum_data/ ├── centos │ ├── 6 │ │ ├── extras │ │ ├── os │ │ └── updates │ └── RPM-GPG-KEY-CentOS-6 ├── epel │ └── 6 │ └── x86_64