Linux yum 使用手册,以及内网源搭建

news2025/1/22 12:47:38

Linux yum 内网源搭建

在 Linux 中,我们经常安装各个开源网站编写的代码、软件,在安装的时候各个软件之间有各种依赖关系,还可能出现版本问题,比如 Centos7 支持的软件, Centos6 就未必支持。如果是 Java 开发应该知道我们可以使用 pom.xml 文件来解决这些依赖,以及快速的升级某些软件。在 Linux 中也有类似的软件可以解决这些问题,那便是本章节的主角 yum

Yum 介绍

Yellowdog Updater Modified,是一个专门为了解决包的依赖关系而存在的软件包管理器,很好的解决了 RPM 所面临的软件包依赖问题。可以快速的安装、删除、更新各个软件包,并调节他们之间的依赖关系。

在 Centos7 中,默认安装了 yum,我们可以直接输入命令来查看:

yum # 运行 yum,无参数情况下会打印使用手册
man yum # 使用 man 来查看手册

在这里插入图片描述

可以看到,上面有详细的各个子命令的使用方式,一般分为两类

一类为 command 命令,进行某项任务的运行:

yum [options] [command]
command描述
clean清除yum缓存
installl 安装一个包
repolist显示软件仓库位置
resintall 重新安装一个包
search 根据关键字或者名字来搜索一个包
upgrade升级所有包,并自动解决依赖关系
remove 删除一个包
check检查 RPM 数据库是否有问题
check-update检查是否有可用的软件包更新
history显示使用yum的历史命令
list [name]列出所有安装的软件包,如果带有name,则会过滤name
info [name]列出所有安装的软件包的信息,如果带有name,则会过滤name
deplist [name]列出所有安装的软件包的依赖关系,如果带有name,则会过滤name
makecache创建元数据缓存
shell开启一个 yum shell 进行交互

一类为 options 参数,指定运行过程中的一些参数:

yum [options] [command]
options描述
-t–tolerant;完全忽略所有错误,不报错
-c [file]–config=[file];使用一个配置文件进行运行
-q–quiet;静默执行
-v–verbose;尽量打印所有日志
-y–assumeyes;所有需要判断的地方全部回答 yes
–installroot=[path]设置安装包的根路径
–enablerepo=[repo]启用软件源,repo支持通配符*
–disablerepo=[repo]停止软件园,repo支持通配符*
–obsoletes更新软件时,处理软件包的取代关系
–downloadonly仅仅下载但不安装或更新,一般用于在具有公网条件的服务器上下载rpm包,以便于集群内部的离线安装
–downloaddir=[path]指定某个文件夹用于保存如果有的安装包,一般结合–downloadonly使用

更加详细的其他命令,可以查看:http://yum.baseurl.org/

通过 yum 安装 JSON 解析器 jq

jq 是一个 json 解析器,是一个在 shell 中快速解析 json 和 json 格式化相关的命令。这里我们并不关心 jq 命令实际能有什么用,更加关心 yum 怎么安装 jq

首先要进行搜索是否 repo源 含有 jq,我们可以使用 yum list <rpm> 来搜索是否含有:

yum list jq

在这里插入图片描述

可以看到搜索到了适用于当前服务器的软件包有一个 jq.x86_64,版本为 1.6-2.e17。那么我们直接安装该软件包:

yum install jq
# 如果需要解析关系,或者因为需要依赖而安装其他包,会跳出进行二次确认
# 这个时候可以输入 y 进行确认。

在这里插入图片描述

安装完毕后,会打印安装的信息,并且就已经可以使用 jq 命令了:

jq

在这里插入图片描述

/var/run/yum.pid 已被锁定

当弹出该信息的时候,说明另外一个进程正在使用 yum 命令,当前进程未能获取到 /var/run/yum.pid 写权限。因为 yum 不能多线进行操作,只能一个一个操作,这里使用轮循的方式去尝试获取 yum.pid 的写权限。

在这里插入图片描述

搭建自己的 yum 源

缘由

在服务器环境中,大多数服务器是不具有公网环境,且与外网相隔的。此时我们需要自己进行 yum源 的搭建。

yum 源

上面我们安装了 jq 这个软件包,但软件包是会统一进行管理的,是谁在维护呢?yum 的解决思路是使用配置文件来解决(与 maven 中的 setting.xml 一样)。在 /etc/yum.repos.d/ 目录下,有多个 *.repo 文件,这些 .repo 文件都是 yum 的配置文件:

ls -ltr /etc/yum.repos.d/

在这里插入图片描述

默认情况下至少有 CentOS-Base.repo 这个文件,而这个文件也是默认生效的 repo 文件。查看该文件内容:

cat /etc/yum.repos.d/CentOS-Base.repo

在这里插入图片描述

