【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相关实操教程,下期再见~

相关推荐
陈西子在网上冲浪3 小时前
当全国人民用 AI 点奶茶时,你的企业官网还在“人工建站”吗?
人工智能
victory04313 小时前
hello_agent第九章总结
人工智能·agent
骇城迷影3 小时前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
RisunJan3 小时前
Linux命令-lpr(从命令行提交文件到打印机打印)
linux·运维·服务器
历程里程碑3 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Sheep Shaun3 小时前
如何让一个进程诞生、工作、终止并等待回收?——探索Linux进程控制与Shell的诞生
linux·服务器·数据结构·c++·算法·shell·进程控制
AI资源库3 小时前
Remotion 一个用 React 程序化制作视频的框架
人工智能·语言模型·音视频
codingWhat3 小时前
Linux 入门指南
linux
Web3VentureView3 小时前
SYNBO Protocol AMA回顾:下一个起点——什么将真正推动比特币重返10万美元?
大数据·人工智能·金融·web3·区块链