如何更换 openEuler 系统中的 yum 软件源


前言

yum 全称 Yellow dog Updater Modified,即黄狗升级器,作为 openEuler 中默认的安装软件程序,安装方式支持 本地安装在线安装
其软件源可根据需要自行替换。

yum 适用的安装包: rpm 文件
yum 软件源: repo 文件
即对应文件后缀是以上述文件名结尾的

yum 可根据需要在不同Linux系统中安装,yum 是一款由Linux社区自行维护的软件,因此其软件源中的软件多为自由软件。

yum 百度百科介绍


更换 yum 软件源步骤

一、了解 yum 软件源所在位置

	/etc/yum.repos.d/

可通过 ls 命令进行查看

Linux 初始环境shell页面查询
如上图,openEuler.repo则为本机器目前所拥有的 yum软件源,如需更换其他软件源,需使现在的软件源失效,不然可能存在冲突问题。

二、使原有源失效

具体方法如下

1. 使原本的源后缀不以 .repo 结尾

利用 mv 命令 起到重命名的作用

以上方图示源文件示例
用输入以下命令,使原本的openEuler.repo 重命名位 opernEuler.repo.bak即可

	mv /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak

注意
查询 yum源所在目录 详细信息。
可知,其目录权限默认情况下,仅属主root拥有写操作权利。

yum.repos.d的权限
其中文档详细信息中
d 表示该文档是 文档目录类型
rwxr-xr-x. 是文档权限说明
从左往右每三位视为一组,分别代表属主属组其他用户
每组中各位依次表示 读r 写w 执行x 的权限
如果有对应字母则代表,该组具备对应的权限,如果为-则表示不具备对应的权限
末尾的.代表当前列表不具备除文档基本用户,属组,其他用户以外的权限。
否则会以+表示

,有些文档的分组执行位会有特殊含义,不用x表示。

属主特权 Set UID属组继承 Set GID粘滞位 Sticky bit
 某些执行文件中属主执行位的权限会以s字母表示属主特权。  某些文档目录中属组执行位的权限会以s字母表示属组继承。  某些文档目录中其他用户执行位的权限会以t字母表示粘滞位。
 表示,如果其他用户在执行该程序命令时,暂时拥有了属主的身份和属主的权限。
 即,例如vim 文档编辑文件的属主特权s存在,则其他用户用这个编辑文档时,创建的文档归属也是对应属主。
 在该目录下创建的任何文档,其属组都会被文档目录的属组替换。  该文档目录中的文档,除了文档目录的属主属组会具备原本的读写执行权限不受影响外,其余的其他用户在操作目录中的文档,仅能对文档的属主是其自己的文档可以随意删除,编辑,其余属主的文档没办法编辑和删除。

从左往右第一个root即代表本目录的属主用户,第二个root代表属组,即属主用户(root)的主用户组。

因此,对原有源进行操作时,
最好保证现在登录的账户是root(超级管理员账户)或采用提权操作 (sudo操作)


如何查看本地登录的账户

I. 查看 shell 界面参数

MobaXterm ssh连接界面截图
如上图中 [ root@localhost ~] 即代表当前的登录用户为 root


II. 通过 users 命令进行查询

	[root@localhost ~]# users
	root

2. 清理原本的源文件

方式多样,只要能把原来的源文件从 yum源 目录中移走即可

