这里写目录标题
部署 DNF 仓库及 NFS 共享服务
配置 DNF
借助于 DNF 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动査找并解决 rpm包之间的依赖关系,而无须管理员逐个、手工地去安装每个 rpm 包,使管理员在维护大量 Linux 服务器时更加轻松自如。特别是在拥有大量 Linux 主机的本地网络中,构建一台“源”服务器可以大大缓解软件安装、升级等对 Internet 的依赖。DNF 与 YUM 完全兼容,提供了 YUM兼容的命令行以及为扩展和插件提供的 API
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 文件
配置 main 部分
etc/dnf/dnf.conf 文件包含的“main”部分
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
参数名称 | 说明 |
---|---|
cachedir | 缓存目录,该目录用于存储 RPM 包和数据库文件 |
keepcache | 可选值是1和0,表示是否要缓存已安装成功的那些RPM包及头文件,缺省值为0,即不缓存 |
debuglevel | 设置 dnf 生成的 debug 信息。取值范围:[0-10],数值越大会输出越详细的 debug 信息。缺省值为 2,设置为0表示不输出 debug 信息, |
clean_requirements_on_remove | 删除在 dnfremove 期间不再使用的依赖项,如果软件包是通过 DNF安装的,而不是通过显式用户请求安装的,则只能通过 clean_requirements_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,不建议降低此值。 |
配置 repository 部分
repository 部分允许您定义定制化的 openEuler 软件源仓库,各个仓库的名称不能相同,否则会引起冲突。配置 repository 部分有两种方式,一种是直接配置/etc/dnf/dnf.conf 文件中的“repository”部分,另外一种是配置/etc/yum.repos.d 目录下的.repo 文件
直接配置/etc/dnf/dnf.conf 文件中的“repository”部分,下面是[repository]部分的一个最小配置
[repository]
name=repository_name
baseurl=repository url
说明: openEuler 提供在线的镜像源,地址:https://repo.openeuler.org/。以 openEuler 23.09的 aarch64 版本为例,baseurl 可配置为https://repo.openeuler.org/openEuler23.09/0S/aarch64/
参数 | 说明 |
---|---|
name=repository_name | 软件仓库(repository )描述的字符串 |
baseurl=repository_url | 软件仓库(repository )的地址,使用http协议的网络位置:例如 http://path/to/repo使用ftp协议的网络位置:例如 ftp://path/to/repo本地位置:例如 file:///path/to/local/repo |
配置/etc/yum.repos.d目录下的.repo 文件。openEuler 提供了多种 repo 源供用户在线使用,各 repo源含义可参考系统安装
显示当前配置
#显示当前的配置信息
dnf config-managr–dump
显示相应软件源的配置,首先查询repo id:
dnf repolist
然后执行如下命令,显示对应id 的软件源配置,其中 repository 为查询得到的repo id:
dnf config-manager --dump repository
您也可以使用一个全局正则表达式,来显示所有匹配部分的配置:
dnf config-manager --dump glob expression
创建本地软件源仓库
要建立一个本地软件源仓库,请按照下列步骤操作。
- 安装 createrepo 软件包
dnf install createrepo
将需要的软件包复制到一个目录下如/mnt/local_repo/
3.创建软件源
createrepo /mnt/local repo
添加、启用和禁用软件源
本节将介绍如何通过“dnf config-manager”命令添加、启用和禁用软件源仓库
添加软件源
要定义一个新的软件源仓库,您可以在 /etc/dnf/dnf.conf 文件中添加“repository”部分,或者在/etc/yum.repos.d/目录下添加“.repo”文件进行说明。建议您通过添加“.repo”的方式,每个软件源都有自己对应的“.repo”文件,以下介绍该方式的操作方法
要在您的系统中添加一个这样的源,请在root 权限下执行如下命令,执行完成之后会在/etc/yum.repos.d/日录下生成对应的 repo 文件。其中 repository_url 为repo 源地址,详情请参见表 2
[root@localhost yum.repos.d]# dnf config-manager --add-repo repository_url
[root@localhost yum,repos.d]# dnf config-manager --add-repo file:///myrepo/
添加仓库自:file:///myrepo/
[root@localhost yum.repos.d]# ls
myrepa.repo openEuler.repo
启用软件源
要启用软件源,请在 root 权限下执行如下命令,其中 repository 为新增.repo 文件中的 repo id(可通过 dnf repolist 查询):
[root@localhost yum.repos.d]# dnf config-manager --set-enable repository
也可以使用一个全局正则表达式,来启用所有匹配的软件源。其中 glob_expression 为对应的正则表达式,用于同时匹配多个 repo id:
[root@localhost yum.repos.d]# dnf config-manager --set-enable glob expression
禁用软件源
要禁用软件源,请在root 权限下执行如下命令
[root@localhost yum.repos.d]# dnf config-manager --set-disable repository
同样的,您也可以使用一个全局正则表达式来禁用所有匹配的软件源
[root@localhost yum,repos.d]# dnf config-manager --set-disable myrepo
[root@localhost yum.repos.d]# dnf repolist
repo id repo name
EPOL EPOL
[root@localhost yum.repos.d]# cat myrepo.repomyrepo]name=created by dnf config-manager from file:///myrepo
baseurl=file:///myrepoenabled=0
管理软件包
使用 dnf 能够让您方便的进行査询、安装、删除软件包等操作
搜索软件包
您可以使用 rpm 包名称、缩写或者描述搜索需要的 RPM 包
[root@localhost yum.repos.d]# dnf search httpd
crea 0.0 B/s | 0 B 00:00
:Apache HTTPD as Keycloak client
======== ame Matched: httpd ============
httpd-filesystem.noarch :The basic directory for HTTP Server
httpd-help,noarch :Documents and man pages for HTTP Server
httpd-tools.x86 64:Related tools for use HTTp Serverlibmicrohttpd.x86 64 :Lightweight library for embedding a webserver in
列出软件包清单
要列出系统中所有已安装的以及可用的RPM包信息
[root@localhost yum.repos.d]# dnf list all
Last metadata expiration check:0:02:17 ago on 2025年02月25日星期二 12时25分5
[root@localhost yum.repos.d]# rpm -qa
openEuler-latest-release-1.0-1.oe2403sp1.x86_64
tzdata-2024a-3.oe2403sp1.noarch
ncurses-base-6.4-8.oe2403sp1.noarch
libreport-filesystem-2.17.10-2.oe2403sp1.noarch
要列出系统中特定的 RPM 包信息
[root@localhost yum.repos.d]# dnf list httpd
Last metadata expiration check: 0:38:35 ago on 2025年04月22日 星期二 10时05分33秒.
Installed Packages
httpd.x86_64 2.4.58-7.oe2403sp1 @OS
Available Packages
显示 RPM 包信息
要显示一个或者多个 RPM 包信息,多个包之间以空格分隔
[root@localhost yum.repos.d]# dnf info httpd zip
crea 0.0 B/s | 0 B 00:00
安装 RPM包
要安装一个软件包及其所有未安装的依赖
您也可以通过添加软件包名字同时安装多个软件包。配置文件/etc/dnf/dnf.conf 添加参数strict=False,运行 dnf 命令参数添加–setopt=strict=0。请在 root 权限下执行如下命令:
[root@localhost yum.repos.d]# dnf install package name package name…–setopt=strict=0
下载软件包
使用 dnf 下载软件包,请在 root 权限下输入如下命令
[root@localhost yum.repos.d]# dnf download package_name
删除软件包
要卸载软件包以及相关的依赖软件包
管理软件包组
使用 summary 参数,可以列出系统中所有已安装软件包组、可用的组,可用的环境组的数量
[root@localhost yum.repos.d]# dnf groups summary
Last metadata expiration check: 0:49:27 ago on 2025年04月22日 星期二 10时05分33秒.
Available Groups: 8
要列出所有软件包组和它们的组 ID
[root@localhost yum.repos.d]# dnf group list
Last metadata expiration check: 0:50:25 ago on 2025年04月22日 星期二 10时05分33秒.
Available Environment Groups:
服务器
虚拟化主机
Installed Environment Groups:
最小安装
Available Groups:
容器管理
开发工具
无图形终端系统管理工具
传统 UNIX 兼容性
网络服务器
科学记数法支持
安全性工具
系统工具
显示软件包组信息
要列出包含在一个软件包组中必须安装的包和可选包
[root@localhost yum.repos.d]# dnf group info glob_expression…
Last metadata expiration check: 0:53:24 ago on 2025年04月22日 星期二 10时05分33秒.
Warning: Group glob_expression… does not exist.
安装软件组
每一个软件包组都有自己的名称以及相ID(groupid),您可以使用软件包组名称或它的 ID 进行安装
[root@localhost yum.repos.d]# dnf group install “网络服务器”
Last metadata expiration check: 0:56:04 ago on 2025年04月22日 星期二 10时05分33秒.
Dependencies resolved.
删除软件包组
要卸载软件包组,您可以使用软件包组名称或它的ID
[root@localhost yum.repos.d]# dnf group remove group_name
Warning: Module or Group ‘group_name’ is not installed.
Dependencies resolved.
Nothing to do.
Complete!
检查并更新
dnf 可以检査您的系统中是否有软件包需要更新。您可以通过 dnf 列出需要更新的软件包,并可以选择一次性全部更新或者只对指定包进行更新
检查更新
[root@localhost yum.repos.d]# dnf check-update
OS 0.0 B/s | 0 B 00:00
OS 0.0 B/s | 0 B 00:00
升级
rootalocalhost optl# dnf update httpd
ago on 2025年04月07日星期17时08分24秒ast metadata expiration check:0:03:02
Nothing to do.
Complete!
更新所有的包和它们的依赖
NFS共享存储服务
NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议
使用 NFS发布共享资源
NFS 服务的实现依赖于 RPC(Remote Process Ca11,远端过程调用)机制,以完成远程到本地的映射过程。在 0penEuler 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS共享发布和访问,后者用于RPC支持
使用 NFS发布共享资源
提供 RPC支持的服务为 rpcbind,提供 NFS 共享的服务为 nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs
设置共享目录
NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为“目录位置客户机地址(权限选项)”
其中客户机地址可以是主机名、IP 地址、网段地址,允许使用*、?通配符;权限选项中的 rw表示允许读写(ro 为只读),sync 表示同步写入,no_root_squash 表示当客户机以root 身份访问时赋予本地 root 杈限(默认是 root_squash,将作为 nfsnobody 用户降权对待)
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可
[root@localhost ~]# vi /etc/exports
/var/ftp/pub 192.168.10.101(ro)192.168.10.102(rw)
启动 NFS 服务程序
查看本机发布的NFS共享目录
查看本机发布的NFS共享目录
NFS 协议的目标是提供一种网络文件系统,因此对NFS共享的访问也使用mount 命令来进行挂载对应的文件系统类型为 nfs。既可以手动挂载,也可以加入 fstab 配置文件来实现开机自动挂载
安装并启动 rpcbind
若要正常访问 NFS 共享资源,客户机中也需要安装rpcbind软件包,并启动 rpcbind 系统服务
如果已经安装了 nfs-utils 软件包,则客户机也可以使用 showmount 査看 NFS 服务器端共享了哪些目录,查询格式为“showmount-e 服务器地址”
手动挂载NFS共享目录
以 root 用户身份执行 mount 操作,将 NFS 服务器共享的/opt/wwwroot 目录挂载到本地目录/var/www/htm1。与挂载本地文件系统不同的是,设备位置处应指出服务器地址
fstab 自动挂载设置
修改/etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络);若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了
强制卸载 NFS
NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的需要加上 -lf 才能卸载
当出现卡死现象时,要重新开一个终端,执行 cat /etc/rc.local 命令,查看挂载点
然后使用 umount 命令卸载,其中-l
表示解除正在繁忙的文件系统,-f 表示强制