前言
yum 全称 Yellow dog Updater Modified,即黄狗升级器,作为 openEuler 中默认的安装软件程序,安装方式支持 本地安装和 在线安装。
其软件源可根据需要自行替换。
yum 适用的安装包: rpm 文件
yum 软件源: repo 文件
即对应文件后缀是以上述文件名结尾的
yum 可根据需要在不同Linux系统中安装,yum 是一款由Linux社区自行维护的软件,因此其软件源中的软件多为自由软件。
更换 yum 软件源步骤
一、了解 yum 软件源所在位置
/etc/yum.repos.d/
可通过 ls 命令进行查看

如上图,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拥有写操作权利。
其中文档详细信息中
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 界面参数
如上图中 [ 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:

代表本服务已启动。
如果返回结果是inactive:

代表服务未启动,重新启动即可。
systemctl restart sshd
然后使用scp 命令从远程终端复制过来即可。
scp应该在打算拷贝repo文件过来的设备终端里使用。
命令格式如下:
scp (path-绝对路径:repo文件) 用户@( openEuler的IP地址 ):( path-绝对路径:存放repo文件的目录 )
其中,用户为openEuler中具有远程 ssh访问权限的用户。
随后会自动生成密匙,系统会寻问是否确认要传输文件,输入yes即可。
然后按提示,输入用户对应密码即可。
注意,所输入的内容皆出于安全考虑,会被隐藏。
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
结果如下:

直接用mount挂载的设备仅本次开机生效,下次开机需要重新挂载。
如果希望下次开机也自动挂载,需要修改启动配置文件(
/etc/fastab)
自动挂载
a.通过vim 命令修改启动配置文件vim /etc/fastabb.在其中空白地方添加以下内容
/dev/cdrom /tmp/dvd iso9660 defaults 0 0c.保存文件后,输入
mount -a 命令验证是否自动装载成功(即能否正常开机)mount -ad.通过
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:

如果是这样,代表未启动该服务,可以参考FTP处查询的命令,也通过yum 命令查询本机是否安装了 vsftpd 服务
yum list 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为Linux的内核安全模块
可以用getenforce 命令查询其当前状态
返回值: 1 强制模式 | 0 宽松模式
关闭了会提示SElinux已禁用。
- 关闭 Linux防火墙
systemctl stop firewalld
或可以禁止防火墙,且不允许其下次开机自动启动
systemctl disable --now firewalld
备注
本机防火墙可以考虑添加FTP 服务到白名单firewall-cmd --add-service=ftpSELinux则使用以下命令将允许FTP通过的配置写入到其配置文件中
setsebool -P allow_ftpd_full_access 1
四、 取消软件自检(可选)
yum安装软件时,默认会检测软件包的来源,如果是非官方的,会不允许安装,即类似于手机安装软件时,开启了应用程序安全验证。该功能可以取消,但是取消后,安装软件产生的后果自负。
具体操作如下,修改yum的配置文件
vim /etc/yum.conf
文件内容如下

其中 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 则代表有可用包,可以直接安装。

如果显示Error 则代表目前源仓库没有可用安装包。

如果显示Installed Packages 则代表该程序已安装。

若发现源中不存在所需的安装包。
可以考虑更换另一个源,也可以选择本地安装包。
同时,也可以读取源文件,看一下是否所有源仓库路均开启了。
yum 源文件
前面介绍了源文件如何进行更换,但是,有时候我们离线更换的源文件,里面并没有开启它所包含的所有源仓库。
具体可以通过cat 命令查看对应源文件内容
如下 使用命令 cat Centos-vault-8.5.2111.repo 查看结果如下

可见图中红框内容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系统。




2045






