Skip to content

AlmaLinux 软件安装与卸载指南

本指南详细介绍 AlmaLinux 系统中软件包的安装、卸载、更新和管理方法,帮助您高效管理系统软件环境。

DNF 包管理器基础

DNF (Dandified YUM) 是 AlmaLinux 的默认包管理器,提供了强大的软件包管理功能。

基本语法

bash
# DNF 命令格式
sudo dnf [选项] [命令] [软件包名]

# 查看DNF版本
dnf --version

# 获取帮助信息
dnf help
dnf help install  # 查看特定命令帮助

配置文件位置

bash
# 主配置文件
/etc/dnf/dnf.conf

# 仓库配置目录
/etc/yum.repos.d/

# 缓存目录
/var/cache/dnf/

软件安装操作

标准安装方法

安装单个软件包

bash
# 基本安装命令
sudo dnf install package_name

# 示例:安装文本编辑器
sudo dnf install vim
sudo dnf install nano
sudo dnf install emacs

# 安装时显示详细信息
sudo dnf install -v httpd

安装多个软件包

bash
# 同时安装多个包
sudo dnf install package1 package2 package3

# 示例:安装开发工具
sudo dnf install git gcc python3 nodejs

# 使用通配符安装
sudo dnf install "python3-*"

从文件安装 (RPM)

bash
# 安装本地RPM包
sudo dnf install /path/to/package.rpm

# 示例:安装下载的RPM包
wget https://example.com/software.rpm
sudo dnf install ./software.rpm

# 强制安装 (谨慎使用)
sudo dnf install --nogpgcheck ./package.rpm

软件组安装

查看可用软件组

bash
# 列出所有软件组
dnf group list

# 查看已安装的组
dnf group list installed

# 查看特定组信息
dnf group info "Development Tools"

安装软件组

bash
# 安装开发工具组
sudo dnf group install "Development Tools"

# 安装桌面环境
sudo dnf group install "Server with GUI"
sudo dnf group install "Workstation"

# 安装最小化桌面
sudo dnf group install "GNOME Desktop Environment"

从特定仓库安装

启用第三方仓库

bash
# 安装EPEL仓库
sudo dnf install epel-release

# 安装RPM Fusion仓库
sudo dnf install --nogpgcheck \
  https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm

从指定仓库安装

bash
# 从特定仓库安装
sudo dnf --enablerepo=epel install package_name

# 临时禁用仓库
sudo dnf --disablerepo=* --enablerepo=base install package_name

# 查看包来源
dnf info package_name

软件搜索与查询

搜索软件包

基本搜索

bash
# 搜索包名
dnf search keyword

# 示例:搜索Web服务器
dnf search web server
dnf search apache
dnf search nginx

# 精确搜索包名
dnf list | grep keyword

高级搜索

bash
# 搜索包的描述内容
dnf search all keyword

# 搜索文件提供者
dnf provides */bin/python3
dnf provides /usr/bin/wget

# 查看包详细信息
dnf info package_name

查询已安装软件

列出已安装包

bash
# 列出所有已安装包
dnf list installed

# 分页显示
dnf list installed | less

# 搜索已安装的特定包
dnf list installed | grep keyword

# 统计已安装包数量
dnf list installed | wc -l

查看包依赖关系

bash
# 查看包依赖
dnf deplist package_name

# 查看反向依赖
dnf repoquery --whatrequires package_name

# 查看包提供的文件
dnf repoquery -l package_name

软件更新管理

系统更新

检查可用更新

bash
# 检查所有可更新包
dnf check-update

# 仅列出安全更新
dnf updateinfo list security

# 查看更新详情
dnf updateinfo info

执行更新操作

bash
# 更新所有软件包
sudo dnf update

# 更新特定软件包
sudo dnf update package_name

# 仅安装安全更新
sudo dnf update --security

# 更新时排除特定包
sudo dnf update --exclude=kernel*

自动更新配置

bash
# 安装自动更新工具
sudo dnf install dnf-automatic

# 配置自动更新
sudo vim /etc/dnf/automatic.conf

# 启用自动更新服务
sudo systemctl enable --now dnf-automatic.timer

# 查看自动更新状态
systemctl status dnf-automatic.timer

版本控制

保持特定版本

bash
# 防止包自动更新
sudo dnf mark install package_name

# 锁定特定版本
echo "exclude=package_name" >> /etc/dnf/dnf.conf

# 降级软件包
sudo dnf downgrade package_name

查看版本历史

bash
# 查看事务历史
dnf history

# 查看特定事务详情
dnf history info transaction_id

# 撤销事务
sudo dnf history undo transaction_id

软件卸载操作

