部署DNF仓库及NFS共享服务

目录

一 配置DNF

1 DNF配置文件

2 控制进程

3 配置repository

4 创建本地软件源仓库

5 添加,启动和禁用软件源

(1)添加软件源

(2)启动软件源

(3)禁用软件源

二 管理软件包

1 搜索软件包

2 列出软件包清单

3 显示RPM包信息

4 安装RPM包

5 下载软件包

6 删除软件包

三 管理软件包租

1 列出软件包组清单

2 显示软件包组信息

3 安装软件包组

4 删除软件包组

四 检查并更新

1 检查更新

2 升级

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

五 NFS共享存储服务

1 使用NFS发布共享资源

(1)安装nfs-utils,rpcbind软件包

(2)设置共享目录

(3)启动NFS服务程序

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

(1)安装并启动rpcbind

(2)手动挂载NFS共享目录

(3)fstab自动挂载设置

(4)强制卸载NFS


一 配置DNF

1 DNF配置文件

  • 主配置文件:/etc/dnf/dnf.conf

  • 仓库配置文件:/etc/yum.repos.d/*.repo

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

  1. “main”部分保存着DNF的全局设置
  2. “repository”部分保存着软件源的设置,可以有零个或多个“repository”。

openEuler软件源的配置一般有两种方式:

  1. 直接配置/etc/dnf/dnf.conf文件中的“repository”部分
  2. 在/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部分

定义:

  1. 直接配置/etc/dnf/dnf.conf文件中的“repository”部分
  2. 在/etc/yum.repos.d目录下增加.repo文件
  3. 编辑 /etc/yum.repos.d/<repo_name>.repo,示例:

选项说明:

repository参数说明
参数说明
name=repository_name软件仓库(repository)描述的字符串
baseurl=repository_url

软件仓库(repository)的地址

  • 使用http协议的网络位置
  • 使用ftp协议的网络位置
  • 本地文件位置

配置/etc/yum.repos.d目录下增加.repo文件。使用root权限添加openEuler repo源,示例如下:

4 创建本地软件源仓库

  1. 安装依赖:

    dnf install createrepo
  2. 将 RPM 包放入目录(如 /mnt/localrepo),然后生成元数据:

    erepo /mnt/localrepo

  3. 创建 .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"错误)

关键说明

  • 防火墙:若服务器有防火墙,需放行 nfsrpc-bindmountd 服务。

  • 权限问题:确保服务器 /etc/exports 配置了客户机IP和读写权限(如 rw,sync)。

  • 故障排查

    • showmount -e <NFS服务器IP> 查看可用的NFS共享列表。

    • sudo systemctl status rpcbind 检查客户端服务是否运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值