部署DNF仓库及NFS共享服务
目录
1. 配置DNF
借助于 DNF 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动査找并解决 rpm包之间的依赖关系,而无须管理员逐个、手工地去安装每个 rpm 包,使管理员在维护大量 Linux 服务器时更加轻松自如。特别是在拥有大量 Linux 主机的本地网络中,构建一台“源”服务器可以大大缓解软件安装、升级等对 Internet 的依赖。DNF 与YUM 完全兼容,提供了 YUM兼容的命令行以及为扩展和插件提供的 API。
DNF与YUM的核心区别
| 特性 | YUM | DNF |
| 依赖解析引擎 | 基于 Python 的简单算法 | 基于 libsolv(SUSE 开发的高效依赖解析库) |
| 性能 | 较慢(尤其是复杂依赖场景) | 显著更快,内存占用更低 |
| 事务历史管理 | 基础功能 | 支持更详细的事务历史(dnf history) |
| API 和扩展性 | 旧代码,扩展性差 | 现代化 API,支持更好的插件和模块化 |
| 社区支持 | 已停止维护(标记为遗留工具) | 活跃维护,持续更新 |
1.1 DNF配置文件
DNF 的主要配置文件是 /etc/dnf/dnf.conf,该文件包含两部分:
“main” 部分保存着DNF的全局设置。
“repository” 部分保存着软件源的设置,可以有零个或多个“repository”
另外,在/etc/yum.repos.d 目录中保存着零个或多个 repo 源相关文件,它们也可以定义不同的“repository" 。所以 openEuler 软件源的配置一般有两种方式,一种是直接配置/etc/dnf/dnf.conf 文件中的“repository”部分,另外一种是在/etc/yum.repos.d 目录下增加.repo 文件。
1.2 配置main部分
/etc/dnf/dnf.conf 文件包含的“main”部分,配置示例如下:

常用选项说明:
| 参数名称 | 说明 |
| cachedir | 缓存目录,该目录用于存储 RPM 包和数据库文件 |
| keepcache | 可选值是1和0,表示是否要缓存已安装成功的那些RPM包及头文件,缺省值为 0,即不缓存 |
| debuglevel | 设置 dnf 生成的 debug 信息。取值范围:[0-10],数值越大会输出越详细的 debug 信息,缺省值为 2,设置为0表示不输出 debug 信息 |
| clean_reguirements_on_remove | 删除在 dnf remove 期间不再使用的依赖项,如果软件包是通过 DNF 安装的,而不是通过显式用户请求安装的,则只能通过 clean_reguirements on_remove荆除软件包,即它是作为依赖项引入的,缺省值为 True |
| best | 升级包时,总是尝试安装其最高版本,如果最高版本无法安装,则提示无法安装的原因并停止安装,缺省值为True |
| obsoletes | 可选值1和0,设置是否允许更新陈旧的RPM包,缺省值为 1,表示允许更新 |
| gpgcheck | 可选值1和0,设置是否进行 gpg 校验,缺省值为1,表示需要进行校验 |
| plugins | 可选值1和0,表示启用或禁用 dnf插件,缺省值为 1 表示启用 dnf 播件 |
| installonly_limit | 设置可以同时安装“installonlypkgs"指令列出包的数量缺省值为 3,不建议降低此值 |
1.3 配置repository部分
repository 部分允许您定义定制化的 openEuler 软件源仓库,各个仓库的名称不能相同,否则会引起冲突。配置repository 部分有两种方式,一种是直接配置/etc/dnf/dnf.conf 文件中的“repository”部分,另外一种是配置/etc/yum.repos.d目录下的.repo 文件
1.4 创建本地软件源仓库
要在本地创建一个软件源仓库,可以按照以下步骤进行:
1. 首先,选择一个合适的目录用于存放软件包。可以在系统中创建一个新的目录,比如 `/srv/software_repo`。
2. 将您的软件包复制到这个目录中。您可以从互联网上下载需要的软件包,也可以将已有的软件包复制过来。
3. 安装一个软件仓库管理工具,比如 `createrepo`。
4. 在存放软件包的目录中运行 `createrepo` 命令,以创建仓库索引文件:
5. 配置系统,以使其能够访问新创建的软件源仓库。可以通过 HTTP、FTP 或本地路径等方式提供访问。
6. 如果希望其他计算机能够访问这个仓库,还需要在其他计算机上配置相应的软件源,指向搭建的本地仓库地址。
2. 管理软件包
使用 dnf 能够让用户方便的进行査询、安装、删除软件包等操作。
2.1.搜索软件包
可以使用rpm包名称、缩写或者描述搜索需要的RPM包,比如搜索httpd的命令为:
![]()
2.2.列出软件包清单
要列出系统中所有已安装的以及可用的 RPM包信息,使用以下命令:
![]()
2.3.显示 RPM 包信息
要显示一个或者多个 RPM 包信息,多个包之间以空格分隔,比如httpd、zip使用以下命令:
![]()
2.4.安装 RPM 包
要安装一个软件包及其所有未安装的依赖,比如安装httpd命令如下:
![]()
2.5.下载、删除软件包
使用dnf下载软件包,比如httpd命令如下:
![]()
使用dnf删除软件包,比如httpd命令如下:
![]()
3.管理软件包组
软件包集合是服务于一个共同的目的一组软件包,例如系统工具集等。使用 dnf 可以对软件包组进行安装/删除等操作,使相关操作更高效。
3.1 列出软件包组清单
使用 summary 参数,可以列出系统中所有已安装软件包组、可用的组,可用的环境组的数量,命令如下:
![]()
要列出所有软件包组和它们的组 ID ,命令如下:
![]()
3.2 显示软件包组
要列出包含在一个软件包组中必须安装的包和可选包,例如显示 Development Tools 信息,命令如下:
![]()
3.3 安装、删除软件包组
安装
每一个软件包组都有自己的名称以及相应的 ID,可以使用软件包组名称或它的 ID 进行安装。
要安装一个软件包组,例如安装 Development Tools 相应的软件包组,命令如下:
![]()
![]()
删除
若要卸载软件包组,例如删除 Development Tools 相应的软件包组,命令如下:
![]()
![]()
4. NFS共享存储服务
NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。
4.1 使用NFS发布共享资源
NFS 服务的实现依赖于 RPC(Remote Process Cal1,远端过程调用)机制,以完成远程到本地的映射过程。在 0penEuler 系统中,需要安装 nfs-uti1s、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS共享发布和访问,后者用于RPC支持。
(1)安装 nfs-utils、rpcbind 软件包
提供 RPC支持的服务为 rpcbind,提供 NFS 共享的服务为 nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs
![]()

(2)设置共享目录
NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为“目录位置客户机地址(权限选项)”。
(3)启动 NFS 服务程序
![]()
安装网络工具否则无法使用netstat
![]()

4.2 在客户机中访问NFS共享资源
NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载对应的文件系统类型为 nfs。既可以手动挂载,也可以加入 fstab 配置文件来实现开机自动挂载。
(1)安装并启动 rpcbind
若要正常访问 NFS 共享资源,客户机中也需要安装 rpcbind 软件包,并启动 rpcbind 系统服务
![]()

(2)手动挂载 NFS 共享目录
以 root 用户身份执行 mount 操作,将 NFS 服务器共享的/opt/wwwroot 目录挂载到本地目录/var/www/html。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。
(3)fstab 自动挂载设置
修改/etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络);若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了
(4)强制卸载 NFS
NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -1f 才能卸载。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)