部署DNF仓库及NFS共享服务

发布于:2025-04-08 ⋅ 阅读:(35) ⋅ 点赞:(0)

目录

配置DNF

        DNF配置文件

        创建本地软件源仓库

        添加、启用和禁用软件源

管理软件包

管理软件包组

        列出软件包清单

检查并更新

NFS共享存储服务

        使用NFD发布共享资源

        1.安装 nfs-utils、rpcbind 软件包

        2.设置共享目录

        3.启动NFS服务程序

        4.查看本机发布的NFS共享目录 

        在客户机中访问NFS共享资源

        1、客户机安装并启用rpcbind

        2、手动改挂载NFS共享目录

        3.fstab 自动挂载设置

        4、强制卸载NFS


配置DNF

        借助于 DNF 软件仓库,可以完成安装、卸载、自动升级 rpm 软件包等任务,能够自动査找并解决 rpm包之间的依赖关系,而无须管理员逐个、手工地去安装每个 rpm 包,使管理员在维护大量 Linux 服务器时更加轻松自如。特别是在拥有大量 Linux 主机的本地网络中,构建一台“源”服务器可以大大缓解软件安装、升级等对 Internet 的依赖。DNF 与 YUM 完全兼容,提供了 YUM 兼容的命令行以及为扩展和插件提供的 API。

        DNF配置文件

        DNF的主要配置文件是/etc/dnf/dnf.config,该文件包含两部分:

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

        常用选项说明:

参数名称 说明
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,设置是否允许更新陈1日的 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

        选项说明:

参数 说明
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源含义可参考系统安装。使用 root 权限添加 openEuler repo 源,示例如下:

# vi /etc/yum.repos.d/openEuler.repo
[os]
name=openEuler-$releasever-0S
baseurl=https://repo.openeuler.org/openEuler-{version}/0s/$basearch/
enabled=1    #enabled 为是否启用该软件源仓库,可选值为1 和0。缺省值为1,表示启用该
软件源仓库。
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-{version}/0s/$basearch/RPM-GPG-KEY-open
Euler        #gpgkey 为验证签名用的公钥

         显示当前配置

dnf config-manager --dump        #显示当前的配置信息
dnf repolist                     #显示相应软件源的配置,首先查询repo id:
dnf config-manager --dump repository        #显示对应id 的软件源配置,其中repository 为查询得到的repo id:
dnf config-manager --dump glob expression    #您也可以使用一个全局正则表达式,来显示所有匹配部分的配置:

        创建本地软件源仓库

        要建立应该本地软件源仓库,可以按照下列操作步骤。

1、安装 createrepo 软件包
dnf install createrepo
2、将需要的软件包复制到一个目录下,如:/mut/local_repo/
3、创建软件源
createrepo /mnt/local_repo

        添加、启用和禁用软件源

        添加软件源

        要定义一个新的软件源仓库,您可以在 /etc/dnf/dnf.conf 文件中添加“repository”部分,或者在/etc/yum.repos.d/目录下添加“.repo”文件进行说明。建议您通过添加“.repo”的方式,每个软件源都有自己对应的“.repo”文件,以下介绍该方式的操作方法。

        要在您的系统中添加一个这样的源,请在 root 权限下执行如下命令,执行完成之后会在/etc/yum. repos.d/目录下生成对应的 repo 文件。其中 repository_url 为repo 源地址,命令如下:

# dnf config-manager --add-repo repository url

         启动软件源

        要启用软件源,请在 root 权限下执行如下命令,其中 repository 为新增.repo 文件中的 repo id(可通过 dnf repolist 查询):

# dnf config-manager --set-enable repository

         也可以使用一个全局正则表达式,来启用所有匹配的软件源。其中 glob expression 为对应的正则表达式,用于同时匹配多个repo id:

#dnf config-manager --set-enable glob expression

        禁用软件源

         要禁用软件源,请在root 权限下执行如下命令:

#dnf config-manager --set-disable repository

         同样的,您也可以使用一个全局正则表达式来禁用所有匹配的软件源:

# dnf config-manager--set-disable glob expression

