在现代 linux 系统管理中,高效地管理和分发软件包对于确保系统稳定性、安全性和便捷性至关重要。dnf(dandified yum)仓库作为 fedora、centos 8 及后续版本中用于软件包管理的核心组件,为用户提供了强大而便捷的软件包安装、更新和管理功能。与此同时,nfs(network file system)共享服务在实现多系统间的文件共享与协同工作方面发挥着重要作用。本文将深入探讨如何在 linux 环境下成功部署 dnf 仓库以及配置 nfs 共享服务。
一.dnf仓库概述与部署准备
1.dnf仓库简介
dnf 仓库是集中存储软件包及其元数据的服务器或本地目录。当用户在基于 dnf 的系统上执行软件包安装、更新操作时,dnf 工具会从配置的仓库中获取所需的软件包及其相关信息。使用仓库不仅极大地简化了软件管理流程,还能确保用户获取到经过验证和更新的软件版本,从而提高系统的可靠性和安全性。
2.部署环境需求
- 操作系统:推荐使用 centos 8 或 fedora 等支持 dnf 的主流 linux 发行版。
- 网络连接:仓库服务器和客户端需处于同一网络环境中,以确保能够正常通信和传输数据。
- 存储资源:为仓库服务器准备足够的磁盘空间,用于存储软件包文件。根据实际需求,可考虑使用大容量硬盘或分布式存储系统。
- 软件包:确保系统中已安装 createrepo_c 和 dnf-utils 等必要软件包,这些软件包可用于仓库的创建和管理。
3.仓库服务器准备
首先,需要从官方软件源下载所需的软件包。以 centos 8 为例,可通过以下命令挂载 centos 官方镜像软件源(假设已获取镜像文件),并将其配置为系统的软件源:
mkdir -p /media/cdrom mount -o loop /path/to/centos-8.iso /media/cdrom echo "/media/centos /etc/yum.repos.d/centos8.repo" >> /etc/yum.repos.d/cnetos8.repo
其中/path/to/centos-8.iso是实际的镜像文件路径
二.dnf仓库的创建
1.软件包目录结构规划
为 dnf 仓库创建一个专用的目录,例如 /www。在这个目录下,应按照软件包的分类(如不同的发行版本、架构等)创建子目录,以便于管理和查找软件包
mkdir -p /www/dnf_repo/centos8/x86_64
这种目录结构有助于提高仓库的组织性和可维护性。
2.软件包同步与填充
有多种方法可将所需的软件包同步到仓库目录中。一种常见的方式是通过订阅官方软件源并使用 dnf 安装工具进行下载。例如,要同步 centos 8 的基础软件包,可执行以下命令:
dnf --releaserver=8 --repo=baseos install --downloadonly --downloaddir=/www/dnf_repo/centos8/x86_64 软件包名称
通过多次执行类似命令,可将所需的软件包逐步添加到仓库中。另外,也可编写脚本自动化这个过程,提高效率。
3.创建仓库元数据
在将软件包放入仓库目录后,需要对仓库进行元数据生成操作,以使 dnf 工具能够正确识别和解析仓库内容。使用 createrepo_c 命令即可完成这一任务:
createrepo_c /www/dnf_repo/centos8/x86_64
此命令会生成包含软件包信息、依赖关系等元数据的文件,如 repodata 目录下的各种文件。这些元数据文件对于 dnf 工具的软件包搜索、版本比较和依赖解决至关重要。
三、配置dnf仓库
借助于 dnf软件仓库,可以完成安装、卸载、自动升级rpm 软件包等任务,能够自动査找并解决 rpm包之间的依赖关系,而无须管理员逐个、手工地去安装每个rpm 包,使管理员在维护大量 linux 服务器时更加轻松自如。特别是在拥有大量linux 主机的本地网络中,构建一台“源”服务器可以大大缓解软件安装、升级等对 internet 的依赖。dnf与yum完全兼容,提供了 yum兼容的命令行以及为扩展和插件提供的 api。使用 dnf 需要管理员权限,本章所有命令需要在管理员权限下执行。
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 文件。
2.配置main部分
/etc/dnf/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 安装的,而不是通过显式用户请求安装的,则只能通过 clen_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,不建议降低此值。 |
3.配置repository部分
repository 部分允许您定义定制化的 openeuler软件源仓库,各个仓库的名称不能相同,否则会引起冲突。配置repository 部分有两种方式,一种是直接配置/etc/dnf/nf.conf 文件中的“repository”部分,另外一种是配置/etc/yum.repos.d目录下的.repo 文件。直接配置/etc/dnf/dnf.conf 文件中的“repository”部分,下面是[repository]部分的一个最小配置
openeuler 提供在线的镜像源,地址:https://repo.openeuler.org/。以 openeuler 23.09的 aarch64版本为例,baseurl 可配置为https://repo.openeuler.org/openeuler-23. 09/0s/aarch64/。
选项说明:
参数 | 说明 |
name=repository_name | 软件仓库(repository )描述的字符串。 |
baseurl=repository_url | 软件仓库(repository)的地址。
|
四、创建本地软件源仓库
1.安装createrope软件包
dnf install createrepo
2.将需要的软件包复制到一个目录下,如/ww/ww.repo
3.创建软件源
createrepo /ww/ww.repo
五、添加、启用和禁用软件园
1.添加软件源
要定义一个新的软件源仓库,您可以在/etc/dnf/dnf.conf 文件中添加“repository”部分,或者在/ete/yum.repos.d/目录下添加“.repo”文件进行说明。建议您通过添加“.repo”的方式,每个软件源都有自己对应的“.repo”文件。
dnf config-manager --add-repo repository_url
其中repository_url 为repo 源地址。
2.启用软件源
dnf config-manager --set-enable repository
其中 repository 为新增.repo 文件中的repo id(可通过 dnf repolist 查询)。
也可以使用一个全局正则表达式,来启用所有匹配的软件源。
dnf config-manager --set-enable glob_expression
其中glob_expression 为对应的正则表达式,用于同时匹配多个repo id。
3.禁用软件源
dnf config-manager --set-disable repository
使用一个全局正则表达式来禁用所有匹配的软件源。
dnf config-manager --set-disable glob_expression
六、管理软件包
1.搜索软件包
可以使用 rpm 包名称、缩写或者描述搜索需要的 rpm 包。
dnf search package_name
2.列出软件包清单
列出系统中所有已安装的以及可用的rpm 包信息。
dnf list all
3.显示rpm包信息
显示一个或者多个 rpm 包信息,多个包之间以空格分隔。
dnf info httpd zip (以httpd,zip 两个包为例)
4.安装rpm包
安装一个软件包及其所有未安装的依赖。
dnf install package_name
也可以通过添加软件包名字同时安装多个软件包。配置文件/etc/dnf/dnf.conf 添加参数strict=false,运行 dnf命令参数添加--setopt=strict=0。
dnf install package_name package_name --setopt=strict=0
5.下载软件包
使用 dnf 下载软件包。
dnf download package_name
如果需要同时下载未安装的依赖,则加上--resolve。
dnf download --resolve package_name
6.删除软件包
卸载软件包以及相关的依赖软件包。
dnf remove package_name
七、管理软件包组
1.列出软件包清单
使用summary 参数,可以列出系统中所有己安装软件包组、可用的组,可用的环境组的数量。
dnf groups summary
列出所有软件包组和它们的组id。
dnf group list
2.显示软件包信息
要列出包含在一个软件包组中必须安装的包和可选包。
dnf group info glob_expression
3.安装软件包组
使用软件包组名称或它的 id进行安装。
dnf group install group_name | 使用软件包组名称安装 |
dnf group install groupid | 使用软件包组id安装 |
2.删除软件包组
卸载软件包组,您可以使用软件包组名称或它的id。
dnf group remove group_name | 使用软件包组名称删除 |
dnf group remove groupid | 使用软件包组id删除 |
八、检查并更新
1.检查更新
dnf check-update
2.升级
dnf update package_name | 升级软件包 |
dnf group update group_name | 升级软件包组 |
3.更新所有的包和依赖
dnf update
九、nfs共享存储服务
nfs 是一种基于 tcp/ip传输的网络文件系统协议,最初由sun 公司开发。通过使用nfs 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用 nfs 协议来共享数据存储是比较常见的做法,nfs也是nas存储设备必然支持的一种协议。
1.使用nfs发布共享资源
nfs 服务的实现依赖于rpc(remote process call,远端过程调用)机制,以完成远程到本地的映射过程。在 0peneuler 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 nfs共享服务,前者用于 nfs共享发布和访问,后者用于rpc支持。
1.安装nfs-utils、rpcbind软件包
2.设置共享目录
3.启动nfs服务程序
4.查看本机发布的nfs共享目录
十、客户端访问nfs共享资源
1.安装并启动rpcbind服务
2.手动挂载nfs共享目录
3.fstab自动挂载设置
修改/etc/fstab 配置文件,加入 nfs 共享目录的挂载设置。注意将文件系统类型设为 nfs,挂载参数建议添加_netdev(设备需要网络);若添加sof、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 nfs 共享资源了。
4.强制卸载nfs
nfs 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端nfs服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载。当出现卡死现象时,要重新开一个终端,执行cat/etc/rc.local 命令,查看挂载点。然后使用 umount 命令卸载。
到此这篇关于linux环境部署dnf仓库以及配置nfs共享服务的文章就介绍到这了,更多相关linux部署dnf和配置nfs内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论