当前位置:   article > 正文

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

openeuler更换yum源


前言

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

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

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

yum 百度百科介绍


更换 yum 软件源步骤

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

	/etc/yum.repos.d/
  • 1

可通过 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
  • 1

注意
查询 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
  • 1
  • 2

2. 清理原本的源文件

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

可使用以下几种方式

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

三、 添加源仓库

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

离线添加

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
  • 1

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

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

	systemctl restart sshd
  • 1

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

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

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

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

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

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

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

本地加载的命令格式如下

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

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

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

命令如下

	mount /dev/cdrom /tmp/dvd
	
	yum-config-manager --add file:///tmp/dvd
  • 1
  • 2
  • 3

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

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

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

	vim	/etc/fastab
  • 1

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

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

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

	mount -a
  • 1

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

	df -h
  • 1

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

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

在线添加

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

流程:

	yum-config-manager --add URl地址
  • 1

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

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

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

	// 阿里的基础软件源
	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
  • 1
  • 2
  • 3
  • 4
  • 5
使用 FTP 服务器的 yum 源

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

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

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

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

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

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

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

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

	which ftp 
  • 1

	ftp
  • 1

如果结果如下

	[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)
  • 1
  • 2
  • 3
  • 4

则代表本机没有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
  • 1

如果返回结果是active

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

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

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

	yum list vsftpd
  • 1

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

在线安装 vsftpd 服务 命令参考

	yum install -y vsftpd
  • 1

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

	systemctl start vsftpd
  • 1

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

	systemctl enable --now vsftpd
  • 1

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

	systemctl is-active vsftpd
  • 1

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

	vim /etc/vsftpd/vsftpd.conf
  • 1

主要修改的字段有以下几样:
用户能否匿名访问本服务器
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
  • 1

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

	createrepo /var/ftp/pub/源目录
  • 1

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

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

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

	vim /etc/selinux/config
  • 1

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

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

  • 关闭 Linux防火墙
	systemctl stop firewalld
  • 1

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

	systemctl disable --now firewalld
  • 1

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

	firewall-cmd --add-service=ftp
  • 1

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

	setsebool -P allow_ftpd_full_access 1
  • 1

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

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

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

	vim /etc/yum.conf
  • 1

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

五、 清理系统 logo 包

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

可使用以下命令

	yum remove -y openEuler-logos
  • 1

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

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

	yum clean all
  • 1

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

	yum make cache
  • 1

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

	yum repolist -v
  • 1

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


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

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

	yum list 软件名
  • 1

如果显示 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 搭配使用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

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


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

安装软件

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

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

卸载软件

命令格式如下

	yum remove [-y] 软件名字
  • 1

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


总结

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

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

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

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

可能出现的问题如下:

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

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

安装完成

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/786773
推荐阅读
  

闽ICP备14008679号