活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Fedora Linux 35软件包管理完全指南 从基础安装到高级优化技巧助你轻松掌握系统软件管理

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-7 17:30:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Fedora Linux 35是一个功能强大的开源操作系统,它以其前沿的技术和稳定性而闻名。作为一款基于Red Hat的发行版,Fedora使用DNF(Dandified YUM)作为其主要软件包管理工具。软件包管理是Linux系统管理的核心部分,它允许用户安装、更新、删除和管理系统中的软件。本文将详细介绍Fedora Linux 35中的软件包管理,从基础操作到高级优化技巧,帮助读者全面掌握Fedora系统中的软件管理。

Fedora Linux 35软件包管理系统概述

DNF包管理器

DNF(Dandified YUM)是Fedora Linux 35中的默认软件包管理器,它是YUM(Yellowdog Updater, Modified)的下一代版本。DNF使用libsolv库进行依赖解析,提供了更快的性能和更低的内存占用。DNF的主要特点包括:

• 并行下载软件包
• 更好的依赖解决算法
• 支持模块化
• 提供历史记录功能
• 支持回滚操作

RPM包格式

Fedora使用RPM(Red Hat Package Manager)格式作为其软件包格式。RPM包包含了预编译的软件、配置文件、元数据和安装脚本。每个RPM包都有一个唯一的名称,格式通常为:name-version-release.architecture.rpm。

例如:firefox-95.0-2.fc35.x86_64.rpm

其中:

• name: 软件包名称(firefox)
• version: 软件版本(95.0)
• release: 发布版本(2.fc35,表示Fedora 35的第2次发布)
• architecture: 架构(x86_64,适用于64位系统)

软件仓库

Fedora使用软件仓库(Repository)来组织和分发软件包。软件仓库是一组RPM包的集合,通常通过网络访问。Fedora 35默认包含以下主要仓库:

• fedora: 官方主仓库,包含大部分软件包
• updates: 官方更新仓库,包含安全更新和bug修复
• updates-testing: 测试更新仓库,包含即将进入updates的软件包
• fedora-modular: 模块化仓库
• updates-modular: 模块化更新仓库

此外,还有第三方仓库如RPM Fusion,提供Fedora官方仓库中不包含的软件,尤其是多媒体编解码器和专有驱动程序。

基础软件包管理操作

安装软件包

使用DNF安装软件包非常简单。基本语法如下:
  1. sudo dnf install package_name
复制代码

例如,安装VLC媒体播放器:
  1. sudo dnf install vlc
复制代码

你也可以同时安装多个软件包:
  1. sudo dnf install vlc firefox gimp
复制代码

如果你想安装本地的RPM文件,可以使用:
  1. sudo dnf install /path/to/package.rpm
复制代码

DNF会自动处理依赖关系,下载并安装所有必需的软件包。

更新软件包

更新系统中的所有软件包:
  1. sudo dnf update
复制代码

或者使用upgrade命令(功能相同):
  1. sudo dnf upgrade
复制代码

更新特定的软件包:
  1. sudo dnf update package_name
复制代码

例如,只更新Firefox浏览器:
  1. sudo dnf update firefox
复制代码

删除软件包

删除不需要的软件包:
  1. sudo dnf remove package_name
复制代码

例如,删除VLC媒体播放器:
  1. sudo dnf remove vlc
复制代码

DNF会提示你确认删除操作,并显示将被删除的软件包列表,包括依赖该软件包的其他包。

搜索软件包

如果你不知道确切的软件包名称,可以使用search命令搜索:
  1. sudo dnf search keyword
复制代码

例如,搜索与”web browser”相关的软件包:
  1. sudo dnf search web browser
复制代码

你也可以使用provides命令搜索提供特定文件或功能的软件包:
  1. sudo dnf provides filename
复制代码

例如,查找提供/usr/bin/vim文件的软件包:
  1. sudo dnf provides /usr/bin/vim
复制代码

查询软件包信息

查看已安装或可用的软件包信息:
  1. sudo dnf info package_name
复制代码

例如,查看Firefox的信息:
  1. sudo dnf info firefox
复制代码

列出已安装的软件包:
  1. sudo dnf list installed
复制代码

列出所有可用的软件包:
  1. sudo dnf list available
复制代码

列出最近更新的软件包:
  1. sudo dnf list recent
复制代码

软件仓库管理

查看已启用的仓库

查看系统中所有已配置的仓库及其状态:
  1. sudo dnf repolist
复制代码

查看所有仓库(包括禁用的):
  1. sudo dnf repolist all
复制代码

启用和禁用仓库

临时启用一个仓库进行操作:
  1. sudo dnf --enablerepo=reponame command
复制代码

例如,临时启用rpmfusion-free仓库并安装软件:
  1. sudo dnf --enablerepo=rpmfusion-free install vlc
复制代码

永久启用仓库:
  1. sudo dnf config-manager --set-enabled reponame
复制代码

永久禁用仓库:
  1. sudo dnf config-manager --set-disabled reponame
