搭建本地离线yum仓库
环境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5
前言
我们知道yum工具是基于rpm的,其一个重要的特性就是可以自动解决依赖问题,但是yum的本质依旧是把后缀名.rpm的包下载到本地,然后按次序安装之。但是每次执行yum install xxx,会自动安装并且安装完毕后把rpm包自动删除。当我们下载比较大的服务,比如MySQL大约190M,每次都重新下载比较慢,这时我们就可以考虑,搭建本地离线yum仓库,大致需要如下几个步骤。
- 把rpm包及其相关依赖全部都下载到本地,保存好。
- 手动在
/etc/yum.repos.d/目录下配置本地仓库信息。 - 使用createrepo命令生成repodata信息。
- 使用
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/as4k.repo
[as4k]
name=as4k local repository
baseurl=file:///aspack
gpgcheck=0
enabled=1
可以看到.repo配置文件,也是如此简单:
as4k是本地仓库名,可任意起名,但是注意不能与已有的仓库名重复。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 as4k
Repo-id : as4k
Repo-name : as4k 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/as4k.repo
repolist: 41
安装MySQL5.7测试:
# yum install mysql-community-server

可以看到使用起来,与线上仓库区别不大。创建好的本地仓库可直接scp复制到其它机器使用,yum配置文件及rpm仓库直接复制过去即可,无需再创建一遍repodata信息。
对本地仓库进行更新
下载一个新的rpm软件包到本地仓库,此时我们使用yum repoinfo as4k查看会发现软件包的数量并没有增加,我们安装新增的软件包也会提示,找不到次软件包的现象,可以按照下述步骤,更新仓库信息。
- 查看旧的软件包总数
yum repoinfo as4k | grep pkgs - 更新本地仓库
createrepo --update /aspack/ - 清除所有缓存
yum clean all - 查看新的软件包总数
yum repoinfo as4k | grep pkgs
如果软件包的数量增加,说明仓库更新成功。
参考资料
http://blog.51cto.com/hashlinux/1661474
http://blog.sina.com.cn/s/blog_130affe1d0102vy01.html
修改记录
2018年9月24日 增加对本地仓库进行更新部分。
作者: 阿胜4K
出处: https://www.cnblogs.com/asheng2016/p/local-yum.html
搭建本地离线yum仓库的更多相关文章
- cobbler搭建本地的yum仓库源
cobbler自动化安装参考文档 https://www.cnblogs.com/minseo/p/8537266.html 使用cobbler可以快速搭建一个本地的yum仓库 cobbler rep ...
- 5、cobbler搭建本地saltstack yum仓库
5.1.安装cobbler: 参考"linux运维_集群_01(35.cobbler自动化安装操作系统:)" 5.2.cobbler yum源常用操作命令: cobbler rep ...
- 搭建本地的yum仓库-较简单
1.创建目录安装软件程序 1.在/root路径下创建123.sh文件,把此文件复制到123.sh里, sh 123.sh2.首选安装nginx,作为web展示 3.强力清除老版本残留rpm -e n ...
- CentOS 6.5本地yum源、局域网离线yum仓库(断网情况下轻松安装各种依赖包)
在工作中, 公司的服务器大部分都禁止连接外网的,初始化系统,测试某些产品时,往往缺一些软件或依赖包,一个个上传到机器,如此浪费时间,浪费金钱,en...yum能够自动查找并解决rpm包之间的依赖关系, ...
- 搭建企业内部yum仓库(centos6+centos7+epel源)
搭建自己的yum仓库,将自己制作好的rpm包,添加到自己的yum源中. yum仓库服务端配置如下 : 1. 创建yum仓库目录 mkdir -p /data/yum_data/cd /data/yum ...
- (转)搭建企业内部yum仓库(centos6+centos7+epel源)
搭建企业内部yum仓库(centos6+centos7+epel源) 原文:https://www.cnblogs.com/nulige/p/6081192.html https://www.linu ...
- 自己动手制作一个本地的yum仓库
制作本地yum源有两种方式,第一种是使用光盘镜像,然后在本地进行安装.第二种是我们自己创建一个本地yum仓库,然后使用file的形式来向本地提供yum repo(也可以使用http的方式向外部提供,我 ...
- 搭建本地的git仓库
折腾了快一天了,终于搭建成功了. 分享一下搭建的步骤: 一.GIT仓库的创建 1. adduser git 2. passwd git 此例设置git的密码为123456 3. cd /home/gi ...
- 一个极为简单的方法实现本地(离线)yum安装rpm包
首先,我要关心的问题仍然是如何离线或者本地yum安装rpm包?这其中的关键当然是获取rpm包到本地,这其中的麻烦事是去解析依赖关系.然而,我发现一个极为简单的方法可以不用操心rpm包依赖关系,不多不少 ...
随机推荐
- [sql异常]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的
//执行远程数据库表查询 SELECT * FROM OPENDATASOURCE('SQLOLEDB', 'Data Source=数据库地址;User ID=sa;password=sa' ).n ...
- 《转》Python学习(16)-python异常
转自 http://www.cnblogs.com/BeginMan/p/3171445.html 一.什么是错误,什么是异常,它们两者区别 这里解释如下:个人觉得很通俗易懂 错误是指在执行代码过程中 ...
- Find–atime –ctime –mtime的用法与区别总结
转自 周五有同事问起find命令中-mtime n.-mtime –n以及-mtime +n的用法区别,当时虽然记得这里n是n个24个小时的意思,也是对所有这几个属性详细的用法却一知半解,索性周末仔细 ...
- sencha touch Container tpl 监听组件插件(2013-9-14)
将http://www.cnblogs.com/mlzs/p/3279162.html中的功能插件化 插件代码: /* *tpl模版加入按钮 *<div class="x-button ...
- 23种设计模式之访问者模式(Visitor)
访问者模式是一种对象的行为性模式,用于表示一个作用于某对象结构中的各元素的操作,它使得用户可以再不改变各元素的类的前提下定义作用于这些元素的新操作.访问者模式使得增加新的操作变得很容易,但在一定程度上 ...
- win7下桌面右键一直转圈圈的解决方法
今天公司同事的电脑,在进入win7系统后,桌面右键一直转圈圈,找我解决这个问题. 经过我观察,他电脑只是在桌面上右键有此现象,在其他地方并无此现象. 因此可以得出结论,此现象很可能与桌面右键有关,经上 ...
- Unity3D笔记 愤怒的小鸟<七> 小鸟群准备动画
要实现的目标: 1.3只小鸟初始动画 2.完善代码slingShot.js 3.完善代码BirdMoving.js 1.实现3个准备动画:Unity3D内置的动画管理器 1.1.先选择GameObje ...
- 【巷子】---fetch---基本使用
一.fetch fetch是一种XMLHttpRequest的一种替代方案,在工作当中除了用ajax获取后台数据外我们还可以使用fetch.axios来替代ajax 二.fetch的基本使用 1.np ...
- HOJ-2056 Bookshelf(线性动态规划)
L is a rather sluttish guy. He almost never clean up his surroundings or regulate his personal goods ...
- Ubuntu下更改Vim配置文件打造C/C++风格
转载:Ubuntu下更改Vim配置文件打造C/C++风格 Vim默认的配置使用起来还不能让人满意,还需要自己配置 默认配置文件是:/etc/vim/vimrc我们可以在家目录下建立自己的配置文件切换到 ...