可以看到每个小节都是 [xxx] 开头代表容器名称;每个小节都含有 namemirrirlistfailovermethodbaseurlgpgcheckgpgkeyenabled

  • name:容器说明,无实际作用。
  • mirrorlist:镜像站点,可以注释。
  • baseurl:使用哪一个 yum 源服务器地址,默认为 CentOS 官方,图示为阿里云。
  • enabled:是否生效,0 表示不生效。
  • gpgcheck:是否 RPM 数字证书生效,为 0 表示不生效。
  • gpgkey:数字证书的共钥文件保存位置,一般可以不设置。

当我们在安装 jq 的时候,就会先去 baseurl 中对应的仓库进行寻找适合当前服务器架构的包,找到后返回提供的 jq 安装包以及信息,就可以开始安装了。

像阿里云提供的源:

https://developer.aliyun.com/mirror/centos

所以我们也可以搭建类似于阿里云这样的一个镜像服务器,来提供 yum 镜像的服务;而其他内网服务器,则可以直接配置该服务器,当做 yum客户端 进行访问。

前提条件

这里所说的前提条件是当前内网环境:

  • 一个内网内所有服务器可访问的、可提供 HTTP 服务的服务器。
  • 该镜像服务器最好与其他服务器系统、架构相同,以便选择最适合的包。

仓库服务器搭建

我们选择 maggot111128.huangyichun.com 作为仓库服务器(192.168.111.128),其他服务器可以连接并获取包。并且将 RPM 包存放在 /opt/yum/yum_packages 中,在这里我们会放入一些 rpm 包(如果当前没有,后续我们会快速提供一些)。

mkdir -p /opt/yum/yum_packages

需要安装 createrepo,可以快速帮助我们构建本地仓库服务器:

yum -y install createrepo

开始本地镜像服务器构建:

cd /opt/yum/yum_packages
createrepo ./ # 请确保在 /opt/yum/yum_packages 目录下运行
# 当前目录下已经存在一个rpm包: httpd-2.4.6-97.el7.centos.5.x86_64.rpm
# 如果需要测试,可以使用 yum install --downloadonly --downloaddir=/opt/yum/yum_packages [repo] 进行下载

在这里插入图片描述

启动 HTTP - 极简

常用的操作是使用 apache 直接关联 yum仓库,如果所在环境暂时没有 ApacheServer 或者只是临时使用 yum服务,可以使用 python 临时启动一个端口服务,如下,启动了一个 10086 端口的 http 服务:

python -m SimpleHTTPServer 10086 # 注意运行位置在 /opt/yum/yum_packages

在这里插入图片描述

此时已经可以通过 http 方式访问到资源,说明搭建成功:

在这里插入图片描述

客户端配置

当我们自己的 yum源 已经搭建完毕后,客户端只需要需要进行仓库配置才能正确访问到仓库,配置文件统一存放在/etc/yum.repos.d/下,现在我们在一台客户机添加上文建立的 clickhouse 仓库:

vim /etc/yum.repos.d/my.repo # 新增一个repo名为 my.repo
# 写入内容
[myRepo]
name=myRepo-Test
baseurl=http://192.168.111.128:10086/
gpgcheck=0
enabled=1

接下来在新配置好的仓库我们可以查到我们放入的相关的包了:

yum list |grep httpd | grep myRepo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS基础实验操作100例--实验73创建闭合线内部缓冲区

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验73 创建闭合线内部缓冲区 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

K8S ReplicaSet 原理 示例 HPA扩容

K8S ReplicaSet 基本使用 K8S ReplicaSet 对象的作用是在任意时间点保持一组稳定的副本Pod运行&#xff0c;因此&#xff0c;它通常用于保证指定数量的相同Pod的可用性。乍一看&#xff0c; ReplicaSet 对象的定义跟 Replication Controller 并没有什么区别&#xff0c;都是维…

AI检测人员工衣工服着装不规范识别系统 yolo

AI检测人员工衣工服着装不规范识别系统基于opencvyolo网络深度学习模型对现场画面中人员着装穿戴实时监测分析。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN)&#xff0c;用于实时进行目标检测。该算法将单个神经网络应用于完整的图像&#x…

Vivado综合属性之SRL_STYLE

本文介绍综合属性SRL_STYLE取register、srl、srl_reg、reg_srl、reg_srl_reg和block中的值时&#xff0c;对Schematic的影响。 SRL_STYLE用于指导Vivado将SRL&#xff08;移位寄存器&#xff09;映射为何种形式。 目录 默认值 测试代码 原理图 SRL_STYLE配置为register …

【JavaSE】String类

目录 前言&#xff1a; 1.1、了解字符串构造方法 1.2、求字符串长度&#xff08;xxx.length()&#xff09; 1.3、isEmpty()方法 1.4、String对象的比较 1.4.1、通过&#xff08;str1 str2&#xff09;来比较&#xff0c;这样比较的是两个引用当中的地址 1.4.2、 boolea…