复制代码

添加新仓库

添加RPM Fusion仓库(提供多媒体编解码器和专有软件):
  1. sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
复制代码

添加第三方仓库,例如Google Chrome仓库:
  1. sudo dnf config-manager --add-repo https://dl.google.com/linux/chrome/rpm/stable/x86_64/google-chrome.repo
复制代码

手动创建仓库文件:

1. 在/etc/yum.repos.d/目录下创建一个新的.repo文件,例如myrepo.repo:
  1. sudo nano /etc/yum.repos.d/myrepo.repo
复制代码

1. 添加以下内容:
  1. [myrepo]
  2. name=My Custom Repository
  3. baseurl=http://example.com/repo/$releasever/$basearch/
  4. enabled=1
  5. gpgcheck=0
复制代码

1. 保存文件并退出编辑器。

管理仓库缓存

清理DNF缓存:
  1. sudo dnf clean all
复制代码

只清理元数据缓存:
  1. sudo dnf clean metadata
复制代码

只清理软件包缓存:
  1. sudo dnf clean packages
复制代码

生成新的缓存:
  1. sudo dnf makecache
复制代码

高级软件包管理技巧

历史记录和回滚

DNF会记录所有软件包操作的历史,允许你查看和回滚这些操作。

查看历史记录:
  1. sudo dnf history list
复制代码

查看特定操作的详细信息:
  1. sudo dnf history info transaction_id
复制代码

例如,查看ID为5的操作详情:
  1. sudo dnf history info 5
复制代码

撤销一个操作:
  1. sudo dnf history undo transaction_id
复制代码

例如,撤销ID为5的操作:
  1. sudo dnf history undo 5
复制代码

重做一个之前撤销的操作:
  1. sudo dnf history redo transaction_id
复制代码

软件包组管理

Fedora将相关的软件包组织成组,方便用户一次性安装多个相关软件。

列出所有可用的软件包组:
  1. sudo dnf group list
复制代码

查看特定组的详细信息:
  1. sudo dnf group info "Group Name"
复制代码

例如,查看”Development Tools”组的详细信息:
  1. sudo dnf group info "Development Tools"
复制代码

安装一个软件包组:
  1. sudo dnf group install "Group Name"
复制代码

例如,安装”Development Tools”组:
  1. sudo dnf group install "Development Tools"
复制代码

删除一个软件包组:
  1. sudo dnf group remove "Group Name"
复制代码

模块化(Modularity)管理

Fedora引入了模块化概念,允许用户安装同一软件的不同版本流。

列出所有可用的模块:
  1. sudo dnf module list
复制代码

查看特定模块的详细信息:
  1. sudo dnf module info module_name
复制代码

例如,查看Node.js模块的详细信息:
  1. sudo dnf module info nodejs
复制代码

启用特定模块流:
  1. sudo dnf module enable module_name:stream
复制代码

例如,启用Node.js的12流:
  1. sudo dnf module enable nodejs:12
复制代码

安装模块化软件包:
  1. sudo dnf module install module_name:stream
复制代码

例如,安装Node.js的12流:
  1. sudo dnf module install nodejs:12
复制代码

重置模块选择:
  1. sudo dnf module reset module_name
复制代码

批量操作

使用wildcard进行批量操作:
  1. sudo dnf install "python3-*"
复制代码

这将安装所有以”python3-“开头的软件包。

使用文件列表进行批量安装:

1. 创建一个包含所需软件包名称的文本文件,例如packages.txt:
  1. vim
  2. git
  3. htop
  4. tree
复制代码

1. 使用以下命令安装文件中列出的所有软件包:
  1. sudo dnf install $(cat packages.txt)
复制代码

下载但不安装软件包

有时你可能只想下载软件包而不安装它,例如在离线环境中使用:
  1. sudo dnf download package_name
复制代码

下载软件包及其所有依赖:
  1. sudo dnf download --resolve package_name
复制代码

本地镜像和缓存管理

创建本地仓库镜像:

1. 安装reposync工具:
  1. sudo dnf install yum-utils
复制代码

1. 同步仓库到本地目录:
  1. sudo reposync -p /path/to/local/repo --repoid=reponame
复制代码

1. 创建本地仓库:
  1. sudo createrepo /path/to/local/repo
复制代码

1. 创建本地仓库配置文件:
  1. sudo nano /etc/yum.repos.d/local.repo
复制代码

添加以下内容:
  1. [local-repo]
  2. name=Local Repository
  3. baseurl=file:///path/to/local/repo
  4. enabled=1
  5. gpgcheck=0
复制代码

软件包管理优化

配置DNF插件

DNF支持各种插件来扩展其功能。查看已安装的插件:
  1. sudo dnf plugin list
复制代码

安装有用的DNF插件:
  1. sudo dnf install dnf-plugins-core
复制代码

一些常用的DNF插件包括:

• dnf-plugins-core: 提供核心插件,如config-manager和copr
• dnf-automatic: 自动更新插件
• dnf-utils: 提供额外的工具,如needs-restarting

