【Linux从入门到精通】第10篇:软件包管理——Linux如何安装与卸载软件

目录

一、引言:Linux装软件的三种姿势

二、两大流派:APT与YUM/DNF的对比

[2.1 APT核心命令(Ubuntu/Debian)](#2.1 APT核心命令(Ubuntu/Debian))

[2.2 YUM/DNF核心命令(CentOS/RHEL)](#2.2 YUM/DNF核心命令(CentOS/RHEL))

[2.3 命令速查表](#2.3 命令速查表)

三、换源加速:国内镜像源配置指南

[3.1 Ubuntu换阿里源](#3.1 Ubuntu换阿里源)

[3.2 CentOS换阿里源](#3.2 CentOS换阿里源)

[3.3 常见换源问题排查](#3.3 常见换源问题排查)

四、源码编译安装:三部曲的艺术

[4.1 准备工作:安装编译工具链](#4.1 准备工作:安装编译工具链)

[4.2 三部曲详解](#4.2 三部曲详解)

[4.3 完整实战:源码编译安装Nginx](#4.3 完整实战:源码编译安装Nginx)

[4.4 源码安装的优缺点](#4.4 源码安装的优缺点)

五、补充:离线包安装简介

六、本篇小结

动手练习

七、第一阶段总结与下篇预告


一、引言:Linux装软件的三种姿势

还记得Windows下装软件的体验吗?下载一个.exe文件,双击,一路"下一步",完成。但在Linux世界里,这套逻辑几乎不存在------你很少会去网站下载安装包,而是通过包管理器从官方仓库直接获取软件。

Linux安装软件主要有三种方式:

方式 适用场景 优缺点
包管理器(在线) 95%的日常需求 自动解决依赖,一条命令搞定
离线包安装 内网环境、无网络 需手动处理依赖关系
源码编译 需要特定版本或定制功能 最灵活,但门槛最高

这三种方式构成了Linux软件管理的完整技能树。今天我们先讲最常用的在线包管理,再讲需要特殊版本的源码编译,离线包安装作为补充知识点简要提及。


二、两大流派:APT与YUM/DNF的对比

Linux世界有两大主流发行版家族,它们的包管理工具完全不同:

对比维度 Debian系(APT) RedHat系(YUM/DNF)
代表系统 Ubuntu、Debian、Linux Mint CentOS、RHEL、Fedora
包管理器 apt yum(CentOS 7)/ dnf(CentOS 8+)
软件包格式 .deb .rpm
配置文件 /etc/apt/sources.list /etc/yum.repos.d/*.repo

关键认知dnfyum的升级版,CentOS 8及以上版本默认使用dnf。二者的命令结构几乎相同,只需把yum替换成dnf即可。

2.1 APT核心命令(Ubuntu/Debian)

APT(Advanced Package Tool)是Debian系的标准包管理器,使用前需要加sudo获取管理员权限。

bash

复制代码
# 更新软件源缓存(装软件前必做,确保获取最新版本信息)
sudo apt update

# 安装软件(自动解决依赖)
sudo apt install -y nginx

# 卸载软件(保留配置文件)
sudo apt remove nginx

# 彻底卸载(包括配置文件)
sudo apt purge nginx

# 升级所有已安装的软件
sudo apt upgrade -y

# 搜索软件包
apt search nginx

# 清理不再需要的依赖包
sudo apt autoremove -y

2.2 YUM/DNF核心命令(CentOS/RHEL)

YUM(Yellowdog Updater, Modified)是RedHat系的经典包管理器,DNF是其现代化继任者。

bash

复制代码
# 更新软件源缓存
sudo dnf makecache          # CentOS 8+
sudo yum makecache          # CentOS 7

# 安装软件
sudo dnf install -y nginx
sudo yum install -y nginx

# 卸载软件
sudo dnf remove nginx
sudo yum remove nginx

# 升级所有软件
sudo dnf update -y
sudo yum update -y

# 搜索软件包
dnf search nginx
yum search nginx

# 清理缓存(释放磁盘空间)
sudo dnf clean all
sudo yum clean all

注意 :安装时加-y参数可以自动确认所有提示,无需手动输入"y",大幅提升效率。

2.3 命令速查表

操作 APT(Ubuntu) DNF(CentOS 8+) YUM(CentOS 7)
更新缓存 sudo apt update sudo dnf makecache sudo yum makecache
安装软件 sudo apt install 软件名 sudo dnf install 软件名 sudo yum install 软件名
卸载软件 sudo apt remove 软件名 sudo dnf remove 软件名 sudo yum remove 软件名
彻底卸载 sudo apt purge 软件名 --- ---
升级系统 sudo apt upgrade sudo dnf update sudo yum update
搜索软件 apt search 关键词 dnf search 关键词 yum search 关键词

三、换源加速:国内镜像源配置指南

默认情况下,Linux的软件源服务器在国外,国内访问速度很慢,经常出现"下载速度几十KB"甚至"无法连接"的情况。配置国内镜像源是装完系统的第一步

3.1 Ubuntu换阿里源

bash

复制代码
# 1. 备份原始源文件(防止改坏后无法恢复)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 2. 编辑源文件
sudo vim /etc/apt/sources.list

清空原有内容,粘贴以下内容(以Ubuntu 22.04为例,版本代号为jammy):

text

复制代码
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

保存退出后更新缓存:

bash

复制代码
sudo apt update

版本代号对照

  • Ubuntu 20.04 → focal

  • Ubuntu 22.04 → jammy

  • Ubuntu 24.04 → noble

3.2 CentOS换阿里源

bash

复制代码
# 1. 备份原有源
cd /etc/yum.repos.d/
sudo mkdir backup && sudo mv *.repo backup/

# 2. 下载阿里云源(注意选择对应系统版本)
# CentOS 7
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# CentOS 8 / CentOS Stream 9
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

# 3. 清理旧缓存并生成新缓存
sudo yum clean all      # CentOS 7
sudo dnf clean all      # CentOS 8+
sudo yum makecache      # 或 sudo dnf makecache

验证换源成功

bash

复制代码
yum repolist    # 或 dnf repolist
# 如果显示阿里云相关仓库且无报错,说明换源成功

3.3 常见换源问题排查

问题现象 可能原因 解决方案
404 Not Found 版本代号写错 核对系统版本和代号
无法连接仓库 网络不通 ping mirrors.aliyun.com 测试
缓存生成失败 源文件格式错误 检查是否有多余空格或换行

四、源码编译安装:三部曲的艺术

包管理器虽然方便,但有时你会遇到必须从源码编译的场景:

  • 官方仓库没有你需要的软件版本(比如需要特定版本的Nginx)

  • 需要开启默认关闭的编译选项

  • 想要将软件安装到自定义路径

源码编译安装遵循经典的三部曲./configuremakemake install

4.1 准备工作:安装编译工具链

编译源码需要一套编译工具,不同发行版安装方式不同:

bash

复制代码
# Ubuntu/Debian
sudo apt update
sudo apt install -y build-essential

# CentOS/RHEL
sudo dnf groupinstall -y "Development Tools"

4.2 三部曲详解

第一步:./configure(配置检查)

进入解压后的源码目录,执行./configure脚本。这个阶段主要做两件事:

  1. 检查编译环境:确认系统是否安装了必要的编译器和依赖库

  2. 生成Makefile:根据用户指定的选项,生成指导编译的配置文件

bash

复制代码
# 最常见的用法:指定安装路径
./configure --prefix=/usr/local/myapp

# 查看所有可配置选项
./configure --help

--prefix参数指定软件安装的目标目录。不指定的话,默认安装到/usr/local

踩坑提醒 :如果./configure报错,通常是缺少依赖库。仔细阅读错误信息,安装对应的-dev-devel包即可。

第二步:make(编译)

根据Makefile的指令,调用编译器将源代码编译成可执行文件:

bash

复制代码
# 基本编译
make

# 使用多核心加速编译(-j后面跟CPU核心数)
make -j4

这步最耗时,取决于软件大小和机器性能,可能从几十秒到几十分钟不等。

第三步:make install(安装)

将编译好的文件复制到--prefix指定的目录:

bash

复制代码
sudo make install

需要sudo是因为安装目录(如/usr/local)通常需要管理员权限。

进阶技巧:将编译和安装合并为一条命令:

bash

复制代码
make && sudo make install

&&的含义是:前一条命令执行成功,才执行后一条命令。

4.3 完整实战:源码编译安装Nginx

bash

复制代码
# 1. 安装编译依赖
sudo apt install -y build-essential libpcre3-dev libssl-dev zlib1g-dev

# 2. 下载源码包
wget http://nginx.org/download/nginx-1.24.0.tar.gz

# 3. 解压并进入目录
tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0

# 4. 配置(指定安装到/usr/local/nginx,开启SSL模块)
./configure --prefix=/usr/local/nginx --with-http_ssl_module

# 5. 编译并安装
make -j4 && sudo make install

# 6. 验证安装
/usr/local/nginx/sbin/nginx -v

4.4 源码安装的优缺点

优点 缺点
可以安装任意版本 编译耗时较长
能够自定义编译选项 需要手动解决依赖问题
优化适配当前硬件 卸载麻烦(没有统一的卸载命令)

卸载源码安装的软件

  • 如果保留了源码目录:sudo make uninstall

  • 如果已删除源码:手动删除安装目录下的文件

新手建议:能用包管理器装的软件,尽量不用源码编译。只有在官方仓库没有所需版本、或者需要开启特定编译选项时,才考虑源码安装。


五、补充:离线包安装简介

对于没有外网的内网服务器,可以使用离线包安装:

  • Debian系 :使用.deb包 + dpkg -i命令

  • RedHat系 :使用.rpm包 + rpm -ivh命令

但离线包不会自动解决依赖,可能出现"缺少依赖包"的死循环。推荐在有网的机器上用apt downloadyum downloadonly提前下载好所有依赖包,再整体拷贝到内网机器。

由于篇幅限制,离线安装的详细操作不在本文展开,有兴趣的读者可查阅相关文档。


六、本篇小结

今天我们掌握了Linux软件管理的完整技能树:

两大包管理器体系

  • Ubuntu/Debian用apt,CentOS/RHEL用yum(旧)或dnf(新)

  • 核心操作:update → install → remove → upgrade

镜像源加速

  • 装完系统第一件事:换国内源

  • 阿里云、清华源是首选

源码编译三部曲

  • ./configure:检查环境、生成配置

  • make:编译源码

  • make install:安装到目标目录

记忆口诀

Ubuntu用apt,CentOS用dnf,

装前先更新,装时加-y,

嫌慢换国内源,定制才编译。

动手练习

bash

复制代码
# 1. 查看当前系统的包管理器版本
apt --version    # Ubuntu
dnf --version    # CentOS 8+

# 2. 搜索一个你感兴趣的软件包
apt search htop
dnf search htop

# 3. 安装htop(一个增强版系统监控工具)
sudo apt install -y htop
sudo dnf install -y htop

# 4. 运行htop体验一下,按F10退出
htop

# 5. 卸载htop
sudo apt remove -y htop
sudo dnf remove -y htop

七、第一阶段总结与下篇预告

至此,Linux从入门到精通的第一阶段(基础筑基)就全部完成了。回顾这10篇文章,我们走过了:

  1. Linux世界观与发行版选择

  2. 三种方式搭建环境

  3. 目录树结构与路径导航

  4. 文件增删改查

  5. 内容查看与文件搜索

  6. 管道、重定向与通配符

  7. Vim编辑器生存指南

  8. 用户与权限管理(上)

  9. 用户与权限管理(下)

  10. 软件包管理

你已经具备了在Linux环境中独立生存的基础能力。

下一篇我们将进入第二阶段:核心机制与系统管理 。首先登场的是进程管理 ------程序是怎么跑起来的?如何查看和管理正在运行的程序?pstopkill这些命令将帮你接管系统的"灵魂"。


延伸思考 :执行which ls,你会发现ls命令其实是一个编译好的二进制程序,存放在/usr/bin/ls。那么问题来了------当你输入ls并回车时,系统是怎么找到这个程序的?答案藏在一个叫PATH的环境变量里,执行echo $PATH看看输出,你发现了什么规律?

相关推荐
zzzyyy5382 小时前
Linux进程控制(2)
linux·服务器
热爱Liunx的丘丘人2 小时前
PlayBook常用的模块编写
linux·服务器·ansible
wellc2 小时前
Nginx作用以及应用场景
运维·nginx
SilentSamsara2 小时前
etcd 运维:数据一致性、备份恢复与性能调优
运维·服务器·数据库·kubernetes·kubectl·k8s·etcd
lclcooky2 小时前
Nginx代理到https地址忽略证书验证配置
运维·nginx·https
青槿吖2 小时前
Feign 微服务远程调用指南:告别手写 RestTemplate
java·redis·后端·spring·微服务·云原生·架构
前端达人2 小时前
第12课:MCP 与 Hooks——给 Claude Code 装上插件和自动化引擎
运维·自动化
Zzzzmo_2 小时前
【JavaEE】多线程04—线程池/定时器
java·线程池·定时器·javaee
Makoto_Kimur2 小时前
Spring用了哪些设计模式?
java·spring·设计模式