当前位置: 首页 > news >正文

Linux软件安装终极指南:APT与YUM双雄对决

前言

Linux世界的软件安装方式多样,但最核心、最高效的莫过于包管理工具。掌握apt和yum这两个主流包管理器,就能解决90%的软件安装需求。本文深度对比两大阵营的安装操作,涵盖软件搜索、安装、更新、卸载全流程,助你从安装新手蜕变为包管理专家。

一、发行版选择:先认准你的系统

关键第一步:确认你的Linux发行版

bash

查看系统信息

cat /etc/os-release

lsb_release -a
常见结果:

包含"Ubuntu"、"Debian"字样 → APT阵营

包含"CentOS"、“RHEL”、"Fedora"字样 → YUM/DNF阵营

包含"openSUSE"字样 → Zypper阵营(本文略)

二、APT阵营:Debian/Ubuntu系列

  1. 基础操作四部曲
    bash

1. 更新软件源(必须!获取最新软件列表)

sudo apt update

2. 升级已安装的软件(可选)

sudo apt upgrade

3. 搜索软件包

apt search nginx

4. 安装软件

sudo apt install nginx
2. 高级安装技巧
bash

安装特定版本

sudo apt install nginx=1.18.0-0ubuntu1

安装多个软件

sudo apt install nginx mysql-server php-fpm

重新安装(修复损坏)

sudo apt reinstall nginx

安装build-essential(编译环境)

sudo apt install build-essential
3. 管理已安装软件
bash

查看已安装软件

apt list --installed | grep nginx

查看软件详情

apt show nginx

卸载软件(保留配置文件)

sudo apt remove nginx

完全卸载(删除配置文件)

sudo apt purge nginx

自动清理无用依赖

sudo apt autoremove
4. APT源配置
配置文件位置:/etc/apt/sources.list

bash

备份原配置

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

修改源(如更换为阿里云源)

sudo sed -i ‘s/archive.ubuntu.com/mirrors.aliyun.com/g’ /etc/apt/sources.list

更新生效

sudo apt update

三、YUM/DNF阵营:CentOS/RHEL系列

  1. 基础操作流程
    bash

1. 更新缓存(类似apt update)

sudo yum check-update

2. 搜索软件

yum search nginx

3. 安装软件

sudo yum install nginx

4. 查看已安装

yum list installed | grep nginx
2. DNF:YUM的下一代
CentOS 8/RHEL 8/Fedora默认使用DNF,语法兼容YUM但性能更优:

bash

基础操作(将yum替换为dnf即可)

sudo dnf update
sudo dnf install nginx
sudo dnf remove nginx
3. 特殊功能对比APT
bash

查看哪个软件包提供某个命令

yum provides /usr/bin/nginx

查看软件包依赖树

yum deplist nginx

安装开发工具组

sudo yum groupinstall “Development Tools”

启用EPEL仓库(额外软件源)

sudo yum install epel-release
4. RPM包的直接安装
bash

下载RPM包并安装

wget https://example.com/package.rpm
sudo rpm -ivh package.rpm # 安装
sudo rpm -e package # 卸载

使用YUM安装本地RPM(自动解决依赖)

sudo yum localinstall package.rpm

四、实战对比:安装Nginx全流程

Ubuntu (APT) 方式
bash

1. 更新源

sudo apt update

2. 安装Nginx

sudo apt install nginx

3. 启动服务

sudo systemctl start nginx

4. 设置开机自启

sudo systemctl enable nginx

5. 验证安装

nginx -v
CentOS (YUM) 方式
bash

1. 添加EPEL仓库(Nginx在EPEL中)

sudo yum install epel-release

2. 更新缓存

sudo yum check-update

3. 安装Nginx

sudo yum install nginx

4. 启动服务

sudo systemctl start nginx

5. 设置开机自启

sudo systemctl enable nginx

6. 防火墙放行80端口

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

五、故障排除与技巧

  1. 常见错误解决
    bash

错误1:找不到软件包

解决:更新软件源缓存

sudo apt update # Ubuntu
sudo yum check-update # CentOS

错误2:依赖冲突

解决:尝试修复依赖

sudo apt --fix-broken install # Ubuntu
sudo yum clean all && sudo yum update # CentOS

错误3:公钥验证失败

