【Linux入门篇】Ubuntu和CentOS包管理不一样?apt与yum对比实操,看完再也不混淆


🍃 予枫个人主页
📚 个人专栏 : 《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)

  1. 备份默认yum源(防止出错后无法恢复)

    bash 复制代码
    # 进入yum源配置目录
    cd /etc/yum.repos.d/
    # 备份所有默认repo文件
    mkdir backup && mv *.repo backup/
  2. 下载阿里云yum源文件

    bash 复制代码
    # 下载CentOS 7阿里云源(对应自己的CentOS版本)
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  3. 清理缓存+生成新缓存

    bash 复制代码
    # 清理旧缓存
    yum clean all
    # 生成新缓存(加载新源)
    yum makecache
  4. 验证换源是否成功

    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)

  1. 备份默认源

    bash 复制代码
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 编辑源文件(替换为清华源)

    bash 复制代码
    # 用vim编辑源文件(若没有vim,先执行 sudo apt install -y vim)
    sudo vim /etc/apt/sources.list
  3. 清空原有内容,粘贴以下清华源(对应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
  4. 更新缓存(加载新源)

    bash 复制代码
    sudo 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 常见问题排查(避坑重点)

  1. 换源后报错"无法连接仓库":检查网络是否正常,确认源文件的版本和自己的Linux发行版一致(比如CentOS 7不能用CentOS 8的源);
  2. 安装时提示"没有可用软件包":用 yum searchapt search 确认软件名是否正确(Linux软件名区分大小写);
  3. 缓存报错:重新执行 yum makecacheapt 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包)

  1. 有网机器下载nginx rpm包(推荐从阿里云镜像站下载,对应CentOS版本);

  2. 用U盘或远程拷贝(如scp),将rpm包传到内网CentOS服务器;

  3. 执行安装命令:

    bash 复制代码
    # 安装nginx rpm包
    rpm -ivh nginx-1.24.0-1.el7.x86_64.rpm

3.1.3 依赖问题解决(重点难点)

rpm安装最大的问题是「无法自动解决依赖」,若提示"缺少xxx依赖包",解决方案有2种:

  1. 手动下载所有缺少的依赖包,按顺序安装(依赖包也需要rpm格式);

  2. yum localinstall 命令(推荐),该命令会自动查找本地rpm包的依赖,若本地有依赖包,直接安装,若无,会提示(适合内网有本地仓库的场景):

    bash 复制代码
    yum 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包)

  1. 有网机器下载chrome deb包;

  2. 拷贝到内网Ubuntu服务器;

  3. 执行安装命令:

    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 源码安装常见问题

  1. 执行 ./configure 报错:缺少gcc编译器,安装gcc即可;
  2. make编译报错:源码包损坏,重新下载源码包;或缺少对应依赖,根据报错信息安装依赖;
  3. 安装后找不到可执行文件:忘记指定 --prefix,可执行 find / -name 软件名 查找,或重新安装并指定安装目录。

五、总结

本文围绕Linux软件安装与包管理,讲解了三大核心场景:

  1. 在线安装:CentOS的yum/dnf、Ubuntu的apt,重点是换国内源,解决访问慢的问题;
  2. 离线安装:rpm(CentOS)、deb(Ubuntu),重点是处理依赖问题;
  3. 源码安装:以Redis为例,讲解了 tar → ./configure → make → make install 的完整流程,适合安装无包管理的软件。

其实Linux包管理并不难,核心就是"解决依赖"------在线安装自动解决,离线安装手动/半自动解决,源码安装提前准备依赖。记住本文的实操命令和避坑点,以后不管遇到哪种安装场景,都能轻松搞定。


好了,以上就是本文的全部内容。如果对你有帮助,记得点赞+收藏+关注,我是予枫,专注分享Linux、Python相关实操教程,下期再见~

相关推荐
NAGNIP5 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab6 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab6 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
十日十行9 小时前
Linux和window共享文件夹
linux
AngelPP10 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年10 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼10 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS10 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区12 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈12 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能