基本卸载

卸载单个软件包

bash
# 基本卸载命令
sudo dnf remove package_name

# 示例:卸载Apache
sudo dnf remove httpd

# 卸载时显示详细信息
sudo dnf remove -v package_name

卸载多个软件包

bash
# 同时卸载多个包
sudo dnf remove package1 package2 package3

# 使用通配符卸载
sudo dnf remove "python3-*"

# 批量卸载示例
sudo dnf remove firefox thunderbird libreoffice-*

彻底清理

卸载并清理依赖

bash
# 卸载包及未使用依赖
sudo dnf autoremove package_name

# 清理所有孤立依赖
sudo dnf autoremove

# 强制卸载 (谨慎使用)
sudo rpm -e --nodeps package_name

清理配置文件

bash
# 查找配置文件残留
find /etc -name "*package_name*"
find /var -name "*package_name*"

# 手动删除配置目录
sudo rm -rf /etc/package_name/
sudo rm -rf /var/lib/package_name/

# 清理用户配置
rm -rf ~/.config/package_name/

软件组卸载

卸载软件组

bash
# 卸载开发工具组
sudo dnf group remove "Development Tools"

# 卸载桌面环境
sudo dnf group remove "Server with GUI"

# 查看组卸载后遗留包
dnf group info "Group Name"

包管理最佳实践

系统维护

清理缓存

bash
# 清理包缓存
sudo dnf clean packages

# 清理元数据缓存
sudo dnf clean metadata

# 清理所有缓存
sudo dnf clean all

# 查看缓存使用情况
du -sh /var/cache/dnf/

重建数据库

bash
# 重建RPM数据库
sudo rpm --rebuilddb

# 重建DNF缓存
sudo dnf makecache

# 修复数据库损坏
sudo dnf distro-sync

安全管理

GPG密钥管理

bash
# 查看已导入密钥
rpm -qa gpg-pubkey*

# 导入GPG密钥
sudo rpm --import /path/to/key.asc

# 验证包签名
rpm -Kv package.rpm

# 配置GPG检查
echo "gpgcheck=1" >> /etc/dnf/dnf.conf

仓库安全

bash
# 验证仓库配置
dnf repolist -v

# 禁用不安全仓库
sudo dnf config-manager --disable repo_name

# 临时跳过GPG检查 (不推荐)
sudo dnf install --nogpgcheck package_name

故障排除

常见问题解决

依赖冲突

bash
# 检查依赖冲突
dnf deplist package_name

# 强制解决冲突
sudo dnf install --allowerasing package_name

# 使用模块解决版本冲突
dnf module list
sudo dnf module install package_name:version

网络问题

bash
# 测试仓库连接
dnf repolist enabled

# 使用代理
sudo dnf --setopt=proxy=http://proxy:port install package_name

# 超时设置
echo "timeout=300" >> /etc/dnf/dnf.conf

空间不足

bash
# 检查磁盘空间
df -h /var/cache/dnf/

# 清理下载包
sudo dnf clean packages

# 移动缓存目录
sudo mkdir /home/dnf-cache
sudo mv /var/cache/dnf/* /home/dnf-cache/
sudo ln -s /home/dnf-cache /var/cache/dnf

恢复操作

系统恢复

bash
# 恢复到最近事务前状态
sudo dnf history undo last

# 重新安装损坏的包
sudo dnf reinstall package_name

# 系统同步修复
sudo dnf distro-sync

配置恢复

bash
# 重置DNF配置
sudo cp /etc/dnf/dnf.conf.rpmnew /etc/dnf/dnf.conf

# 重置仓库配置
sudo dnf clean all
sudo dnf update almalinux-repos

第三方软件管理

Flatpak应用

安装Flatpak

bash
# 安装Flatpak支持
sudo dnf install flatpak

# 添加Flathub仓库
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# 安装Flatpak应用
flatpak install flathub org.gimp.GIMP

Snap应用

安装Snapd

bash
# 安装Snap支持
sudo dnf install snapd
sudo systemctl enable --now snapd.socket

# 创建符号链接
sudo ln -s /var/lib/snapd/snap /snap

# 安装Snap应用
sudo snap install code --classic

AppImage应用

使用AppImage

bash
# 下载AppImage应用
wget https://example.com/app.AppImage

# 设置执行权限
chmod +x app.AppImage

# 运行应用
./app.AppImage

# 系统集成 (可选)
sudo dnf install libappimage
./app.AppImage --appimage-extract-and-run

通过掌握这些软件管理技能,您可以有效地维护 AlmaLinux 系统,确保软件环境的稳定性和安全性。

基于 MIT 许可发布