目录
一 配置DNF
1 DNF配置文件
主配置文件:
/etc/dnf/dnf.conf
仓库配置文件:
/etc/yum.repos.d/*.repo
其中DNF的主要配置文件是/etc/dnf/dnf.conf,该文件包含两部分:
“main”部分保存着DNF的全局设置
“repository”部分保存着软件源的设置,可以有零个或多个“repository”。
openEuler软件源的配置一般有两种方式:
- 直接配置/etc/dnf/dnf.conf文件中的
“repository”部分
在/etc/yum.repos.d目录下增加.repo文件
2 控制进程
/etc/dnf/dnf.conf文件包含的“main”部分,配置示例如下,
常用选项说明:
参数名称 | 说明 |
cachedir | 缓存目录,该目录用于缓存RPM包和数据库文件 |
keepcache | 可选值是1和0,表示是否要缓存已安装成功的RPM包及头文件 |
debuglevel | 设置dnf生成的debug信息,取值范围【0-10】,越大越详细 |
clean_requirements_on_remove | 不是通过显示用户安装,则只能通过该删除软件包 |
best | 安装最新版本 |
obsoletes | 可选值是1和0,表示是否允许更新RPM包 |
gpgcheck | 可选值是1和0,设置是否进行gpg校验 |
plugins | 可选值是1和0,表示启用或禁用dnf插件 |
installonly_limit | 设置可以同时安装installonlypkgs指令列出包的数量 |
3 配置repository部分
定义:
- 直接配置/etc/dnf/dnf.conf文件中的
“repository”部分
在/etc/yum.repos.d目录下增加.repo文件
- 编辑
/etc/yum.repos.d/<repo_name>.repo
,示例:
选项说明:
参数 | 说明 |
name=repository_name | 软件仓库(repository)描述的字符串 |
baseurl=repository_url | 软件仓库(repository)的地址
|
配置/etc/yum.repos.d目录下增加.repo文件。使用root权限添加openEuler repo源,示例如下:
4 创建本地软件源仓库
-
安装依赖:
dnf install createrepo
-
将 RPM 包放入目录(如
/mnt/localrepo
),然后生成元数据:erepo /mnt/localrepo
-
创建
.repo
文件指向该目录:createrepo /mnt/localrepo [localrepo] name=Local Repository baseurl=file:///mnt/localrepo enabled=1 gpgcheck=0
5 添加,启动和禁用软件源
常用命令补充:
-
查看仓库列表:
dnf repolist
-
清除缓存:
dnf clean all
-
更新缓存:
dnf makecache
(1)添加软件源
手动:编辑
/etc/yum.repos.d/
下的.repo
文件自动(如 EPEL):
# dnf config-manager --add-repo repository_url
(2)启动软件源
dnf config-manager --set-enabled <repo_name>
# 或修改 .repo 文件:enabled=1
(3)禁用软件源
dnf config-manager --set-disabled <repo_name>
# 或修改 .repo 文件:enabled=0
二 管理软件包
1 搜索软件包
可以使用rpm包名称,缩写或者描述搜索需要的RPM包,使用命令如下:
dnf search <关键词> # 搜索软件包(名称、描述)
dnf search httpd ( 以httpd为例 )
2 列出软件包清单
列出系统中所有已安装的以及可用的RPM包信息。使用命令如下:
dnf list <包名> # 精确匹配软件包dnf list installed # 列出已安装的包
dnf list available # 列出可安装的包
dnf list updates # 列出可更新的包
dnf list all # 列出所有软件包
dnf repoquery -l <包名> # 查看软件包包含的文件
3 显示RPM包信息
显示一个或者多个RPM包信息,多个包之间以空格分隔,使用命令如下:
dnf info <包名> # 查看软件包详细信息
rpm -qi <包名> # 查询已安装 RPM 包信息
rpm -qpl <RPM文件> # 查看 RPM 包内文件列表
4 安装RPM包
安装一个软件包及其所有未安装的依赖,请在root权限下执行如下命令:
dnf install <包名> # 从仓库安装
dnf reinstall <包名> # 重新安装
rpm -ivh <RPM文件> # 手动安装本地 RPM(不解决依赖)
dnf localinstall <RPM文件> # 安装本地 RPM 并解决依赖
5 下载软件包
dnf下载软件包,请在root权限下输入如下命令:
dnf download <包名> # 仅下载 RPM 包
dnf install --downloadonly <包名> # 下载并缓存(不安装)
6 删除软件包
卸载软件包以及相关的依赖软件包,请在root权限下执行如下命令:
dnf remove <包名> # 卸载软件包(保留依赖)
dnf autoremove # 删除无用依赖
rpm -e <包名> # 强制卸载 RPM(不检查依赖)
三 管理软件包租
1 列出软件包组清单
使用summary参数,可以列出系统中所有以安装软件包组,可用的组,可用的环境的数量,命令如下:
dnf group list # 列出所有软件包组(已安装/可用/环境组)
dnf group list hidden # 列出隐藏的软件包组
dnf group list ids # 显示软件包组的 ID(适用于自动化脚本)
2 显示软件包组信息
要列出包含在软件包组中必须安装的包和可选包,使用命令如下:
dnf group info "组名" # 查看软件包组的详细信息(包含的包、必选/可选包)
dnf group info -v "组名" # 显示更详细的信息(适用于调试)
3 安装软件包组
每个软件包组都有自己的名称以及相应的ID,可以使用软件包组名称或它的ID进行安装,请在root权限下执行如下命令:
dnf group install "组名" # 安装软件包组(默认安装必选包)
dnf group install "组名" --with-optional # 安装组内所有包(包括可选包)
dnf install @组名 # 使用 `@` 符号快速安装(如 `dnf install @development-tools`)
4 删除软件包组
要卸载软件包组,可以使用软件包组名称或它的ID,请在root权限下执行如下命令:
dnf group remove "组名" # 卸载软件包组(保留依赖)
dnf group remove "组名" --remove-leaves # 卸载组并删除不再需要的依赖
其他常用命令:
-
更新软件包组:
dnf group update "组名"
-
查看组内包列表:
dnf group info "组名" | grep -A 20 "Mandatory Packages"
-
环境组(Environment Groups)管理(如
Server with GUI
):
dnf install @^server-with-gui # 安装环境组(使用 `@^` 前缀)
dnf remove @^minimal # 卸载环境组
四 检查并更新
DNF可以检查系统中是否有软件包需要更新。可以通过DNF列出需要更新的软件包,并可以选择一次性全部更新,或者只对指定包进行更新。
1 检查更新
需要显示当前系统可用的更新,使用命令如下:
sudo dnf check-update
2 升级
需要升级单个软件包,在root权限下执行如下命令:
sudo dnf upgrade
3 更新所有的包和它们的依赖
要更新所有的包和他们的依赖,在root纯线下执行如下命令:
sudo dnf distro-sync
说明:
-
dnf upgrade
默认会更新所有可升级的包及其依赖。 -
dnf distro-sync
确保所有软件包与发行版版本完全同步(适用于跨版本升级或修复依赖问题)。
五 NFS共享存储服务
NFS是一种基于TCP/IP传输的网络文件系统协议,最初由sun公司开发。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储的设备必然支持的一种协议。
1 使用NFS发布共享资源
NFS服务的实现依赖于RPC(Remote Process Call,远程过程调用)机制,以完成远程到本地的映射过程。在OpenEuler系统中,需要安装nfs-utils,rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。
(1)安装nfs-utils,rpcbind软件包
提供rpc支持的服务rpcbind,提供NFS共享服务为nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启动。手动加载nfs共享服务时,应该先启动rpcbind再启动nfs。
安装nfs-utils,rpcbind的命令如下:
sudo dnf install -y nfs-utils rpcbind
(2)设置共享目录
NFS的配置文件为 /etc/exports,文件内容默认为空(无任何共享),在exports文件中设置共享资源时,记录格式为“目录位置客户地址(权限选项)”。
设置共享目录,命令如下:
sudo vim /etc/exports
(示例:添加
/shared 192.168.1.0/24(rw,sync,no_root_squash)
)
(3)启动NFS服务程序
启动NFS服务程序,命令如下:
sudo systemctl enable --now nfs-server rpcbind
(4)查看本机发布的NFS共享目录
查看本机发布的NFS共享目录。命令如下:
[root@Euler01 ~] # showmount -e localhost
关键说明:
-
/etc/exports
配置格式:目录 客户端IP(权限选项)
-
常用权限:
rw
(读写)、sync
(同步写入)、no_root_squash
(允许root访问) -
防火墙需放行服务:
sudo firewall-cmd --add-service={nfs,rpc-bind,mountd} --permanent && sudo firewall-cmd --reload
2 在客户机中访问NFS共享资源
NFS协议的目标是提供一种网络文件系统,因此对nfs共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs。既可以手动挂载,也可以加入fstab配置文件来实行开机自动挂载
(1)安装并启动rpcbind
若要正常访问nfs共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind系统服务。另外,为了使用showmount查询工具,建议将nfs-utils软件包也一并装上。
安装并启动rpcbind,命令如下:
sudo dnf install -y nfs-utils rpcbind # 安装软件包(NFS客户端工具)
sudo systemctl enable --now rpcbind # 启动并设置开机自启
(2)手动挂载NFS共享目录
以root用户身份执行mount操作,将nfs服务器共享的/opt/wwwroot目录挂载到本地目录/var/www/html。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。
手动挂载NFS共享目录,命令如下:
sudo mount -t nfs <NFS服务器IP>:/共享目录 /本地挂载点
(3)fstab自动挂载设置
fstab自动挂载设置,命令如下:
<NFS服务器IP>:/共享目录 /本地挂载点 nfs defaults 0 0
示例:
echo "192.168.1.100:/data /mnt/nfs_share nfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a # 测试fstab配置是否正确
(4)强制卸载NFS
强制卸载NFS,命令如下:
sudo umount -f -l /本地挂载点 # -f 强制卸载,-l 延迟卸载(解决"device is busy"错误)
关键说明
-
防火墙:若服务器有防火墙,需放行
nfs
、rpc-bind
、mountd
服务。 -
权限问题:确保服务器
/etc/exports
配置了客户机IP和读写权限(如rw,sync
)。 -
故障排查:
-
showmount -e <NFS服务器IP>
查看可用的NFS共享列表。 -
sudo systemctl status rpcbind
检查客户端服务是否运行。
-