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

news2025/7/15 10:18:04

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2374748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物流无人机自动化装卸技术解析!

一、自动化装卸技术模块的技术难点 1. 货物多样性适配 物流场景中货物包装类型、尺寸、材质差异大&#xff0c;如农产品、医疗物资、工业设备等&#xff0c;要求装卸模块具备高度柔性化设计。例如&#xff0c;单元货物需视觉识别系统进行单个抓取&#xff0c;而整托货物需大…

IOT藍牙探測 C2 架構:社會工程/節點分離防追尋

BMC 地址:https://github.com/MartinxMax/bmc/releases/tag/V1.5 藍牙 MAC 偵測節點的物聯網分散式 C2 架構&#xff0c;可與 S-Cluster 交互。 場景 A&#xff1a;潛伏偵測 駭客組織會將 BMC 裝置秘密部署在目標建築物周圍&#xff08;例如牆外、通風口或垃圾間等隱蔽地點&…

FreeRTOS学习记录(变量命名规则全解、文件介绍)

目录 FreeRTOS 变量命名规则详解​ ​一、变量命名前缀规则​ &#xff08;一&#xff09;数据类型相关前缀​ &#xff08;二&#xff09;功能模块相关前缀​ &#xff08;三&#xff09;宏定义 二、变量命名与文件的关系​ &#xff08;一&#xff09;核心源文件中的变…

Qt 中 QWidget涉及的常用核心属性介绍

欢迎来到干货小仓库 一匹真正的好马&#xff0c;即使在鞭子的影子下&#xff0c;也能飞奔 1.enabled API说明isEnabled()获取到控件的可用状态setEnabled()设置控件是否可使用.true&#xff1a;可用&#xff0c;false&#xff1a;禁用 禁用&#xff1a;指该控件不能接收任何用…

Open CASCADE学习|由大量Edge构建闭合Wire:有序与无序处理的完整解析

在CAD建模中,构建闭合的Wire(线框)是拓扑结构生成的基础操作。OpenCascade(OCCT)作为强大的几何建模库,支持从离散的Edge(边)构建Wire,但在实际应用中,边的有序性直接影响构建的成功率。本文将详细探讨有序与无序两种场景下的实现方法,并提供完整代码示例。 一、有序…

linux 开发小技巧之git增加指令别名

众所周知&#xff0c;git的指令执行时都得敲好几个字符才能补充上来&#xff0c;比如常用的git status&#xff0c;是不是要将全部的字符一个个地在键盘敲上来&#xff0c;有没有更懒惰点办法&#xff0c;可以将经常用到的git命令通过其他的别名的方式填充&#xff0c;比如刚刚…

一文读懂如何使用MCP创建服务器

如果你对MCP&#xff08;模型上下文协议&#xff09;一窍不通&#xff0c;在阅读本篇文章之前&#xff08;在获得对MCP深度认识之前&#xff09;&#xff0c;你可以理解为学习MCP就是在学习一个python工具库mcp&#xff0c;类似于其它python工具库一样&#xff0c;如numpy、sys…

Python Day23 学习

继续SHAP图绘制的学习 1. SHAP特征重要性条形图 特征重要性条形图&#xff08;Feature Importance Bar Plot&#xff09;是 SHAP 提供的一种全局解释工具&#xff0c;用于展示模型中各个特征对预测结果的重要性。以下是详细解释&#xff1a; 图的含义 - 横轴&#xff1a;表示…

VS Code 重磅更新:全新 MCP 服务器发现中心上线

目前各种 MCP 客户端层出不穷&#xff0c;但是安装 MCP 服务却格外繁琐&#xff0c;尤其 VS Code 中无界面化的 MCP 服务配置方式&#xff0c;效率较低。 Copilot MCP 是一个 VS Code 插件&#xff0c;在今天发布的新版本中&#xff0c;插件支持了自动发现与安装开源 MCP 服务…

一、网络基础

IPv4&#xff1a;32位二进制 -- 点分十进制标识 192.168.1.1&#xff08;连续的32位&#xff0c;为了好看方便每8位一段&#xff09; IPv6&#xff1a;128位二进制 IP&#xff08;Internet协议&#xff09; 洪泛&#xff1a;除流量进入接口外的所有接口的复制 OSI模型&#…

基于HTML+JavaScript+CSS实现教学网站

摘要 21世纪是信息化的时代&#xff0c;信息化物品不断地涌入我们的生活。同时&#xff0c;教育行业也产生了重大变革。传统的身心教授的模式&#xff0c;正在被替代。互联网模式的教育开辟了一片新的热土。 这算是对教育行业的一次重大挑战。截至目前&#xff0c;众多教育行…

告别卡顿,图片查看界的“速度与激情”

嘿&#xff0c;小伙伴们&#xff01;今天电脑天空给大家介绍一款超好用的图片查看神器——ImageGlass&#xff01;这可不是普通的图片查看软件哦&#xff0c;它简直就是图片界的“全能王”。首先&#xff0c;它能打开的图片格式多到让你眼花缭乱&#xff0c;什么PNG、JPEG、GIF…

C++ - 类和对象 #日期类的实现

文章目录 前言 一、导言 二、构造 三、比较大小 1、实现大于 2、等于 3、大于等于 4、小于 5、小于等于 6、不等于 二、加减 1、加与加等 2、减与减等 3、、-- 4、日期-日期 三、流提取、流插入 1、流插入 2、流提取 四、日期类所有代码汇总 总结 前言 路…

Redis 8.0携新功能,重新开源

01 引言 Redis从7.4版本起&#xff0c;将开源许可证改成 RSALv2&#xff08;Redis 源代码可用许可证&#xff09;与 SSPLv1&#xff08;服务器端公共许可证&#xff09;的双重授权策略。简单来说&#xff0c;就是不能随意商用。为了抵制Redis&#xff0c;Redis的替代品Valkey、…

从MCU到SoC的开发思维转变

目录 1、硬件设计 2、软件开发 3、调试与测试 4、电源管理 微控制器单元&#xff08;MCU&#xff09;和系统级芯片&#xff08;SoC&#xff09;是嵌入式开发中最常见的两种处理器类型。MCU以其简单、低功耗的特点&#xff0c;广泛应用于特定控制任务&#xff1b;而SoC凭借强…

Eclipse SWT 1 等比缩放

Eclipse SWT 1 等比缩放 1 布局方式2 测试代码 1 布局方式 布局名称特点说明适合场景AbsoluteLayout绝对定位&#xff0c;控件位置和大小完全由开发者手动设置。特殊定制界面、不规则排版FillLayout简单线性布局&#xff0c;将所有子控件填满容器&#xff08;水平或垂直方向&a…

IP 地址、银行卡等多维数据于风险控制的作用

IP 地址、银行卡、手机号、身份证归属地等多维度身份数据&#xff0c;通过构建风险画像数据库&#xff0c;为交易反欺诈、广告营销检测、账户安全防护等提供了强有力的支持。 数据整合构建风险画像数据 IP 地址、银行卡、手机号、身份证归属地等数据来源各异&#xff0c;信息属…

堆复习(C语言版)

目录 1.树的相关概念&#xff1a; 2.堆的实现 3.TopK问题 4.总结 1.树的相关概念&#xff1a; 1.结点的度&#xff1a;一个结点含有的子树&#xff08;孩子&#xff09;个数。 A的度为6 2.叶结点or终端结点&#xff1a;度为0的结点。 J、K、L、H、I 都是叶子结点 3.非终端结…

Spring AI 与 Groq 的深度集成:解锁高效 AI 推理新体验

Spring AI 与 Groq 的深度集成&#xff1a;解锁高效 AI 推理新体验 前言 在人工智能飞速发展的当下&#xff0c;AI 推理的效率和性能成为开发者关注的焦点。Groq 作为一款基于 LPU™ 的超快速 AI 推理引擎&#xff0c;凭借其强大的性能&#xff0c;能够支持各类 AI 模型&…

Megatron系列——张量并行

本文整理自bilibili Zomi视频 1、行切分和列切分 注意&#xff1a; &#xff08;1&#xff09;A按列切分时&#xff0c;X无需切分&#xff0c;split复制广播到A1和A2对应设备即可。最后Y1和Y2需要拼接下&#xff0c;即All Gather &#xff08;2&#xff09;A按行切分时&#…