2018年第12周-yum私库搭建

前端之家收集整理的这篇文章主要介绍了2018年第12周-yum私库搭建前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

此实验过程仅在centos上实践过

先顶一下角色,假设我有三台服务器A,B,C。
服务器A是centos6.5版本,目标:我想把它当做yum私库
服务器B是centos7.2版本,目标:yum安装程序包时,不从internet上获取安装包信息,而是从服务器A获取安装包信息来安装
服务器C是centos6.5版本,目标:yum安装程序包时,不从internet上获取安装包信息,而是从服务器A获取安装包信息来安装

安装步骤

1.在服务器A备份

  1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.在服务器A下载新的CentOS-Base.repo 到/etc/yum.repos.d/

  1. # CentOS 5
  2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
  3. # CentOS 6
  4. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  5. # CentOS 7
  6. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

在这里,我们只有6和7版本的centos,于是我们下载centos6和centos7的Centos-Base.repo,这时候需进去修改下centos7的名字

  1. # CentOS 6
  2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  3. # CentOS 7
  4. wget -O /etc/yum.repos.d/CentOS-Base-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo

在服务器A修改CentOS-Base-7.repo,把$releasever都改为7

  1. vim /etc/yum.repos.d/CentOS-Base-7.repo
  2. [base-7]
  3. name=CentOS-7 - Base - mirrors.aliyun.com
  4. failovermethod=priority
  5. baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/
  6. http://mirrors.aliyuncs.com/centos/7/os/$basearch/
  7. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
  8. gpgcheck=1
  9. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  10. #released updates
  11. [updates-7]
  12. name=CentOS-7 - Updates - mirrors.aliyun.com
  13. failovermethod=priority
  14. baseurl=http://mirrors.aliyun.com/centos/7/updates/$basearch/
  15. http://mirrors.aliyuncs.com/centos/7/updates/$basearch/
  16. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
  17. gpgcheck=1
  18. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  19. #additional packages that may be useful
  20. [extras-7]
  21. name=CentOS-7 - Extras - mirrors.aliyun.com
  22. failovermethod=priority
  23. baseurl=http://mirrors.aliyun.com/centos/7/extras/$basearch/
  24. http://mirrors.aliyuncs.com/centos/7/extras/$basearch/
  25. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
  26. gpgcheck=1
  27. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  28. #additional packages that extend functionality of existing packages
  29. [centosplus-7]
  30. name=CentOS-7 - Plus - mirrors.aliyun.com
  31. failovermethod=priority
  32. baseurl=http://mirrors.aliyun.com/centos/7/centosplus/$basearch/
  33. http://mirrors.aliyuncs.com/centos/7/centosplus/$basearch/
  34. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
  35. gpgcheck=1
  36. enabled=0
  37. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  38. #contrib - packages by Centos Users
  39. [contrib]
  40. name=CentOS-$releasever - Contrib - mirrors.aliyun.com
  41. failovermethod=priority
  42. baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
  43. http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
  44. #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
  45. gpgcheck=1
  46. enabled=0
  47. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

3.在服务器A安装apache http服务器,可参考文章https://segmentfault.com/a/11...
4.在服务器A下载所有程序安装包,到http服务器目录下,这过程要很久

  1. reposync -r base-7 -p /var/www/html/

reposync命令不存在则需安装:

  1. yum-utils createrepo yum-plugin-priorities -y

reposync命令是一个python脚本。包含在yum-utils包中。
此过程可能需要安装reposync
5.在服务器A创建base-7索引

  1. createrepo -pdo /var/www/html/base-7/ /var/www/html/base-7/

6.这时候就能访问http://serverA/base-7 看到目录信息了

7.然后配置服务器B,在服务器B的/etc/yum.repos.d/下,删除(备份)其他repo文件,新建一个base.repo文件内容如下:

  1. [base]
  2. name=base
  3. baseurl=http://server/base-7
  4. enabled=1
  5. gpgcheck=0

8.然后在服务器B清除yum缓存信息

  1. yum clean all

9.在服务器B缓存yum库新信息,这时候就能看到新的base库信息

  1. yum makecache

更新步骤

1.在服务器A更新base-7库的信息,在服务器A执行一下命令:

  1. reposync -d -r base-7 -p /var/www/html/   #同步镜像源

2.在服务器A更新base-7库的索引信息,在服务器A执行一下命令:

  1. createrepo --update /var/www/html/epel   #每次添加新的rpm时,必须更新epel索引信息

3.在服务器A,上述步骤可以生成一个文件yum-update.sh,每周定时执行一下

  1. #!/bin/bash
  2.  
  3. datetime=`date +"%Y-%m-%d"`
  4. #exec > /var/log/epel.log  #同步日志输出
  5. reposync -d -r epel -p /var/www/html/   #同步镜像源
  6. if [ $? -eq 0 ];then
  7. createrepo --update /var/www/html/epel   #每次添加新的rpm时,必须更新epel索引信息
  8. echo "SUCESS: $datetime epel update successful"
  9. else
  10. echo "ERROR: $datetime epel update Failed"
  11. fi
  12. reposync -d -r base -p /var/www/html/   #同步镜像源
  13. if [ $? -eq 0 ];then
  14. createrepo --update /var/www/html/base   #每次添加新的rpm时,必须更新epel索引信息
  15. echo "SUCESS: $datetime base update successful"
  16. else
  17. echo "ERROR: $datetime base update Failed"
  18. fi

4.在服务器A,更改yum-update.sh文件权限,并添加定时任务

  1. chmod u+x /root/yum-update.sh
  2. crontab -e
  3. 0 3 * * 6 /bin/bash /root/yum-update.sh

举一反十

类似的,服务器C虽然是centos6.5,与服务器B不太一样,但服务器A的也可以继续创建base6的私库,由于服务器A的CentOS-Base.repo就已经是centos6的库,所以直接执行

  1. reposync -r base -p /var/www/html/

然后后续过程就和上面的一样了。 除了base库,我们还可以将epel库,cdh库等,私有化。

猜你在找的Bash相关文章