解决:导入缺失的GPG密钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 缺失的KEY
2. 跨发行版命令对照表
操作 Ubuntu/Debian (APT) CentOS/RHEL (YUM)
更新源 sudo apt update sudo yum check-update
安装软件 sudo apt install 包名 sudo yum install 包名
卸载软件 sudo apt remove 包名 sudo yum remove 包名
搜索软件 apt search 关键词 yum search 关键词
列出已安装 apt list --installed yum list installed
查看详情 apt show 包名 yum info 包名
清理缓存 sudo apt clean sudo yum clean all

六、进阶:其他安装方式

  1. 源码编译安装(通用但复杂)
    bash

典型流程

wget https://example.com/software.tar.gz
tar -zxvf software.tar.gz
cd software/
./configure
make
sudo make install
2. Snap通用包(Ubuntu特色)
bash

安装Snapd

sudo apt install snapd

通过Snap安装软件

sudo snap install vscode --classic
3. AppImage(跨发行版)
bash

下载后直接赋予执行权限

chmod +x software.AppImage
./software.AppImage

七、最佳实践总结

优先使用官方包管理器:APT/YUM能自动处理依赖,最安全稳定

保持系统更新:定期执行sudo apt update && sudo apt upgrade或sudo yum update

谨慎添加第三方源:只信任知名仓库,避免系统不稳定

生产环境固定版本:使用apt install 包名=版本号锁定特定版本

记录安装操作:维护安装脚本或文档,便于重现环境

一句话选择指南:

个人/桌面用户 → Ubuntu + APT,生态丰富易用

服务器/企业用户 → CentOS/RHEL + YUM,稳定可靠

追求新技术 → Fedora + DNF,前沿但可能不够稳定

掌握这两大包管理器的核心操作,你就能在Linux世界自由安装任何软件。记住:90%的安装问题,都能通过更新软件源和阅读错误信息解决。

http://www.jsqmd.com/news/330394/

相关文章:

  • 基于java的会议室预约系统的设计与实现-开题报告
  • 基于opensees梁柱节点建模 十字节点模拟 [1]采用JOINT2d节点单元或者element
  • 【开题答辩全过程】以 基于Python爬取学院师资队伍信息的设计与分析为例,包含答辩的问题和答案
  • 基于Java的排队预约系统的设计与实现开题报告
  • 基于Java的二手物品交易系统 开题报告(15)
  • 【开题答辩全过程】以 高校考勤管理系统为例,包含答辩的问题和答案
  • 稀土合金接地材核心行业标准+权威数据汇总
  • 基于Java的五子棋游戏的设计与实现-开题报告
  • Flutter + OpenHarmony 游戏开发进阶:游戏主循环——AnimationController 实现 60fps 稳定帧率
  • 完整教程:云原生环境Kubernetes内存回收策略(万字长文慎入)
  • Flutter + OpenHarmony 游戏开发进阶:CustomPainter 手绘游戏世界——从球体到轨道
  • Flutter + OpenHarmony 游戏开发进阶:主菜单架构与历史最高分持久化
  • 12306抢票软件(自动抢票、定时抢票、自动支付、自动候补)
  • 互联网大厂Java面试实战:从Spring Boot到Kafka的技术与业务场景解析
  • 容器编排 - 了解K8s(pod, deployment,service,lable等概念)
  • 容器编排 - K8s - 配置文件参数说明和基础命令
  • 用于管理和协调多个进程:用于Docker容器的Supervisor配置文件
  • 【动手学深度学习】第三课 数据预处理
  • 揭秘AI教材编写秘籍,使用AI写教材,有效控制查重率!
  • AI应用测试用例之千问工具(4)
  • AI写论文不用愁!4款AI论文写作利器,一键解决写作难题!
  • 2026年1月31日-2天10万Star!GitHub史上最快开源项目OpenClaw,手把手教你免费实现部署私人AI助手
  • VASP+PHONOPY+pypolymlpj计算不同温度下声子谱,附批处理脚本
  • 图像算法优化常用方式-vivado hls设计
  • 深入解析:RIB表与FIB表的区别
  • 实用指南:让 ETL 更懂语义:DataWorks 支持数据集成 AI 辅助处理能力
  • 电子学会青少年软件编程(C语言)等级考试试卷(一级)2025年12月
  • [运营实战] 节日大促图片来不及做?浅析如何用 AI 批量汉化与修改“季节性”卖点图,灵活承接旺季流量
  • vue 插槽详解
  • 语法:一文搞懂“双宾语”与“宾语补足语”