目录

1. YUM仓库介绍

1.1 YUM是什么

1.2 YUM源是什么?

1.3 YUM源工作原理

2. YUM安装步骤

3. YUM服务配置文件及命令介绍

3.1 yum主配置文件yum.conf

3.2 yum命令使用.

4. 镜像同步公网yum

 

1. YUM仓库介绍

自动化部署必备技能—搭建YUM仓库

参考博文:http://blog.oldboyedu.com/autodeploy-yum/

YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。

1.1 YUM是什么

YUM(Yellow Dog Updater
Modified)为多个Linux发行版的软件包管理器,例如RedhadRHEL CentOS & Fedora。YUM主要用于自动安装,升级rpm软件包,他能自动查找并解决rpm包的依赖关系

YUM自动下载YUM包并安装,类似软件管家的一键安装功能:

                           wKioL1exaE_iV34UAABgUxAbduE876.png

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 /application/yum/centos6/x86_64/

cd /application/yum/centos6/x86_64/

获取rpm软件包方法:

  1. 自己制作rpm


2. yumdownloaderpcre-devel openssl-devel   # 只下载软件不安装

平时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 /application/yum/centos6/x86_64/ .


5. 每加入一个新rpm包就要更新一下

createrepo --update /application/yum/centos6/x86_64/


6. 如果有一个服务器占用80端口,需要将其关掉,防止80端口冲突

netstat -tunl|grep 80        # 检测80端口是都存在,存在就关闭该服务或者pkill


7. 将软件包发布到浏览其上,命令如下

cd /application/yum/centos6/x86_64/      必须在这个目录下

python -m SimpleHTTPServer 80 &>/dev/null&


8. 提供web服务,查看80端口是否开启

[root@m01 ~]# lsof -i :80            检查80端口是否开启

COMMAND  PID USER  FD   TYPE DEVICE SIZE/OFF NODENAME

python  4171 root   3u  IPv4  19675     0t0  TCP *:http (LISTEN)

  python命令是通过80端口发布当前路径下的内容到浏览器上,所以要先cd到该目录下,然后可以用过浏览其输入本机的IP10.0.0.61)地址,结果如下图

wKioL1exaO_hKtajAAEeE1iIaDc004.png

-----------------------yum仓库客户端配置----------------------

8. 检查YUM发布的页面客户端是否可以访问

[root@lb02 ~]# curl -I 10.0.0.61     #<== 检查

HTTP/1.0 200 OK                #<== 200 ok 成功(下面的内容就省略咯


9. 配置客户端yum源

cd /etc/yum.repos.d/

mkdir yum_bak && mv *repo yum_bak  #<== 在该创建新目录,并将该目录原有文件移动到该目录下


---------------继续在该路径下编辑文件(配置新的yum源)-----------------------------

vim oldboyedu.repo        #<== 继续在该路径下编辑文件(配置新的yum源)

[oldboy]             #<== yum名称

name=Server            #<== 自行定义

baseurl=http://10.0.0.61     #<== yum源服务器的IP地址

enable=1                 #<== 1是激活源,0表示不适用

gpgcheck=0                #<== 校验机制,检查rpm包是否是官网,0:关闭;1:开启

-------------------------------------------------------------------------------------------

yum clean all              #<== 清空本机已有yum缓存

yum list                 #<== 列表显示yum仓库软件包

yum --enablerepo=oldboy --disablerepo=base,extras,updates,epellist

   #给服务器指定新的yum


------搭建完成,现在就可以使用yum下载咯------哈哈哈-------

3. YUM服务配置文件及命令介绍

3.1 yum主配置文件yum.conf

[root@m01 /]# 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源,为了节省带宽、磁盘和下载时间,我只同步了CentOS6rpm包,这样所有的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 -avzrsync://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 -avzrsync://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 -avzrsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64//data/yum_data/centos/6/updates/x86_64/


#epel

/usr/bin/rsync -av --exclude=debugrsync://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