大神都在用的yum源
本文原创首发于公众号:编程三分钟
yum 命令的使用
yum命令天天都在用,都快用烂了,但是很多人不知道为什么只要联网,yum命令就能像老奶奶手中的魔法棒一样,随心所欲的下载到想到的包。
比如你想装个c++环境,直接 yum install gcc-c++
。
强迫症都喜欢做完一件事以后再确认一下,可以用rpm -qa | grep 包名
的方式来查看。
如果装的不是想要的版本,yum list *gcc-c++*
搜一下,一堆可安装的包名就列出来,想装哪个版本装哪个版本。
当然了,能装就能卸,一个yum remove gcc-c++
搞定
啥?你还想装个docker,想装个go,想装不同版本的python,咋就想的那么美呢?
没问题!即使你想装那么些个东西,yum都能办到,她就像一个包容的老母亲时时宠爱着调皮捣蛋的傻儿子,ok,只要妈有,妈没有的也想办法从别的地方找来。也就是只要源里有,源里没有的再多配一个源就可以了。
yum 源
哎?这里说到一个源的概念,源简单来说就是一个专门储存包的仓库,分门别类的放好,yum命令就是仓库管家,根据配置好的规则,去源堆里找到想要的包顺便找到此包对其他包的依赖关系,根据依赖关系自动安装所有的包。包的依赖关系和下图一样。
/etc/yum.repos.d/
目录就是专门存储各种源的目录,源文件以.repo
后缀结尾,习惯性的把同一个业务的源放到一个文件里,比如平台A、平台B可以分为两个文件,当然了你的地盘你做主,想怎么分都可以。下面这张图就是我服务器上配置的源。
每个repo
文件中,可以配置多个仓库(源),每个仓库存了不同的包,像我们刚刚安装的gcc-c++
在os
仓库里,仓库名是唯一的。
上图节选自腾讯云服务器CentOS-Base.repo
,上图中的中括号是源的名字,便于yum取得并识别,下面是配置项,来简单下解释各个配置项的含义。
enabled=1
表示启用了这个源,0是未启用。
gpg(GNU Private Guard)
是一种校验算法,用来确定rpm包的来源是有效和安全的,gpgkey
就是gpg
密钥所在位置。
baseurl
就是源路径。
name
仓库的名称,只是为了方便阅读,一般没什么用。
通过刚刚的安装和卸载,我们明显看到gcc-c++
是在os库里,又因为库名是唯一的,所以肯定就是CentOS-Base.repo
里的os库,我们现在把他设置为禁用看看还能不能装。
有的人说了“我有台Centos
的机器根本就不能联网,有yum
命令有啥用,还不是要一个一个去网上下?完全是要人工解决依赖问题啊。”
我只能说这位同学,你坐下!小熊曾经说过,只要思想不滑坡,方法总比困难多。只要找一台能相同os的服务器用下面的命令,就能把rpm
包和他的依赖来全部下载到本地,再拷贝过去安装好了。
yum install --downloadonly --downloaddir=/tmp/pzqu gcc-c++
--downloaddir
指定下载目录
如果--downloadonly
用不了,可能是漏了插件yum install yum-plugin-downloadonly
安装上就好了。
后记
如果你想缓存下来全部的仓库,我只能说别开玩笑了,我们哪有那么大的硬盘,个人也没必要这么做。
但要完全是自己项目的包,可以自建一套源,开发测试部署的时候都自动打包到源里,随便到哪个离线环境把源带走,想在哪部署就能在哪部署,从这里我仿佛看到了持续集成的影子。
预知后事如何,请听下回分解。
原文地址:https://www.cnblogs.com/pzqu/p/11669986.html
- MySQL和Oracle行值表达式对比(r11笔记第74天)
- 闪回数据库不是“万金油”(r11笔记第73天)
- 修改Apache的超时设置,解决长连接请求超时问题
- Oracle 12cR2初体验(r11笔记第91天)
- MySQL中的undo截断(r11笔记第89天)
- Linux系统 df 命令显示异常、分区丢失问题解决
- MySQL主从、字典死锁、连接数的Python监控脚本
- MySQL Online DDL(二)(r11笔记第88天)
- 转-Android上面运行golang
- Golang适合高并发场景的原因分析
- 浅谈MySQL中的事务隔离级别(r11笔记第86天)
- 巧用echo命令解决Samba批量添加用户难题
- 分分钟搭建MySQL Group Replication测试环境(r11笔记第82天)
- MySQL 5.7 Group Replication错误总结(r11笔记第84天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- K8s多租户场景下的多层级namespace规则解析
- 团体程序设计天梯赛-练习集 L1-010 比较大小
- 团体程序设计天梯赛-练习集 L1-012 计算指数
- 团体程序设计天梯赛-练习集 L1-013 计算阶乘和
- 团体程序设计天梯赛-练习集 L1-036 A乘以B
- 团体程序设计天梯赛-练习集 L1-015 跟奥巴马一起画方块
- 团体程序设计天梯赛-练习集 L1-011 A-B
- vuepress引入vue-qr组件后build报错navigator is not defined问题
- 团体程序设计天梯赛-练习集 L1-022 奇偶分家
- k8s——针对有状态服务实现数据持久化
- 团体程序设计天梯赛-练习集 L1-017 到底有多二
- 团体程序设计天梯赛-练习集 L1-032 Left-pad
- ansible运行报错CryptographyDeprecationWarning解决
- 团体程序设计天梯赛-练习集 L1-018 大笨钟
- 天啦噜,项目上使用InputStream,我被坑了一把!