【ONE·C++ || vector (一)】

总言 学习笔记&#xff0c;慢慢补充。 文章目录总言1、整体介绍&#xff1a;2、常用各种接口介绍2.1、vector的基本结构&#xff1a;构造、析构、赋值2.1.1、总体情况预览2.1.2、各项函数使用演示2.2、vector增删查改相关2.2.1、增删查改总览2.2.2、如何在vector中插入、删除、…

Kotlin之使用协程编写高效的并发程序

文章目录1.协程的基本用法2.更多的作用域构建器3.使用协程简化回调的写法协程属于Kotlin中非常有特色的一项技术&#xff0c;因为大部分编程语言中是没有协程这个概念的。那么什么是协程呢&#xff1f;它其实和线程有点相似&#xff0c;可以简单地将它理解成一种轻量级的线程。…

Linux学习入门

1、Linux简介 操作系统分类&#xff1a;桌面操作系统、、服务器操作系统、移动端操作系统、嵌入式操作系统桌面操作系统主要针对个人电脑&#xff0c;Linux在桌面操作系统的应用主要有国产操作系统&#xff0c;Ubuntu。服务器操作系统有windows和linux以及苹果&#xff0c;主流…

微信小程序是如何实现快速编译的?

过往中小企业或技术团队开发一个 App 的时间成本和人力成本居高难下&#xff0c;但是随着微信上线小程序&#xff0c;更像是为这部分群体打开了一扇天窗&#xff0c;此后小程序呈现出井喷式发展的状态&#xff0c;不仅微信&#xff0c;支付宝、百度、抖音等超级 App 都跟上步伐…

线程进阶

常见的锁策略乐观锁 vs 悲观锁乐观锁&#xff1a;预测锁竞争不是很激烈悲观锁&#xff1a;预测锁竞争会很激烈轻量级锁 vs 重量级锁轻量级锁加锁解锁开销比较小&#xff0c;效率更高重量级锁加锁解锁开销比较大&#xff0c;效率更低多数情况下&#xff0c;乐观锁&#xff0c;也…

在CSDN年收入竟达五位数?----大学生技术自媒体成长之路

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 还有不到两周就要过年了&#xff0c;自己也马上迈入了21岁&#xff0c;感慨时间飞快&#xff0c;从19岁开始入驻C站&#xff0c;到现在也已经整整两年了&#xff0c;把自己最好的两年青春时光留在了CSDN&#xff0c;超百万…

定义输出格式的使用-printf()函数

目录&#x1f4d6;printf()函数简介格式化规定符格式控制特殊规定字符示例printf()函数简介 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。 printf()函数的调用格式为:printf("<格式化字符串>", <参量表>);这里看输出很简…

Lua入门学习

一、初识Lua脚本 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。官网&#xff1a;https://www.lua.org/ 1、HelloWorld CentOS7默认已经安装…

什么是docker

文章目录简介Docker 架构特性局限Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c…

〖产品思维训练白宝书 - 产品思维认知篇⑨〗- 像 产品经理 一样去思考解决问题

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

数据结构:算法的初步认识

算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 什么是算法 要求你写一个求 123…100 结果的程序&#xff0c;你应该怎么写呢? 大多数人会马上写出下面的C语言代码(或者其他语言的代码): int a,…

seata的AT模式

seata 分布式事务解决方案 官网 &#xff1a; seata.io 事务模式&#xff1a; 名词 TC &#xff1a; transaction coordinator 事务协调者 维护全局事务 和 分支事务的状态&#xff0c;驱动全局事务提交或者回滚TM &#xff1a; transaction manager 事务管理器 定义全局事…

(考研湖科大教书匠计算机网络)第一章概述-第三节:计算机网络的定义、功能分类

文章目录一&#xff1a;计算机网络的定义&#xff08;1&#xff09;最简单定义&#xff08;2&#xff09;较好定义二&#xff1a;计算机网络功能三&#xff1a;计算机网络的分类&#xff08;1&#xff09;按照“覆盖范围”分类&#xff08;2&#xff09;按照“使用者”分类&…

【Linux学习】进程控制

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 在前面&#xff0c;我们学习了进程的相关概念&#xff0c;在这里本喵会给大家介绍如何控制进程。…

私人影院微信小程序源码,采用腾讯小程序云开发,包括影院动态,最新影讯,房间预约,后台预约管理,导出预约表格Excel数据等功能

功能介绍 私人影院是很多年轻人比较喜欢的地方&#xff0c;虽然空间小&#xff0c;但是他们喜欢在这样的空间里享受休闲的时光&#xff0c;通过提前预约订位&#xff0c;可以使商家和消费者节省时间&#xff0c;减少人力成本&#xff0c;大大方便业务的拓展&#xff0c;同时也…