
🍃 予枫 :个人主页
📚 个人专栏 : 《Java 从入门到起飞》《读研码农的干货日常》
💻 Debug 这个世界,Return 更好的自己!
引言
做Linux开发或运维的朋友,几乎每天都会和软件安装打交道------换yum源报错、离线环境装不上依赖、源码编译卡壳在make步骤,这些问题是不是让你反复踩坑?其实不管是CentOS的yum/dnf、Ubuntu的apt,还是rpm/deb离线安装、源码编译,核心逻辑都很简单。今天就一次性把Linux软件安装与包管理讲透,新手也能跟着实操,从此告别"安装失败"的烦恼!
文章目录
- 引言
- 一、前言:为什么要学好Linux包管理?
- 二、在线安装:yum/dnf(CentOS)与apt(Ubuntu)实操
-
- [2.1 CentOS:yum/dnf使用(换源+安装+卸载)](#2.1 CentOS:yum/dnf使用(换源+安装+卸载))
-
- [2.1.1 为什么要换源?](#2.1.1 为什么要换源?)
- [2.1.2 yum换源实操(CentOS 7)](#2.1.2 yum换源实操(CentOS 7))
- [2.1.3 dnf使用(CentOS 8+)](#2.1.3 dnf使用(CentOS 8+))
- [2.1.4 yum/dnf核心命令(必记)](#2.1.4 yum/dnf核心命令(必记))
- [2.2 Ubuntu:apt使用(换源+安装+卸载)](#2.2 Ubuntu:apt使用(换源+安装+卸载))
-
- [2.2.1 apt换源实操(Ubuntu 20.04/22.04)](#2.2.1 apt换源实操(Ubuntu 20.04/22.04))
- [2.2.2 apt核心命令(必记)](#2.2.2 apt核心命令(必记))
- [2.3 常见问题排查(避坑重点)](#2.3 常见问题排查(避坑重点))
- 三、离线安装:rpm/deb包实操(无网环境必备)
-
- [3.1 CentOS:rpm包离线安装](#3.1 CentOS:rpm包离线安装)
-
- [3.1.1 核心命令(必记)](#3.1.1 核心命令(必记))
- [3.1.2 实操案例(安装nginx rpm包)](#3.1.2 实操案例(安装nginx rpm包))
- [3.1.3 依赖问题解决(重点难点)](#3.1.3 依赖问题解决(重点难点))
- [3.2 Ubuntu:deb包离线安装](#3.2 Ubuntu:deb包离线安装)
-
- [3.2.1 核心命令(必记)](#3.2.1 核心命令(必记))
- [3.2.2 实操案例(安装chrome deb包)](#3.2.2 实操案例(安装chrome deb包))
- [四、源码安装:make & make install 实操(以Redis为例)](#四、源码安装:make & make install 实操(以Redis为例))
-
- [4.1 实操案例:源码安装Redis(通用流程,其他软件可参考)](#4.1 实操案例:源码安装Redis(通用流程,其他软件可参考))
-
- [4.1.1 前提准备(安装编译依赖)](#4.1.1 前提准备(安装编译依赖))
- [4.1.2 第一步:下载并解压Redis源码包](#4.1.2 第一步:下载并解压Redis源码包)
- [4.1.3 第二步:配置编译参数(./configure)](#4.1.3 第二步:配置编译参数(./configure))
- [4.1.4 第三步:编译源码(make)](#4.1.4 第三步:编译源码(make))
- [4.1.5 第四步:安装软件(make install)](#4.1.5 第四步:安装软件(make install))
- [4.1.6 第五步:验证安装是否成功](#4.1.6 第五步:验证安装是否成功)
- [4.2 源码安装常见问题](#4.2 源码安装常见问题)
- 五、总结
一、前言:为什么要学好Linux包管理?
做Linux相关开发、运维,甚至是日常使用Linux桌面版,「软件安装与包管理」都是绕不开的基础技能。
你可能遇到过这些场景:
- 想装一个软件,输入命令后提示"找不到包",不知道该怎么办;
- 换了国内yum源,还是报错"无法连接仓库",排查半天找不到问题;
- 服务器没网,下载好rpm包安装,却提示"缺少依赖包",陷入死循环;
- 想安装某个软件的最新版本,官方只有源码包,不会编译安装。
这些问题,本质上都是没吃透Linux包管理的核心逻辑。今天这篇文章,就针对「在线安装(yum/dnf+apt)、离线安装(rpm/deb)、源码安装」三大场景,结合实操案例,手把手教你搞定所有Linux软件安装难题,收藏这一篇,以后不用再查零散教程!
(温馨提示:文章含大量实操命令,建议点赞+收藏,方便后续实操时对照查看~)
二、在线安装:yum/dnf(CentOS)与apt(Ubuntu)实操
在线安装是最常用的方式,核心优势是"自动解决依赖",不用手动下载依赖包,效率极高。不同Linux发行版的包管理工具不同,CentOS(RHEL系)用yum/dnf,Ubuntu(Debian系)用apt,我们分别讲解。
2.1 CentOS:yum/dnf使用(换源+安装+卸载)
2.1.1 为什么要换源?
默认情况下,CentOS的官方yum源是国外的,国内访问速度很慢,甚至会出现"无法连接"的情况,因此第一步必须先换「国内源」(阿里云、清华源都可以),这里以阿里云源为例。
2.1.2 yum换源实操(CentOS 7)
-
备份默认yum源(防止出错后无法恢复)
bash# 进入yum源配置目录 cd /etc/yum.repos.d/ # 备份所有默认repo文件 mkdir backup && mv *.repo backup/ -
下载阿里云yum源文件
bash# 下载CentOS 7阿里云源(对应自己的CentOS版本) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo -
清理缓存+生成新缓存
bash# 清理旧缓存 yum clean all # 生成新缓存(加载新源) yum makecache -
验证换源是否成功
bash# 查看yum源列表 yum repolist # 若显示"阿里云"相关仓库,且没有报错,说明换源成功
2.1.3 dnf使用(CentOS 8+)
CentOS 8及以上版本,默认用dnf替代了yum(dnf是yum的升级版本,用法基本一致,速度更快),换源和使用方法和yum类似:
bash
# 备份默认源
cd /etc/yum.repos.d/
mkdir backup && mv *.repo backup/
# 下载阿里云dnf源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
# 清理缓存+生成新缓存
dnf clean all
dnf makecache
2.1.4 yum/dnf核心命令(必记)
bash
# 安装软件(自动解决依赖)
yum install -y 软件名 # CentOS 7
dnf install -y 软件名 # CentOS 8+
# 卸载软件(不卸载依赖,推荐)
yum remove -y 软件名
dnf remove -y 软件名
# 卸载软件(同时卸载依赖,谨慎使用,可能误删系统依赖)
yum erase -y 软件名
dnf erase -y 软件名
# 更新所有已安装软件
yum update -y
dnf update -y
# 搜索软件(查看软件是否在仓库中)
yum search 软件名
dnf search 软件名
注意:安装时加上
-y参数,会自动确认所有提示,不用手动输入"y",提升效率;卸载软件时,优先用remove,避免erase误删依赖。
2.2 Ubuntu:apt使用(换源+安装+卸载)
Ubuntu的包管理工具是apt,用法和yum类似,但命令略有不同,同样先换国内源(阿里云、清华源),以清华源为例。
2.2.1 apt换源实操(Ubuntu 20.04/22.04)
-
备份默认源
bashsudo cp /etc/apt/sources.list /etc/apt/sources.list.bak -
编辑源文件(替换为清华源)
bash# 用vim编辑源文件(若没有vim,先执行 sudo apt install -y vim) sudo vim /etc/apt/sources.list -
清空原有内容,粘贴以下清华源(对应Ubuntu 22.04,其他版本可去清华源官网替换)
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse -
更新缓存(加载新源)
bashsudo apt update
2.2.2 apt核心命令(必记)
bash
# 安装软件(自动解决依赖)
sudo apt install -y 软件名
# 卸载软件(不卸载依赖)
sudo apt remove -y 软件名
# 卸载软件(同时卸载依赖+配置文件,彻底删除)
sudo apt purge -y 软件名
# 更新所有已安装软件
sudo apt upgrade -y
# 搜索软件
sudo apt search 软件名
# 清理无用依赖(卸载软件后,清理残留的依赖包)
sudo apt autoremove -y
注意:Ubuntu的apt命令需要加
sudo(管理员权限),否则会报错;autoremove命令可以定期执行,清理系统残留,释放磁盘空间。
2.3 常见问题排查(避坑重点)
- 换源后报错"无法连接仓库":检查网络是否正常,确认源文件的版本和自己的Linux发行版一致(比如CentOS 7不能用CentOS 8的源);
- 安装时提示"没有可用软件包":用
yum search或apt search确认软件名是否正确(Linux软件名区分大小写); - 缓存报错:重新执行
yum makecache或apt update,清理缓存后再尝试。
三、离线安装:rpm/deb包实操(无网环境必备)
很多时候,服务器处于内网环境,没有外网权限,无法使用yum/apt在线安装,这时候就需要用「离线包安装」------先在有网的机器上下载好rpm(CentOS)或deb(Ubuntu)包,再拷贝到内网服务器安装。
3.1 CentOS:rpm包离线安装
3.1.1 核心命令(必记)
bash
# 安装rpm包(注意:不会自动解决依赖,需手动处理依赖)
rpm -ivh 软件包名.rpm
# 卸载rpm包
rpm -e 软件包名
# 查看已安装的rpm包
rpm -qa | grep 软件包名
# 查看rpm包的依赖关系
rpm -qR 软件包名.rpm
3.1.2 实操案例(安装nginx rpm包)
-
有网机器下载nginx rpm包(推荐从阿里云镜像站下载,对应CentOS版本);
-
用U盘或远程拷贝(如scp),将rpm包传到内网CentOS服务器;
-
执行安装命令:
bash# 安装nginx rpm包 rpm -ivh nginx-1.24.0-1.el7.x86_64.rpm
3.1.3 依赖问题解决(重点难点)
rpm安装最大的问题是「无法自动解决依赖」,若提示"缺少xxx依赖包",解决方案有2种:
-
手动下载所有缺少的依赖包,按顺序安装(依赖包也需要rpm格式);
-
用
yum localinstall命令(推荐),该命令会自动查找本地rpm包的依赖,若本地有依赖包,直接安装,若无,会提示(适合内网有本地仓库的场景):bashyum localinstall -y nginx-1.24.0-1.el7.x86_64.rpm
3.2 Ubuntu:deb包离线安装
3.2.1 核心命令(必记)
bash
# 安装deb包(不会自动解决依赖)
sudo dpkg -i 软件包名.deb
# 卸载deb包
sudo dpkg -r 软件包名
# 彻底卸载deb包(删除配置文件)
sudo dpkg -P 软件包名
# 查看已安装的deb包
dpkg -l | grep 软件包名
# 解决deb包依赖问题(关键)
sudo apt -f install -y
3.2.2 实操案例(安装chrome deb包)
-
有网机器下载chrome deb包;
-
拷贝到内网Ubuntu服务器;
-
执行安装命令:
bash# 安装chrome deb包 sudo dpkg -i google-chrome-stable_current_amd64.deb # 若提示缺少依赖,执行以下命令自动修复 sudo apt -f install -y
重点:Ubuntu的deb包安装后,若有依赖缺失,直接执行
sudo apt -f install -y,系统会自动下载并安装缺少的依赖,比rpm包的依赖处理更简单。
四、源码安装:make & make install 实操(以Redis为例)
有些软件的最新版本,官方只提供源码包(.tar.gz格式),没有rpm/deb包,也无法通过yum/apt安装,这时候就需要「源码编译安装」------手动编译源码,生成可执行文件,再安装到系统中。
源码安装的核心流程:解压源码包 → 配置编译参数 → 编译源码 → 安装软件,即 tar → ./configure → make → make install。
4.1 实操案例:源码安装Redis(通用流程,其他软件可参考)
4.1.1 前提准备(安装编译依赖)
源码编译需要用到gcc编译器,若系统没有,先在线安装(有网环境):
bash
# CentOS安装gcc
yum install -y gcc gcc-c++
# Ubuntu安装gcc
sudo apt install -y gcc g++
4.1.2 第一步:下载并解压Redis源码包
bash
# 下载Redis源码包(官网最新版本,可替换为自己需要的版本)
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
# 解压源码包(解压到当前目录)
tar -zxvf redis-7.2.4.tar.gz
# 进入解压后的目录
cd redis-7.2.4
4.1.3 第二步:配置编译参数(./configure)
bash
# 配置编译参数(默认配置,安装到/usr/local/redis目录)
./configure --prefix=/usr/local/redis
说明:
--prefix指定安装目录,若不指定,默认安装到/usr/local/bin目录;若配置报错,大概率是缺少编译依赖,重新安装gcc即可。
4.1.4 第三步:编译源码(make)
bash
# 编译源码(将源码编译为可执行文件)
make
注意:编译过程中,若出现"error",说明编译失败,大概率是依赖缺失或源码包损坏;若出现"warning",一般不影响,可以继续。
4.1.5 第四步:安装软件(make install)
bash
# 安装编译好的软件(将可执行文件复制到指定的安装目录)
make install
4.1.6 第五步:验证安装是否成功
bash
# 进入安装目录的bin目录
cd /usr/local/redis/bin
# 启动Redis(验证可执行文件是否正常)
./redis-server
若能正常启动Redis,说明源码安装成功;后续可配置Redis为系统服务,实现开机自启(此处不展开,感兴趣的朋友可以评论区留言,后续单独出教程)。
4.2 源码安装常见问题
- 执行
./configure报错:缺少gcc编译器,安装gcc即可; - make编译报错:源码包损坏,重新下载源码包;或缺少对应依赖,根据报错信息安装依赖;
- 安装后找不到可执行文件:忘记指定
--prefix,可执行find / -name 软件名查找,或重新安装并指定安装目录。
五、总结
本文围绕Linux软件安装与包管理,讲解了三大核心场景:
- 在线安装:CentOS的yum/dnf、Ubuntu的apt,重点是换国内源,解决访问慢的问题;
- 离线安装:rpm(CentOS)、deb(Ubuntu),重点是处理依赖问题;
- 源码安装:以Redis为例,讲解了
tar → ./configure → make → make install的完整流程,适合安装无包管理的软件。
其实Linux包管理并不难,核心就是"解决依赖"------在线安装自动解决,离线安装手动/半自动解决,源码安装提前准备依赖。记住本文的实操命令和避坑点,以后不管遇到哪种安装场景,都能轻松搞定。
好了,以上就是本文的全部内容。如果对你有帮助,记得点赞+收藏+关注,我是予枫,专注分享Linux、Python相关实操教程,下期再见~