管理软件包

        搜索软件包

        您可以使用 rpm 包名称、缩写或者描述搜索需要的 RPM 包,使用命令如下:

dnf search httpd(以httpd 为例)

         列出软件包清单

            要列出系统中所有已安装的以及可用的 RPM包信息,使用命令如下:

dnf list all

        要列出系统中特定的RPM包信息,使用命令如下:

dnf list httpd (以httpd 为例)

        显示RPM包信息

         要显示一个或者多个 RPM 包信息,多个包之间以空格分隔,使用命令如下:

dnf info httpd zip (以 httpd,zip 两个包为例)

        安装RPM软件包

         要安装一个软件包及其所有未安装的依赖,请在root 权限下执行如下命令:

dnf install package name
#示例如下:
dnf install httpd

         您也可以通过添加软件包名字同时安装多个软件包。配置文件/etc/dnf/dnf.conf 添加参数strict=False,运行 dnf 命令参数添加--setopt=strict=0。请在 root 权限下执行如下命令:

dnf install package name package name... --setopt=strict=0

        下载软件包

         使用 dnf 下载软件包,请在 root 权限下输入如下命令:

dnf download package_ name

         如果需要同时下载未安装的依赖,则加上--resolve,使用命令如下:

dnf download --resolve package name
#示例如下:
dnf download --resolve httpd

        删除软件包

         要卸载软件包以及相关的依赖软件包,请在root 权限下执行如下命令:

dnf remove package name...
示例如下:
dnf remove totem

管理软件包组

        软件包集合是服务于一个共同的目的一组软件包,例如系统工具集等。使用 dnf 可以对软件包组进行安装/删除等操作,使相关操作更高效,

        列出软件包清单

        使用 summary 参数,可以列出系统中所有已安装软件包组、可用的组,可用的环境组的数量,命令如下:

dnf groups summary

        要列出所有软件包组和它们的组ID,命令如下:

dnf group list

        显示软件包组信息

         要列出包含在一个软件包组中必须安装的包和可选包,使用命令如下:

dnf group info glob expression...
#例如显示 Development Tools 信息,示例如下:
dnf group info "Development Tools"

        安装软件包组

         每一个软件包组都有自己的名称以及相应的 ID(groupid),您可以使用软件包组名称或它的 ID 进行安装。

        要安装一个软件包组,请在 root 权限下执行如下命令:

dnf group install group_name
dnf group install groupid
#例如安装 Development Tools 相应的软件包组,命令如下:
dnf group install"Development Tools"
dnf group install development

        删除软件包组

         要卸载软件包组,您可以使用软件包组名称或它的 ID,在 root 权限下执行如下命令:

dnf group remove group_name
dnf group remove groupid
例如删除 Development Tools 相应的软件包组,命令如下:
dnf group remove "Development Tools"
dnf group remove development

检查并更新

        dnf 可以检査您的系统中是否有软件包需要更新。您可以通过 dnf 列出需要更新的软件包,并可以选择一次性全部更新或者只对指定包进行更新。

        检查更新

        如果您需要显示当前系统可用的更新,使用命令如下:

dnf check-update

        升级

         如果您需要升级单个软件包,在root 权限下执行如下命令:

dnf update package_name
#例如升级 rpm 包,示例如下:
dnf update anaconda-gui.aarch64 (以anaconda-gui 包为例)
#类似的,如果您需要升级软件包组,在 root 权限下执行如下命令:
dnf group update group_name

         更新所有的包和它们的依赖

        要更新所有的包和它们的依赖,在root 权限下执行如下命令:

dnf update

NFS共享存储服务

        NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用 NFS 协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。

        使用NFD发布共享资源

        NFS 服务的实现依赖于 RPC(Remote Process Ca11,远端过程调用)机制,以完成远程到本地的映射过程。在 0penEuler 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS共享发布和访问,后者用于RPC支持。

        1.安装 nfs-utils、rpcbind 软件包

        提供 RPC支持的服务为 rpcbind,提供 NFS 共享的服务为 nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。