配置并行下载

默认情况下,DNF可以并行下载多个软件包以提高速度。你可以通过编辑/etc/dnf/dnf.conf文件来调整并行下载的数量:
  1. sudo nano /etc/dnf/dnf.conf
复制代码

添加或修改以下行:
  1. max_parallel_downloads=5
复制代码

保存文件并退出。这将设置DNF最多同时下载5个软件包。

启用 fastestmirror 插件

fastestmirror插件可以自动选择最快的镜像源,加快下载速度:

1. 安装插件:
  1. sudo dnf install fastestmirror
复制代码

1. 编辑/etc/dnf/dnf.conf文件:
  1. sudo nano /etc/dnf/dnf.conf
复制代码

1. 添加以下行:
  1. fastestmirror=True
复制代码

保存文件并退出。

配置DNF缓存保留

默认情况下,DNF会在成功安装后删除下载的软件包。你可以配置DNF保留这些软件包以备将来使用:

编辑/etc/dnf/dnf.conf文件:
  1. sudo nano /etc/dnf/dnf.conf
复制代码

添加或修改以下行:
  1. keepcache=True
复制代码

保存文件并退出。现在DNF会将下载的软件包保留在/var/cache/dnf/目录中。

配置自动更新

你可以配置系统自动下载并安装安全更新:

1. 安装dnf-automatic包:
  1. sudo dnf install dnf-automatic
复制代码

1. 编辑配置文件:
  1. sudo nano /etc/dnf/automatic.conf
复制代码

1. 修改以下行:
  1. apply_updates = yes
复制代码

1. 启用并启动dnf-automatic服务:
  1. sudo systemctl enable --now dnf-automatic.timer
复制代码

使用Delta RPM减少更新下载量

Delta RPM包含旧版本和新版本之间的差异,而不是完整的软件包,可以显著减少更新时的下载量。

1. 安装deltarpm包:
  1. sudo dnf install deltarpm
复制代码

1. 编辑/etc/dnf/dnf.conf文件:
  1. sudo nano /etc/dnf/dnf.conf
复制代码

1. 添加以下行:
  1. deltarpm=True
复制代码

保存文件并退出。

故障排除

解决依赖问题

有时在安装或更新软件包时可能会遇到依赖问题。DNF通常会尝试自动解决这些问题,但如果失败,你可以尝试以下方法:

1. 清理缓存并重试:
  1. sudo dnf clean all
  2. sudo dnf update
复制代码

1. 使用--skip-broken选项跳过有问题的软件包:
  1. sudo dnf update --skip-broken
复制代码

1. 手动解决依赖问题,查看详细信息:
  1. sudo dnf update --verbose
复制代码

处理损坏的RPM数据库

如果RPM数据库损坏,你可能会遇到各种错误。重建RPM数据库:

1. 备份现有数据库:
  1. sudo mv /var/lib/rpm/__db* ~/rpmdb_backup/
复制代码

1. 重建数据库:
  1. sudo rpm --rebuilddb
复制代码

1. 清理DNF缓存:
  1. sudo dnf clean all
复制代码

1. 更新系统:
  1. sudo dnf update
复制代码

处理GPG密钥问题

如果你遇到GPG密钥验证错误,可以尝试以下方法:

1. 导入Fedora的GPG密钥:
  1. sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-35-primary
复制代码

1. 对于第三方仓库,导入相应的GPG密钥:
  1. sudo rpm --import https://example.com/gpg-key.asc
复制代码

1. 临时禁用GPG检查(不推荐,仅用于测试):
  1. sudo dnf install package_name --nogpgcheck
复制代码

处理锁定问题

如果另一个DNF进程正在运行,你可能会遇到锁定错误。你可以:

1. 等待另一个进程完成
2. 确定没有其他DNF进程在运行后,删除锁定文件:
  1. sudo rm -f /var/run/dnf/metadata.pid
复制代码

查看DNF日志

DNF操作日志位于/var/log/dnf.log文件中。你可以使用以下命令查看最近的操作:
  1. tail -f /var/log/dnf.log
复制代码

或者使用journalctl查看系统日志中的DNF相关条目:
  1. sudo journalctl -u dnf -f
复制代码

总结

Fedora Linux 35的软件包管理系统是一个强大而灵活的工具,通过DNF包管理器,用户可以轻松地安装、更新、删除和管理系统软件。本文详细介绍了从基础的软件包安装、更新和删除,到高级的仓库管理、历史回滚、模块化管理和性能优化技巧。

掌握这些技能将帮助你更有效地管理Fedora系统,无论是个人桌面使用还是服务器环境。DNF的强大功能和灵活性使其成为Fedora Linux 35中不可或缺的工具,通过合理配置和使用,你可以大大提高软件管理的效率和系统的稳定性。

希望本指南能够帮助你全面了解和掌握Fedora Linux 35的软件包管理,使你的Linux使用体验更加顺畅和高效。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则