【Linux从入门到精通】第10篇:软件包管理——Linux如何安装与卸载软件
目录
一、引言:Linux装软件的三种姿势
二、两大流派:APT与YUM/DNF的对比
2.1 APT核心命令(Ubuntu/Debian)
2.2 YUM/DNF核心命令(CentOS/RHEL)
2.3 命令速查表
三、换源加速:国内镜像源配置指南
3.1 Ubuntu换阿里源
3.2 CentOS换阿里源
3.3 常见换源问题排查
四、源码编译安装:三部曲的艺术
4.1 准备工作:安装编译工具链
4.2 三部曲详解
4.3 完整实战:源码编译安装Nginx
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 |
关键认知:dnf是yum的升级版,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 →
focalUbuntu 22.04 →
jammyUbuntu 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)
需要开启默认关闭的编译选项
想要将软件安装到自定义路径
源码编译安装遵循经典的三部曲:./configure→make→make 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脚本。这个阶段主要做两件事:
检查编译环境:确认系统是否安装了必要的编译器和依赖库
生成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 download或yum 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篇文章,我们走过了:
Linux世界观与发行版选择
三种方式搭建环境
目录树结构与路径导航
文件增删改查
内容查看与文件搜索
管道、重定向与通配符
Vim编辑器生存指南
用户与权限管理(上)
用户与权限管理(下)
软件包管理
你已经具备了在Linux环境中独立生存的基础能力。
下一篇我们将进入第二阶段:核心机制与系统管理。首先登场的是进程管理——程序是怎么跑起来的?如何查看和管理正在运行的程序?ps、top、kill这些命令将帮你接管系统的“灵魂”。
延伸思考:执行which ls,你会发现ls命令其实是一个编译好的二进制程序,存放在/usr/bin/ls。那么问题来了——当你输入ls并回车时,系统是怎么找到这个程序的?答案藏在一个叫PATH的环境变量里,执行echo $PATH看看输出,你发现了什么规律?
