学习是一个逐步发现自己无知的过程!

本地yum仓库

前言

我们知道yum工具是基于rpm的,其一个重要的特性就是可以自动解决依赖问题,但是yum的本质依旧是把后缀名.rpm的包下载到本地,然后按次序安装之。但是每次执行yum install xxx,会自动安装并且安装完毕后把rpm包自动删除。当我们下载比较大的服务,比如MySQL大约190M,每次都重新下载比较慢,这时我们就可以考虑,搭建本地离线yum仓库,大致需要如下几个步骤。

  1. 把rpm包及其相关依赖全部都下载到本地,保存好。

  2. 手动在/etc/yum.repos.d/目录下配置本地仓库信息。

  3. 使用createrepo命令生成repodata信息。

  4. 使用yum repoinfo检查确认。

把rpm包下载到本地

  yum install  --downloadonly --downloaddir=/aspack/ \
  mysql-community-server

看到了吗,就是如此简单,上述命令即可把mysql-community-server对应的所有rpm包及其依赖下载到/aspack/目录里,也就是说yum本地安装mysql需要的所有文件我们都准备好了。

执行上述命令本机不会安装mysql,本机初始处于没有安装任何mysql相关包的状态

下图是我用此方法,下载的一些rpm包:

自动草稿

配置本地yum仓库信息

  # vim /etc/yum.repos.d/sirliu.repo
  [sirliu]
  name=sirliu local repository
  baseurl=file:///aspack
  gpgcheck=0
  enabled=1

可以看到.repo配置文件,也是如此简单:

  • sirliu是本地仓库名,可任意起名,但是注意不能与已有的仓库名重复。

  • name后面是注释信息,随意书写。

  • baseurl这后面就是填写本地仓库路径了,file://表示使用本地文件协议,后面的/aspack本地rpm包存放路径。

  • gpgcheck=0这是和验证包的安全信息的,最好设置成0,表示关闭安全验证,否则还需要准备安全验证文件,麻烦一堆一堆的。

  • enabled=0,表示启用本仓库,0启用,1关闭。

更多详细配置信息,请参考man yum.conf

生成repodata信息

直觉上好像我们完成上述两个步骤就可使用本地yum仓库了,然后并不行。如果我们现在就直接使用本地仓库安装一个包,会报如下错误:

自动草稿

错误有一大堆,总而言之就是本地仓库不行,还不能用。关键提示就是上图红色的部分,告诉我们找不到/aspack/repodata/repomd.xml这个文件,当然找不到了,到目前位置我们的本地仓库里除了鲜红的rpm包之外什么都没有,repomd.xml这个文件简单来说就是存放本地仓库rpm包的索引信息,具体用法不是我们关心的重点,可以使用createrepo直接生成。

假如我们本地仓库没有配置好,不仅本地仓库无法使用,整个yum安装工具都会一直报错,此时我们把本地yum配置文件改名或暂时删除即可

createrepo命令默认系统没有,需要我们额外安装:

  # yum install createrepo -y

安装完毕之后,直接使用:

  # createrepo /aspack/

这时会发现本地仓库repodata相关信息已经生成完毕:

自动草稿

检查以及使用

使用下述命令可以看到本地仓库基本信息:

  # yum repoinfo sirliu
  Repo-id      : sirliu
  Repo-name    : sirliu local repository
  Repo-status  : enabled
  Repo-revision: 1537699080
  Repo-updated : Sun Sep 23 18:38:01 2018
  Repo-pkgs    : 41
  Repo-size    : 214 M
  Repo-baseurl : file:///aspack/
  Repo-expire  : 21,600 second(s) (last: Sun Sep 23 18:41:05 2018)
  Filter     : read-only:present
  Repo-filename: /etc/yum.repos.d/sirliu.repo
  repolist: 41

安装MySQL5.7测试:

  # yum install mysql-community-server

自动草稿

可以看到使用起来,与线上仓库区别不大。创建好的本地仓库可直接scp复制到其它机器使用,yum配置文件及rpm仓库直接复制过去即可,无需再创建一遍repodata信息。

对本地仓库进行更新

下载一个新的rpm软件包到本地仓库,此时我们使用yum repoinfo sirliu查看会发现软件包的数量并没有增加,我们安装新增的软件包也会提示,找不到次软件包的现象,可以按照下述步骤,更新仓库信息。

  1. 查看旧的软件包总数 yum repoinfo sirliu | grep pkgs

  2. 更新本地仓库 createrepo --update /aspack/

  3. 清除所有缓存 yum clean all

  4. 查看新的软件包总数 yum repoinfo sirliu | grep pkgs

如果软件包的数量增加,说明仓库更新成功。

操作实例过程

创建目录用于存放yum缓存软件包

  [root@web1-117 ~]# mkdir /yum
  [root@web1-117 ~]# cd /yum/

编辑nginx官方下载源

  [root@web1-117 yum]# vim /etc/yum.repos.d/nginx.repo
  [nginx]
  name=nginx repo
  baseurl=http://nginx.org/packages/centos/7/$basearch/
  gpgcheck=0
  enabled=1

安装nginx并且写入到指定的目录

  
  [root@web1-117 yum]# yum -y install  --downloadonly --downloaddir=/yum/ \
  > nginx
  > [root@web1-117 yum]# ll
  > -rw-r--r--. 1 root root 767540 4月  18 00:12 nginx-1.14.0-1.el7_4.ngx.x86_64.rpm

安装php

  移除旧版php
  [root@nginx ~]# yum remove php-mysql-5.4 php php-fpm php-common
  
  [root@web1-117 yum]# yum localinstall -y http://mirror.webtatic.com/yum/el7/webtatic-release.rpm   #下载第三方扩展源
  
  [root@web1-117 yum]# 
  [root@web1-117 yum]# yum -y install  --downloadonly --downloaddir=/yum/ \
  > php71w php71w-cli php71w-common php71w-devel \
  >php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm \
  >php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
  [root@web1-117 yum]# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm    #安装官方软件扩展源
  
  yum install  --downloadonly --downloaddir=/aspack/ \
  mysql-community-server

生成repodata信息

  [root@web1-117 yum.repos.d]# yum install createrepo -y
  
  [root@web1-117 yum.repos.d]# createrepo /yum/
    Spawning worker 0 with 21 pkgs
    Spawning worker 1 with 20 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
  [root@web1-117 yum.repos.d]# tree /yum/
  /yum/
  └── repodata
      ├── 00003807159c40f8ff4a13e17945c40a0080f174aa4f9ea9d782c4d7701f896e-filelists.xml.gz
      ├── 016eedc53947d4539779593f112465a3ffebb28c3e78288e05ef06189630b5f1-other.xml.gz
      ├── 5b16daa6c196da9a78064e9d1564fdab22f7b67112a75974634c00dcc262a569-other.sqlite.bz2
      ├── 9569119dd217b257bf0d1546c3f50fe9a147a3e4563eb9e40de51129fbe24af3-primary.sqlite.bz2
      ├── 980c0ac1c6ad4dcb890ac7ed41aa66b10c60ab51905f15c1aafa97dcadcf22ff-primary.xml.gz
      ├── a5bfe566918c5d8d9d2e3658253d1c53a2b2916bcec7f867420f7ab6e47df4ef-filelists.sqlite.bz2
      └── repomd.xml
  
  1 directory, 48 files
赞(1)
未经允许不得转载:劉大帥 » 本地yum仓库

你的评论可能会一针见血! 抢沙发

登录

找回密码

注册