[root@localhost ~]# dnf install -y nfs-utils rpcbind    #安装nfs 和 rpcbind
[root@localhost ~]# systemctl enable nfs        #设置开机自启动nfs服务
[root@localhost ~]# systemctl enable rpcbind    #设置开机自启动rpcbind服务

        2.设置共享目录

         NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为“目录位置客户机地址(权限选项)”。例如,若要将文件夹 /opt/wwwroot 共享给192.168.10.0/24 网段使用,允许读写操作,具体配置如下所示:

[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vim /etc/exports
[root@localhost ~]# cat /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)

         其中客户机地址可以是主机名、IP 地址、网段地址,允许使用*、?通配符;权限选项中的 rw 表示允许读写(ro 为只读),sync 表示同步写入,no_root_squash 表示当客户机以root 身份访问时赋予本地 root 权限(默认是 root_squash,将作为 nfsnobody 用户降权对待)。

        当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可。例如,以下操作将/var/ftp/public 目录共享给两个客户机,并分别给予只读、读写权限。

[root@localhost ~]# vi /etc/exports
/var/ftp/pub 192.168.10.101(ro) 192.168.10.102(rw)

        3.启动NFS服务程序

[root@localhost~]# systemctl start rpcbind
[root@localhost~]# systemctl start nfs-server
[root@localhost~]# dnf install net-tools -y    #安装网络工具,否则无法使用netstat
[root@localhost~]# netstat anpt /grep rpc

 

        4.查看本机发布的NFS共享目录 

        通过以下命令查看本机发布的NFS共享目录:

[root@localhost ~]# showmount -e

        在客户机中访问NFS共享资源

        NFS 协议的目标是提供一种网络文件系统,因此对 NFS 共享的访问也使用 mount 命令来进行挂载,对应的文件系统类型为 nfs。既可以手动挂载,也可以加入 fstab 配置文件来实现开机自动挂载。

        1、客户机安装并启用rpcbind

        若要正常访问 NFS 共享资源,客户机中也需要安装 rpcbind 软件包,并启动 rpcbind 系统服务。另外,为了使用 showmount 查询工具,建议将 nfs-utils 软件包也一并装上。

[root@localhost ~]# dnf install -y rpcbind nfs-utils
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start rpcbind

         如果已经安装了 nfs-uti1s 软件包,则客户机也可以使用 showmount 査看 NFS 服务器端共享了哪些目录,查询格式为“showmount -e 服务器地址”(记得关101的防火墙)

        2、手动改挂载NFS共享目录

         以 root 用户身份执行 mount 操作,将 NFS 服务器共享的/opt/wwwroot 目录挂载到本地目录/var/www/html。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。

[root@localhost ~]# mount 192.168.10.101:/opt/wwwroot /var/www/html/
[root@localhost ~]# tail -1 /etc/mtab    //确认挂载结果
192.168.10,101:/opt/wwwroot /var/www/html nfs4 rw,relatime,vers=4.2,rsize=262144,ws
ize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.16810,102,local lock=none,addr=192.168.10.101 0 0
[root@localhost ~]# vim /var/www/html/index.html    //在客户机创建测试文件
test web document

         完成挂载以后,访问客户机的/var/www/html 文件夹,实际上就相当于访问 NFS 服务器中的/opt/wwwroot 文件夹,其中的网络映射过程对于用户程序来说是透明的。例如,上述操作中创建的index.html 测试文件,会立刻出现在服务器的/opt/wwwroot/目录下。

        3.fstab 自动挂载设置

        修改/etc/fstab 配置文件,加入 NFS 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络);若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了。

[root@localhost ~]# vim /etc/fstab //省略部分信息......
192.168.10,101:/opt/wwwroot /var/www/html nfs defaults, netdev 0 0

         4、强制卸载NFS

        NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载。

        当出现卡死现象时,要重新开一个终端,执行 cat /etc/rc,1ocal 命令,查看挂载点。

        然后使用 umount 命令卸载,其中-1 表示解除正在繁忙的文件系统,-f 表示强制。

[root@localhost ~l# umount /var/www/html
umount.nfs4:/var/www/html:device is busy
[root@localhost ~]# umount -lf /var/www/html

        


网站公告

今日签到

点亮在社区的每一天
去签到