自动化必备-YUM仓库3 min read

  • A+
所属分类:Linux运维 未分类

  1. YUM仓库介绍 

     1.1 YUM是什么 

     1.2 YUM源是什么

  2. YUM安装步骤 

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

     3.1 yum主配置文件yum.conf

     3.2 yum命令使用

  4. 镜像同步公网yum源

   

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 & FedoraYUM主要用于自动安装,升级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源,为了节省带宽、磁盘和下载时间,我只同步了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 -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

   

  

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: