当前位置: 首页 > news >正文

Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载

Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载

  • 前言
  • 一、 软件包管理器
    • 1.1 传统安装方式的麻烦:从源代码说起
    • 1.2 软件包:把“乐高”提前拼好的成品
    • 1.3 包管理器:你的“软件应用商店”
    • 1.4 常见的“商店”:不同Linux系统的选择
  • 二、Linux下如何进行软件安装、升级、卸载
    • 1. 主流Linux发行版软件安装、升级、卸载
      • 1.1 Ubuntu/Debian系:APT
      • 1.2 CentOS/RHEL系:YUM与DNF
      • 1.3 其他发行版:
    • 2.软件包依赖:
      • 2.1 依赖管理的重要性
      • 2.2 常见依赖问题与解决方案
    • 3. 国内镜像源:
      • 3.1 为什么选择国内镜像源?
      • 3.2 主流国内镜像站推荐
      • 3.3 镜像源配置步骤(以Ubuntu、CentOS为例)
        • 3.3.1 Ubuntu/Debian系(以清华源为例)
          • 步骤1:备份原配置
          • 步骤2:替换为国内源(清华源)
          • 步骤3:更新软件源索引
        • 3.3.2 CentOS/RHEL系(以阿里云源为例)
          • 步骤1:备份原配置(可选)
          • 步骤2:替换为国内源(阿里云源)
          • 步骤3:更新软件源缓存


前言

  • 在前序博客中,我们系统讲解了 Linux 权限体系、基础操作指令,分步演示了 VMware 17 Pro 与 CentOS 9 Stream 的安装流程,并完成了 Vim 编辑器配置及 C++ 开发环境搭建。
  • 本节博客将聚焦软件包管理体系,深入解析 Linux 环境下软件包的安装、升级及卸载机制,帮助读者掌握主流包管理工具的核心操作逻辑

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482


一、 软件包管理器

对于刚接触Linux的我们来说,理解软件包和包管理器可以从我们熟悉的手机或电脑使用经验入手

  • 比如大家在手机上装App,很少会自己编写代码,而是直接去应用商店搜索下载,Linux里的“软件包”就相当于手机里的App安装包,“包管理器”则像应用商店,帮我们快速找到并安装这些“App”。

1.1 传统安装方式的麻烦:从源代码说起

假设你想在Linux里装一个聊天软件,如果按照最原始的方法,需要先找到这个软件的“源代码”(就像一堆工程图纸),然后自己用编译工具把它“组装”成可以直接运行的程序。这个过程就像自己动手拼乐高:

  1. 先要安装一堆编译工具(比如gcc、make),相当于准备好螺丝刀、胶水等工具;
  2. 编译过程中可能会遇到各种“依赖问题”,比如软件需要某个版本的插件,但你的电脑里没有,就得先手动找插件、安装,否则就拼不起来;
  3. 万一源代码有小错误,还得自己排查修改,对新手非常不友好
    这种方式就像“手动拼乐高”,虽然能学会原理,但太费时间,尤其对普通用户来说,只想快速用上软件,不想当“工程师”。
    在这里插入图片描述

1.2 软件包:把“乐高”提前拼好的成品

在这里插入图片描述

于是有人想了个办法:把常用软件提前编译好,打包成一个“安装包”(类似Windows的.exe安装程序),里面不仅包含可直接运行的程序,还提前打包了它需要的所有“依赖插件”,就像工厂直接生产好的乐高成品套装。这个“安装包”就是软件包

  • 比如你想装微信Linux版,不需要自己编译,只要下载一个.deb.rpm格式的软件包(不同Linux版本格式不同),告诉包管理器“我要装这个”,它就会帮你把软件放到合适的位置,连带着它需要的所有“零件”都装好,再也不用手动处理依赖问题。

1.3 包管理器:你的“软件应用商店”

在这里插入图片描述

有了软件包,还需要一个“商店”来管理它们——这就是包管理器。它的作用就像手机的应用商店:

  1. 集中管理软件库:包管理器连接着官方或第三方的“软件仓库”,里面存着成千上万的软件包,你不需要自己去各个网站找安装包,直接在命令行输入软件名称(比如“微信”),包管理器就能从仓库里找到对应的安装包;
  2. 自动解决依赖:比如你装A软件需要B插件,装B插件需要C库,包管理器会一次性把A、B、C都装好,不用你操心“先装谁”;
  3. 方便升级和卸载:就像应用商店可以一键更新所有App,包管理器也能一键升级系统里的所有软件,或者彻底卸载某个软件,不会留下残留文件。

1.4 常见的“商店”:不同Linux系统的选择

不同的Linux“家族”(发行版)常用的“包管理器商店”不同:

在这里插入图片描述

  • yum(代表系统:CentOS、RedHat、Fedora):比如你用的是CentOS系统,想装一个浏览器,打开终端输入sudo yum install firefox,yum就会从官方仓库下载Firefox的软件包并安装,全程自动。

在这里插入图片描述

  • apt(代表系统:Ubuntu、Debian):如果你用Ubuntu,命令类似sudo apt install firefox,apt的优势是仓库更新快,对新手更友好,很多Linux服务器也常用它。

二、Linux下如何进行软件安装、升级、卸载

在这里插入图片描述

Linux生态的优越性,很大程度体现在软件包管理的成熟度上。一个优秀的操作系统,需具备:

  1. 标准化的包格式(如Debian的.deb、RedHat的.rpm),确保软件分发的规范性;
  2. 自动化依赖解析,避免手动处理复杂依赖关系;
  3. 完善的软件仓库,提供海量预编译软件包,降低用户编译成本;
  4. 便捷的版本控制,支持快速升级、降级或卸载,保障系统稳定性。

这些要素共同构成了操作系统的“软件生态基础设施”,而国内镜像源的建设,则进一步优化了这一基础设施的访问效率。

1. 主流Linux发行版软件安装、升级、卸载

1.1 Ubuntu/Debian系:APT

核心工具apt-get/apt(命令行)、software-center(图形界面)
安装流程

  1. 更新软件源列表sudo apt update,获取最新软件包索引;
  2. 安装软件sudo apt install <软件名>,自动解析并安装依赖;
  3. 卸载软件sudo apt remove <软件名>(保留配置文件)或sudo apt purge <软件名>(彻底删除);
  4. 升级系统sudo apt upgrade(单个软件)或sudo apt dist-upgrade(系统级升级)。

特色:支持“渐进式升级”,通过/etc/apt/sources.list配置国内镜像源(如清华源、阿里源),显著提升下载速度。

1.2 CentOS/RHEL系:YUM与DNF

核心工具yum(CentOS 7及以下)、dnf(CentOS 8+)
安装流程

  1. 启用软件仓库:通过rpm -ivh安装repo文件,或直接编辑/etc/yum.repos.d/下的配置文件;
  2. 安装软件sudo yum install <软件名>,依赖问题由YUM自动处理;
  3. 卸载软件sudo yum remove <软件名>
  4. 升级系统sudo yum update(全系统升级)或指定软件升级。

进化:CentOS 8引入的DNF(Dandified YUM)优化了依赖解析算法,支持并行下载,效率更高。

1.3 其他发行版:

  • Arch系(Arch/Manjaro):使用pacman,强调“滚动更新”,通过pacman -S <软件名>安装,支持AUR(用户仓库)扩展生态;
  • Gentoo:基于Portage,通过emerge编译安装,用户可自定义软件配置(如CPU优化、功能裁剪);
  • SUSE:使用zypper,结合官方OBS仓库,适合企业级环境的稳定部署。

2.软件包依赖:

在这里插入图片描述

2.1 依赖管理的重要性

软件包通常依赖其他库或工具(如libc、GCC运行时),若依赖缺失或版本冲突,会导致安装失败或运行异常。包管理工具的核心价值,在于通过“依赖图”自动解析并安装所需组件。

2.2 常见依赖问题与解决方案

  1. 依赖缺失
    • 方案:通过包管理工具自动解决(如apt -f install修复破损依赖);
    • 特例:第三方软件可能需手动安装依赖(参考官方文档或使用容器化方案)。
  2. 版本冲突
    • 方案:使用apt policy <软件名>查看版本优先级,通过apt install <软件名>=<版本号>指定安装版本;
    • 进阶:利用Docker/Kubernetes等容器技术,实现“依赖隔离”。
  3. 跨发行版依赖
    • 挑战:Debian与RedHat系包格式不兼容;
    • 解决方案:使用通用二进制(如Go语言编译的可执行文件)、容器镜像,或通过alien工具转换包格式(非推荐)。

3. 国内镜像源:

3.1 为什么选择国内镜像源?

  • 速度优势:直接从国内服务器下载,避免国际链路延迟;
  • 稳定性:国内镜像站同步频率高(多数每日更新),减少“源不可用”问题;
  • 本地化支持:部分镜像站提供中文文档(如清华源的详细配置指南)。

3.2 主流国内镜像站推荐

  1. 阿里云镜像站(https://developer.aliyun.com/mirror/)

    • 特色:覆盖几乎所有主流Linux发行版(Ubuntu/CentOS/Arch等),支持Docker镜像、编程语言包(如PyPI/NPM),企业级稳定性。
  2. 清华大学开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn/)

    • 特色:教育网用户友好,提供IPv4/IPv6双栈支持,镜像列表清晰,附带详细的配置教程(如如何替换系统默认源)。
  3. 中国科学技术大学镜像站(http://mirrors.ustc.edu.cn/)

    • 特色:同步速度极快,支持反向代理(如npm、Maven中央仓库),适合开发者使用,提供多线路解析(教育网/电信/联通)。
  4. 北京交通大学镜像站(https://mirror.bjtu.edu.cn/)

    • 特色:专注于常用发行版和开发工具,状态监控清晰(显示每个镜像的同步状态),适合高校及科研机构。
  5. 网易镜像站(http://mirrors.163.com/)

    • 特色:历史悠久,支持传统Linux发行版(如Debian老版本),提供便捷的搜索功能,快速定位所需软件包。

3.3 镜像源配置步骤(以Ubuntu、CentOS为例)

3.3.1 Ubuntu/Debian系(以清华源为例)

核心文件/etc/apt/sources.list(全局软件源配置)
适用系统:Ubuntu 16.04+、Debian 9+等

步骤1:备份原配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  

作用:防止配置错误导致系统无法更新,便于恢复默认源。

步骤2:替换为国内源(清华源)

使用文本编辑器(如nano、vim)打开配置文件:

sudo nano /etc/apt/sources.list  

清空原有内容,替换为以下镜像地址(根据Ubuntu版本选择对应分支,如jammy为22.04,ubuity为23.10):

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse  
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse  
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse  
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse  
# 如需使用测试版软件,取消注释以下行  
# deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse  

注意:镜像地址需与系统版本匹配,可通过lsb_release -a查看Ubuntu版本代号。

步骤3:更新软件源索引
sudo apt update  

验证:若输出中无404 Not FoundFailed to fetch错误,说明配置成功。

3.3.2 CentOS/RHEL系(以阿里云源为例)

核心文件/etc/yum.repos.d/目录下的.repo文件(每个仓库独立配置)
适用系统:CentOS 7/8、Rocky Linux、AlmaLinux等

步骤1:备份原配置(可选)
sudo mkdir -p /etc/yum.repos.d/bak && sudo cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/  

作用:备份官方仓库配置,避免误操作导致依赖问题。

步骤2:替换为国内源(阿里云源)
  1. 下载镜像站提供的repo文件(以CentOS 7为例):

    sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  
    

    或手动编辑文件:

    sudo nano /etc/yum.repos.d/CentOS-Base.repo  
    

    将所有baseurl字段替换为阿里云镜像地址:

    [base]  
    name=CentOS-$releasever - Base  
    baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/  
    gpgcheck=1  
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7  [updates]  
    name=CentOS-$releasever - Updates  
    baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/os/  
    # 其他仓库(如extras、centosplus)同理替换  
    

    关键参数$releasever自动匹配系统版本,$basearch为架构(x86_64/arm64等)。

  2. 启用EPEL仓库(可选,用于获取额外软件包)

    sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  
    
步骤3:更新软件源缓存
sudo yum makecache  # CentOS 7及以下  
# 或  
sudo dnf makecache  # CentOS 8及以上(DNF工具)  

验证:输出中显示Metadata Cache Created,表示缓存生成成功。

通过以上步骤,可显著提升Ubuntu/CentOS系统的软件下载速度和稳定性,尤其适合国内用户环境。配置时建议选择与自身网络匹配的镜像站(如教育网选清华/中科⼤,企业网选阿里云/网易),并定期执行更新命令以获取最新软件包。


以上就是这篇博客的全部内容,下一篇我们将继续探索Linux的更多精彩内容。

我的个人主页
欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Linux知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12879535.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

相关文章:

  • 前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
  • C++ 状态模式详解
  • React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题
  • 在Taro中开发一个跨端Svg组件,同时支持小程序、H5、React Native
  • 【PmHub后端篇】Skywalking:性能监控与分布式追踪的利器
  • 按指定位置或关键字批量删除工作表-Excel易用宝
  • 颠覆工业通讯:PROFINET转EtherCAT网关打造汇川变频器的数据传输革命
  • 可灵 AI:开启 AI 视频创作新时代
  • mysql配置输入错误密码3次后锁定60s
  • 告别卡顿,图片查看界的“速度与激情”
  • Jenkins:库博静态工具CI/CD 的卓越之选
  • idea中ctrl+/注释,总是出现在最前行
  • MySQL 分页查询优化
  • Android学习总结之布局篇
  • C++类与对象(二):六个默认构造函数(一)
  • 解读RTOS:第一篇 · RTOS 基础与选型指南
  • 前端-高德地图选点带搜索功能
  • 消息队列如何保证消息可靠性(kafka以及RabbitMQ)
  • 黑马点评实战笔记
  • ARMV8 RK3399 u-boot TPL启动流程分析 --crt0.S
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 上海现有超12.3万名注册护士,本科及以上学历占一半
  • 多元史料下的“西狩”叙事——《“庚子西狩”中外资料六种》解题
  • 今起公开发售,宁德时代将于5月20日在港股上市
  • 外交部就习近平主席将出席中拉论坛第四届部长级会议开幕式介绍情况