可使用以下几种方式

  • I. 移动原本的源文件
    把原目录中所有的源移动到 home 目录下
	mv /etc/yum.repos.d/*.repo ~
  • II. 删除原本所有的源文件
	rm -f /etc/yum.repos.d/*.repo

三、 添加源仓库

原仓库可以离线添加,也可以在线添加

离线添加

a.直接更换已有的 repo 文件

从网上下载 yum 源文件( .repo 文件 ) ,将其拷贝或移动到 yum源文件目录( /etc/yum.repos.d/ )

开源 yum 源文件下载地址参考
阿里云
https://mirrors.aliyun.com/repo/
华为云 (需要注册华为账号
https://www.huaweicloud.com/product/mirrors.html

如果是远程的机器,可以考虑采用 scp的方式将其远程传输到Linux系统中。
但注意使用scp的前提是,机器开启了ssh服务。
可用systemctl 命令进行查询。

	systemctl is-active sshd.service

如果返回结果是active
查询是否开启了ssh服务(已开启)
代表本服务已启动。

如果返回结果是inactive
查询是否开启了ssh服务(未开启)
代表服务未启动,重新启动即可。

	systemctl restart sshd

然后使用scp 命令从远程终端复制过来即可。
scp应该在打算拷贝repo文件过来的设备终端里使用。
命令格式如下:

	scp 	(path-绝对路径:repo文件) 	用户@( openEuler的IP地址 ):( path-绝对路径:存放repo文件的目录 )

其中,用户为openEuler中具有远程 ssh访问权限的用户。
随后会自动生成密匙,系统会寻问是否确认要传输文件,输入yes即可。
然后按提示,输入用户对应密码即可。

注意,所输入的内容皆出于安全考虑,会被隐藏。
window使用scp示例
windows系统使用 scp 命令示例。

b.从外部块设备处读取软件源

如利用yum 源镜像文件( iso 文件)

流程:
本地加载源镜像,以光驱形式导入等(注意 移动设备需挂载 [mount 命令] 后使用)

本地加载的命令格式如下

	//挂载
	mount /dev/cdrom  建立的挂载点路径
	
	//添加源仓库
	yum-config-manager --add file://挂载点路径地址

挂载点URL地址需要写绝对路径,即从根目录(/)开始

示例,如本机设备读取了镜像光驱,为使用其中文件,临时挂载到/tmp/dvd
并将其加入到yum 源目录

命令如下

	mount /dev/cdrom /tmp/dvd
	
	yum-config-manager --add file:///tmp/dvd

结果如下:
本地 yum源添加示例
直接用mount挂载的设备仅本次开机生效,下次开机需要重新挂载。

如果希望下次开机也自动挂载,需要修改启动配置文件(/etc/fastab)

自动挂载
a.通过vim 命令修改启动配置文件

	vim	/etc/fastab

b.在其中空白地方添加以下内容

   /dev/cdrom /tmp/dvd iso9660 defaults 0 0

c.保存文件后,输入 mount -a 命令验证是否自动装载成功(即能否正常开机)

	mount -a

d.通过df -h 命令查看本机加载设备具体情况

	df -h

把手动挂载的镜像改为开机自动挂载示例
把手动挂载的镜像改为开机自动挂载示例

源镜像网址参考
https://www.centos.org/download/

在线添加

在线添加即利用 yum 管理器直接添加源仓库地址,具体可在网上搜索相应的地址资源。

流程:

	yum-config-manager --add URl地址

在线添加yum 源仓库形式有以下两种

使用互联网上的 yum 源网站
	yum-config-manager --add http://源仓库网络地址
	
	yum-config-manager --add https://源仓库网络地址

如添加 阿里云 的源仓库地址。

	// 阿里的基础软件源
	yum-config-manager --add https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os 
	 
	// 阿里的应用软件源
	yum-config-manager --add https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os
使用 FTP 服务器的 yum 源

如果目标源是利用FTP 协议 进行加载
命令格式如下:

	yum-config-manager --add ftp://搭载了 FTP源 的服务器的具体IP地址/ FTP 源所在的目录

注意,使用FTP 源所在目录并不是使用绝对路径,而是从用户使用FTP访问服务器时的所使用的共享目录的相对路径来配置,而非服务器中FTP 源本身的绝对路径。

示例:
FTP服务器地址为 192.168.172.100
FTP源目录在服务器上的地址为 /var/ftp/pub/Centos7/
FTP服务器系统是 openEuler

则使用yum仓库管理添加命令为

	yum-config-manager --add ftp://192.168.172.100/pub/Centos7/

因为FTP访问,是有限制的,一般仅可对服务器配置好的共享目录进行操作,对于服务器本身的其他目录文件,我们是看不到的,更不用说,没有对应的操作权限。

不过采用FTP 协议的前提是,本机和提供yum 源的目标主机均开启了FTP功能
即本机需要配置安装了FTP功能
可以采用which 命令或直接在终端输入ftp 命令来检测本机是否开启了FTP 功能查询

	which ftp 

	ftp

如果结果如下

	[root@localhost ~]# ftp
	-bash: ftp:未找到命令
	[root@localhost ~]# which ftp
	which: no ftp in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

则代表本机没有FTP功能,如果要使用FTP 源,需安装FTP 程序
可采用本地安装,或在线安装形式安装FTP,但需注意,二者接需要yum中存在相应的依赖的安装包缓存,如果发现FTP安装失败了,可以尝试把原本的yum源复原后,安装好FTP,再进行操作。

且注意,因为采用FTP功能,如果存在VLAN 隔离等二层或三层的安全策略,导致本机与FTP服务器之间是不通的,无法使用FTP源

构建 Linux 版本的 yum 源 FTP 服务器

有可能在实际中,需要自己搭建FTP 服务器来供本局域网内的设备同时使用同一yum 源的情况。

现模拟把 openEuler 服务器作为 FTP 服务器
本机需要开启系统中的vsftpd 服务,且修改配置,使本机作为服务端,响应其他设备的发起的FTP 请求报文

可以通过systemctl 命令检测本机是否启动了该服务

	systemctl is-active vsftpd

如果返回结果是active

	[root@localhost ~]# systemctl is-active vsftp.service
	active

代表本服务已启动,可以进行下一步。

如果返回结果是inactive
查询是否启动了vsftpd服务
如果是这样,代表未启动该服务,可以参考FTP处查询的命令,也通过yum 命令查询本机是否安装了 vsftpd 服务

	yum list vsftpd

查询是否安装了 vsftpd 服务
如图,则代表未安装但是有可用安装包,可以考虑在线安装vsftpd服务

在线安装 vsftpd 服务 命令参考

	yum install -y vsftpd

安装好以后,需要启动该服务。
命令:

	systemctl start vsftpd

当然,这样启动,仅针对本次开机状态有效,如果关机以后,下次启动机器,ftp 服务并不会自动启动,如果希望ftp 服务下次开机也自动启动的话,可以改用下面的命令启动ftp 服务

	systemctl enable --now vsftpd

再次通过systemctl 命令检测本机是否启动了该服务

	systemctl is-active vsftpd

启动后,利用vim 命令修改vsftpd 配置文件( /etc/vsftpd/vsftpd.conf )

	vim /etc/vsftpd/vsftpd.conf

主要修改的字段有以下几样:
用户能否匿名访问本服务器
anonymous_enable :含义是是否允许用户匿名访问 FTP 服务器,YES 是,NO 否。
允许以后,其他设备可以不输入用户就可以访问 FTP服务器,访问时的用户身份为其他用户,按文档其他用户的权限来执行。
实际生产中,不建议选择 YES ,不然会造成安全隐患。

是否允许本地用户登录
local_enable : 含义是是否允许使用本地用户账号登录,为方便后续建议选YES。
写操作权利
write_enable : 能否通过FTP执行写的操作,即是否允许通过FTP进行上传,下载,删除的命令。
用户权限
local_umask : 是用来规定用户使用FTP服务时,在FTP服务器共享目录中拥有的权限。
三个数字,分别表示 属主的权限 属组的权限 其他用户的权限
数值大小是由对应的 r( 读取 )w( 写入 ) x( 执行 )的比特位数值,按二进制换算为十进制的方式得出。
如:
rwx == 7
-w- == 2
但是由于,FTP 服务器是为了提供yum 源给其他用户使用。
所以,这里的设置必须保证其他用户的权限为 r-x,即数值要为 5 或 7。
当然,若是使用yum 源的属主,或同属组的用户登录,根据具体做出调整,不过建议是,使用openEuler服务器的 root用户创建用于共享的yum 源目录即可以了。
出于安全考虑,一般都会确保使root(超级管理员)仅可在本地登录。

注意 : 字段值需大写

修改配置文件后,记得重启vsftpd服务

	systemctl restart vsftpd

FTP 服务器的共享目录在/var/ftp/pub/
可以考虑使用镜像文件挂载的形式,或安装createrepo 程序创建相应的yum 源(FTP)

	createrepo /var/ftp/pub/源目录

创建好源目录后,可以检查环境配置了。

  • FTP服务器 状态
	systemctl status vsftpd
  • 改变 SELinux 的模式为宽松模式
	setenforce 0

或禁用 SELinux,修改其配置文件中的默认状态为 disabled
配置文件在/etc/selinux/config
利用vim 命令修改即可。

	vim /etc/selinux/config

修改SELinux默认状态为 disabled
修改 SELINUX 字段的值为disabled即可。

SELinuxLinux的内核安全模块
可以用getenforce 命令查询其当前状态
返回值: 1 强制模式 | 0 宽松模式
关闭了会提示SElinux已禁用

  • 关闭 Linux防火墙
	systemctl stop firewalld

或可以禁止防火墙,且不允许其下次开机自动启动

	systemctl disable --now firewalld

备注
本机防火墙可以考虑添加FTP 服务到白名单

	firewall-cmd --add-service=ftp

SELinux则使用以下命令将允许FTP通过的配置写入到其配置文件中

	setsebool -P allow_ftpd_full_access 1

四、 取消软件自检(可选)

yum安装软件时,默认会检测软件包的来源,如果是非官方的,会不允许安装,即类似于手机安装软件时,开启了应用程序安全验证。该功能可以取消,但是取消后,安装软件产生的后果自负。

具体操作如下,修改yum的配置文件

	vim /etc/yum.conf

文件内容如下
yum配置文件内容
其中 gpgcheck即为检查软件包来源选项,将其值改为 0即可

五、 清理系统 logo 包

使用外部源时,有可能源中的依赖会与系统的logo包( openEuler-logos )冲突,因此最好先清理系统原本存在的logo包。

可使用以下命令

	yum remove -y openEuler-logos

六、清理原本的 yum 软件源列表,重新生成新的 yum 软件源列表

清理yum 原本存在的软件包缓存 【命令】

	yum clean all

重新生成新的yum软件包缓存 【命令】

	yum make cache

更新yum 软件源列表 【命令】

	yum repolist -v

至此便完成了yum 软件源的替换


检查 yum 软件源 是否存在想要安装的软件

虽然更换了yum 软件源,但是并不意味着现在的软件源包含想要安装的软件,我们可以通过以下命令进行检测。

	yum list 软件名

如果显示 Available Packages 则代表有可用包,可以直接安装。
查看本机yum软件列表中zabbix40软件的情况
如果显示Error 则代表目前源仓库没有可用安装包。
查看本机yum软件列表中cowsay软件的情况
如果显示Installed Packages 则代表该程序已安装。
查看本机yum软件列表中httpd软件的情况
若发现源中不存在所需的安装包。
可以考虑更换另一个源,也可以选择本地安装包。
同时,也可以读取源文件,看一下是否所有源仓库路均开启了。


yum 源文件

前面介绍了源文件如何进行更换,但是,有时候我们离线更换的源文件,里面并没有开启它所包含的所有源仓库。
具体可以通过cat 命令查看对应源文件内容
如下 使用命令 cat Centos-vault-8.5.2111.repo 查看结果如下
查看阿里云Centos-vault-8.5.2111源文件结果
可见图中红框内容enabled的值为0,即代表该仓库实际并没有开启。
简单介绍一下yum 源文件的仓库内容

[仓库名字,唯一]
name = 用以描述本仓库的信息
baseurl = 软件源的 URL 地址,实际安装软件搜索安装包时就是这里起作用,yum 会到这些地址里搜索软件包,如果有多条网址,则会按顺序到其中检索是否存在安装包,没有的话就下一条,如果 yum 源文件所有启用的仓库网址都不存在安装包,则向用户返回安装包不存在,即 Error 的情况。
gpgcheck = 该软件源仓库安装软件时是否需要检验安装包来源,若没有该项,则默认跟随系统中 yum 配置文件
enabled = 该仓库是否可用(1 可用:0 不可用)
gpgkey = 可以理解为官方密钥一样的存在,用于和 gpgcheck 搭配使用

因此实际应用中可以根据需要,手动创建yum 仓库文件

	touch /etc/yum.repos.d/new.repo

将所需要的仓库按照格式编写到文件中即可。
但注意,yum并非添加越多仓库越好,仓库过多可能存在冲突问题,导致明明具有可用安装包也无法安装对应软件。


简单介绍 yum 安装命令 与 卸载软件的命令

安装软件

  • 在线安装的命令格式如下
	yum install [-y]  软件名字
  • 本地安装的命令格式如下
	yum install [-y] (path绝对路径或相对路径:rpm 文件)

其中 -y是可选参数,yum安装软件时会提醒用户是否确认安装,如果添加了-y参数,则自动确认安装。
一般适用于批量安装多个软件的时候
yum可以一次安装多个软件
在线安装只需要把所需要的软件名,用空格隔开,加到 install后即可
离线安装则利用通配符如*(代表任意个数量的字符)、?(代表任意一个字符)来使用即可。

卸载软件

命令格式如下

	yum remove [-y] 软件名字

其中 -y是可选参数,yum安装软件时会提醒用户是否确认卸载,如果添加了-y参数,则自动确认卸载。
注意并非所有软件都可以随意卸载,有时候存在系统保护的情况,如果要强行卸载受保护的软件,可能导致系统崩溃。


总结

yum本质上是一款非常强大的软件安装程序,本身针对的便是CentOS内核的Linux系统,会自动处理rpm 安装包中涉及的依赖关系,且其本身除了可以更换自身的软件源,获取不同的安装包外,还可以搭配wget 命令来使用(即使本地源仓库没有安装包,也可以在线通过wget下载安装包后安装)。

不过yum本地安装的时候,依然需要在线yum 源,因为处理安装包中涉及的依赖关系时,需要在线下载安装相关依赖,所以本地安装并非就可以完全不用管yum 源

本文中主要介绍如何更换openEuler中的yum 源,当然其余使用yum的系统也可以参考,重点在于找到yum源文件所在目录即可,yum会加载源文件所在目录中所有的repo 文件,所以并非仅能存在一个repo 文件

但值得注意的是,实际使用中,并非仓库或源文件越多越好,因为存在多个安装包时,安装同一个文件其实可能会存在冲突,导致无法安装。

可能出现的问题如下:

源文件存在多个仓库,无法实现最优安装

源文件存在多个安装包,无法实现最佳候选安装。
删除冗余的 yum 源文件成功安装

安装完成

注:openEuler本质上使用的也是 CentOS 内核,因此若要在虚拟机上安装,最好还是选择该CentOS内核的Linux系统。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b6tb6t

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值