前言
在现代Linux系统中,软件包的高效管理是保障系统稳定性和扩展性的关键。DNF作为新一代RPM包管理工具,通过自动解决依赖关系和灵活的仓库配置,极大简化了软件安装、升级及维护的复杂度。通过DNF工具,管理员可快速构建本地镜像源,减少对外部网络的依赖,尤其适用于企业内网环境,实现软件资源的集中管理与快速分发。
此外,网络文件系统(NFS)作为跨服务器数据共享的核心协议,为分布式系统提供了无缝的存储整合能力。通过NFS,多台服务器可高效访问同一存储资源,支撑负载均衡集群、数据备份等场景。
配置DNF
借助于DNF软件仓库,可以完成安装、卸载、自动升级rpm软件包等任务,能够自动查找并解决rpm包之间的依赖关系,无须逐个、手动安装每一个rpm包。DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供API,使用DNF需要管理员权限。
配置DNF配置文件
DNF的主要配置文件是/etc/dnf/dnf.conf,该文件包括两部分:
a.“main”:部分保存着DNF的全局设置
b.“repository”:部分保存着软件源的设置,可以有零个或多个“repository”
另外,在/etc/yum.repos.d目录中保存着零个或多个repo源相关文件,它们也可以定义不同的“repository”。
所以openEuler软件源的配置一般有两种方式,一种是直接配置/etc/dnf/dnf.conf文件中的“repository”部分,另外一种是在/etc/yum.repos.d目录下增加.repo文件
配置main部分
/etc/dnf.conf文件包含的“main”部分,配置示例如下
常用选项说明:
参数名称 | 说明 |
cachedir | 缓存目录,该目录用于存储RPM包和数据库文件 |
keepcache | 可选值是1和0,表示是否要缓存已安装成功的那些RPM包及头文件,缺省值为0,即不缓存 |
debuglevel | 设置dnf生成的debug信息,取值范围:0~10,数值越大会输出越详细的debug信息,缺省值为2,设置为0表示不输出debug信息 |
clean_requirements_on_remove | 删除在dnf remove期间不再使用的依赖项,如果软件包是通过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部分允许您定义定制化的oenEuler软件源仓库,各个仓库的名称不能相同,否则会引起冲突。配置repository部分有两种方式,一种是直接配置/etc/dnf/dnf.conf文件中的“repository”部分,另一种是配置/etc/yum.repos.d目录下的.repo文件。
直接配置/etc/dnf/dnf.conf文件中的”repository“部分,下面是此部分的一个最小配置示例:
选项说明:
参数 | 说明 |
name=repository_name | 软件仓库(repository)描述的字符串 |
baseur1=repository_ur1 |
软件仓库的地址 a.使用http协议的网络位置:例,http://path/to/repo b.使用ftp协议的网络位置:例,ftp://path/to/repo c.本地位置:例,file:///path/to/local/repo |
配置/etc/yum.repos.d目录下的.repo文件。openEuler提供多种repo源供用户在线使用,各repo源含义可参考系统安装。使用root权限添加openEuler repo源,示例:
显示当前配置
a.显示当前的配置信息:dnf config-manager --dump
b.显示相应软件源的配置,首先查询repo id:dnf repolist
c.然后执行如下命令,显示对应id的软件源配置,其中repository为查询得到的repo id:dnf config-manager --dump repository
d.全局正则表达式,显示所有匹配部分的设置:dnf config-manager --dump glob_expression
创建本地软件源仓库
步骤
1.安装createrepo软件包
dnf install createrepo
2.将需要的软件包复制到一个目录下,如/mnt/local_repo/
3.创建软件源
createrepo /mnt/local_repo
添加、禁用和启用软件源
添加软件源
要定义一个新的软件源仓库,您可以在/etc/dnf/dnf.conf文件中添加“repository”部分,或者在/etc/yum.repos.d/目录下添加“.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 install all
要列出系统中特定的RPM包信息
命令:dnf list httpd(httpd为例)
显示RPM包信息
要显示一个或者多个RPM包信息,多个包之间以空格分隔
命令:dnf info httpd zip(以httpd,zip两个包为例)
安装RPM包
要安装一个软件包及其所有未安装的依赖,在root权限下执行以下命令:
dnf install package_name
下载软件包
使用dnf下载软件包,root权限下执行命令
命令:dnf download --resolve package_name
删除软件包
命令:dnf remove package_name
管理软件包组
软件包集合是服务于一个共同的目的一组软件包,例如系统工具等。
列出软件包组清单
使用summary参数,可以列出所有已安装软件包组、可用的组,可用的环境组
命令:dnf groups summary
要列出所有软件包组和它们的组ID
命令:dnf group list
显示软件包组信息
要列出包含在一个软件包组中必须安装的包和可选包
命令:dnf group info glob_expression
例:显示Development Tools信息
命令:dnf group info “Development Tools”
安装软件包组
每一个软件包组都有自己的名称以及相应的ID,可以使用软件包组名称或它的ID进行安装(root权限)
命令:dnf group install group_name
dnf group install groupid
删除软件包组
命令:dnf group remove group_name
dnf group remove groupid
检查并更新
dnf可以检查系统中是否有软件包需要更新
检查更新
显示当前系统可用的更新
命令:dnf check-update
升级
root权限下,升级单个软件包
命令:dnf update package_name
更新所有的包和它们的依赖
命令:dnf update
NFS共享存储服务
NFS是一种基于TCP/IP传输的网络文件系统协议,最初由Sun公司开发。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源,对于大多数负载均衡群集来说,使用NFS协议共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议
使用NFS发布共享资源
NFS服务的实现依赖于RPC(远端过程调用)机制,以完成远程到本地的映射过程。OpenEuler系统中,需要安装nfs-utils、rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持
1.安装nfs-utils、rpcbind软件包
手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs
命令:dnf install -y nfs-utils rpcbind
systemctl enable nfs
systemctl enable rpcbind
2.设置共享目录
NFS的配置文件为/etc/exports,文件内默认为空(无任何共享)。在exports文件中设置共享资源时,记录格式为“目录位置客户机地址(权限选项)”
例:将文件/opt/wwwroot共享给192.168.10.0/24网段使用,允许读写操作
命令:mkdir -p /opt/wwwroot
vim /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)
其中客户机地址可以是主机名、IP地址、网段地址,允许使用*、?通配符;权限选项中rw表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限。
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可
例:将/var/ftp/public目录共享给两个客户机,并分别给予只读、读写权限
命令:vi /etc/exports
/var/ftp/pub 192.168.10.101(ro) 192.168.10.102(rw)
3.启动NFS服务程序
systemctl start rpcbind
systemctl start nfs-server
dnf install net-tools -y (安装网络工具,否则无法使用netstat)
netstat -anpt | grep rpc
4.查看本机发布的NFS共享目录
showmount -e
在客户机中访问NFS共享资源
NFS协议的目标是提供一种网络文件系统,因此对NFS共享的访问也使用mount命令来进行挂载,对应的文件系统类型为nfs,既可以手动挂载,也可以加入fstab配置文件来实现开机自动挂载。
1.安装并启动rpcbind
若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动rpcbind系统服务
命令:dnf install -y rpcbind nfs-utils
systemctl enable rpcbind
systemctl start rpcbind
使用showmount查看NFS服务器共享哪些目录,格式为“showmount -e 服务器地址”
命令:showmount -e 192.168.10.101
2.手动挂载NFS共享目录
以root身份执行mount操作,将NFS服务器共享的/opt/wwwroot目录挂载到本地目录/var/www/html。与挂载本地文件系统不同的是,设备位置处应指出服务器地址
命令:mount 192.168.10.101:/opt/www/html /var/www/html
tail -l /etc/mtab(确认挂载结果)
vim /var/www/html/index.html(在客户机创建测试文件)
test web document
完成挂载后,访问客户机/var/www/html文件夹,实际上就相当于访问NFS服务器中的/opt/wwwroot文件夹,其中的网络映射过程对于用户程序来说是透明的。例如,上述操作中创建的测试文件,会立刻出现在服务器的/opt/wwwroot目录下
3.fstab自动挂载设置
修改/etc/fstab配置文件,加入NFS共享目录的挂载设置,注意将文件系统类型设为nfs,挂载参数建议添加_netdev(设备需要网络);若添加soft、intr参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载NFS共享资源了
vim /etc/fstab
192.168.10.101:/opt/wwwroot /var/www/html nfs default,_netdev 0 0
4.强制卸载NFS
NFS客户端与服务器段的耦合度是非常高的,如果客户端 正在挂载使用,服务器端NFS服务突然间停到了,那么在客户端就会出现执行df -h 命令卡死的现象,这个时候使用mount命令是无法直接卸载的,需要加上 -lf才能卸载
命令:umount /var/www/html(显示device is busy)
umount -lf /var/www/html