Linux包管理器速成:yum/apt双精要/镜像源加速/依赖解析30分钟通解,掌握软件安装的艺术与生态哲学

Linux包管理器速成:yum/apt双精要/镜像源加速/依赖解析30分钟通解,掌握软件安装的艺术与生态哲学


在这里插入图片描述


🔥@雾忱星: 个人主页
👀专栏:《C++学习之旅》《Linux学习指南》
💪学习阶段:C/C++、Linux
⏳“人理解迭代,神理解递归。”


文章目录


引言

Linux系统的稳定性、高效性早已成为服务器领域的标杆,而其强大的软件生态更是开发者、运维人员依赖它的核心原因之一。但对于Linux新手而言,“安装软件”往往是入门第一道坎——手动编译源码、解决依赖循环、清理残留文件,繁琐且易出错。而软件包管理器,正是为解决这些痛点而生的“神器”
本文将全面拆解Linux软件包管理器,涵盖Linux软件生态架构、镜像源优化技巧,以及最常用的yum包管理器完整实操,助力大家快速玩转Linux软件管理。

一、软件包管理器:

在Windows 系统中,我们安装软件通常是下载 .exe文件,双击下一步即可完成,但 Linux 系统中没有统一的“安装文件格式”,取而代之的是**“软件包”,而软件包管理器**就是管理这些软件包的工具,二者相辅相成。

1.1 解析:软件包的核心

  • 软件包: 本质上是一个压缩归档文件,包含了软件的可执行程序、配置文件、依赖库、帮助文档等所有运行该软件所需的文件,同时还会记录软件的版本信息、依赖关系(即运行该软件需要提前安装的其他软件/库)。
  • 包管理器: Linux系统中用于管理软件包全生命周期的工具,核心功能包括:安装软件包、卸载软件包、更新软件包、查询软件包信息、解决软件包依赖关系。
简单来说:软件包好比“App”,软件包管理器就是Linux系统的「应用商店」。

常见的软件包格式】:

  • RPM包: RedHat系列(CentOS、RHEL、Fedora)默认格式,后缀为.rpm
  • DEB包: Debian系列(Ubuntu、Debian、Deepin)默认格式,后缀为.deb
  • 源码包: 后缀为.tar.gz、.tar.bz2,需要手动编译安装,灵活性高但操作复杂(新手不推荐)

【常见的软件包管理器】:

  • yum: RedHat系列默认包管理器,基于RPM包,自动解决依赖,操作简单
  • apt-get/apt: Debian系列默认包管理器,基于DEB包,与yum功能类似(比如apt install 对应yum install)

Linux 下载软件过程】: Ubuntu、Centos、other

在这里插入图片描述

1.2 Linux 的软件生态:核心问题与优势

评价一款操作系统的好坏,生态是关键指标——Linux的软件生态以==“开源、多样”==为核心特点,广泛应用于服务器领域,但同时也存在两个新手最容易踩坑的核心问题:依赖关系复杂、系统版本兼容性差

在这里插入图片描述
  • 软件包依赖问题:
    大部分Linux软件都不是独立运行的,需要依赖其他的软件库(如C语言库、加密库)或其他软件,这种依赖关系可能形成==“链式依赖”==(A依赖B,B依赖C,C依赖D),只要其中一个依赖缺失或版本不匹配,软件就无法正常运行。
在这里插入图片描述
  • 版本兼容性问题:
    Linux 有多个发行版(RedHat、CentOS、Ubuntu等),不同发行版的软件包格式不同(RPM vs DEB);即使是同一发行版的不同版本(如CentOS 7 vs CentOS 8),软件包的版本、依赖库也可能不同,导致软件包无法跨版本、跨发行版兼容。
  • 优势所在: Linux软件生态的优势十分突出,这也是它在服务器领域占据主导地位的核心原因。
特点体现
开源免费大部分 Linux 软件都是开源的,可以直接使用,且可以根据需求修改源码
安全性高开源软件的漏洞能被全球开发者发现并修复,比闭源软件有保障
可定制性强软件的源码开放,可根据需求裁剪功能、修改配置
轻量化、稳定Linux 软件普遍占用系统资源少,运行稳定,适合长期不间断运行

那么在社区为什么会有很多的免费软件供人使用? 还是上面提到的:开源模式。在之前说过,开源也是一种商业模式。

在这里插入图片描述

二、镜像源:解决Linux软件下载慢、下载失败的关键

我们使用yum安装软件时,yum 会从“软件源”(存放软件包的服务器)中下载软件包和依赖。默认情况下,Linux系统的官方软件源服务器都在国外,国内用户访问时会出现下载速度慢(几KB/s)、超时、下载失败等问题——配置国内镜像源,是解决这些问题的唯一有效方法

2.1 基础:镜像源是什么

镜像源(Mirror) 本质上是官方软件源的“副本”——国内的各大厂商(阿里云、腾讯云、网易、清华、中科大等)会将国外官方源中的所有软件包,同步到自己的国内服务器上,形成国内镜像源。

在这里插入图片描述

2.2 国内常见镜像安装源

镜像站名称网址发行版本
清华大学TUNA镜像站https://mirrors.tuna.tsinghua.edu.cn/Ubuntu,Debian,CentOs,Arch Linux,EPEl等
中国科学技术大学USTC镜像站https://mirrors.ustc.edu.cn/Ubuntu, Debian, CentOS, Arch Linux, EPEL,等
阿里云镜像站https://developer.aliyun.com/mirror/Ubuntu, Debian, CentOS, Fedora, Arch Linux, EPEL等
华为云镜像站https://mirrors.huaweicloud.com/homeUbuntu, Debian, CentOS, Fedora, EPEL等
网易开源镜像站https://mirrors.163.com/Ubuntu, Debian, CentOS, Fedora, EPEL
腾讯云镜像站https://mirrors.cloud.tencent.com/Ubuntu, CentOS, EPEL, Docker, PyPI 等

【选择建议】:

  • 地理位置优先: 选择离你物理位置最近的镜像站
  • 稳定性测试: 可以 ping 或 curl 测试响应速度
  • 一键脚本: 有些镜像站提供自动替换脚本,更加便捷
  • 企业环境: 建议使用阿里云、腾讯云、华为云等企业级镜像,保证SLA

三、yum + apt指令实操:从基础到常用

【温馨提示】:

  • 所有指令需使用root用户执行,或在指令前加sudo(如sudo yum install nginx -ysudo apt install nginx -y),否则会提示“权限不足”。
  • 指令中的-y参数表示“自动确认”,避免每次操作都提示“是否继续(y/n)”,提升操作效率,建议加上。
  • 所有操作需保证系统联网,否则会提示“无法连接到软件源”。

3.1 查看软件源状态

用于确认配置的国内镜像源是否生效,执行后可验证后续指令能否正常使用:

# CentOS:yum专属指令,查看当前启用的yum源列表,确认镜像源生效sudo yum repolist # 会输出类似如下内容(以阿里云yum镜像源为例):# repo id repo name status# base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072# epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,735# updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,896# 其中“repo id”为yum源标识,“repo name”为yum源名称(含阿里云标识),“status”为该源可用软件包数量,# 若能看到对应国内镜像源(如aliyun)且软件包数量正常,说明yum镜像源配置成功,后续yum指令可正常使用。#=====================================================================# Ubuntu:查看当前启用的apt源列表,确认镜像源生效sudoapt update &&sudoapt list --upgradable # 1. 先执行sudo apt update,会输出各apt源的更新进度,类似:# Hit:1 http://mirrors.aliyun.com/ubuntu focal InRelease# Hit:2 http://mirrors.aliyun.com/ubuntu focal-updates InRelease# ......(无“Could not connect”等报错)# Reading package lists... Done# Building dependency tree # Reading state information... Done# 2. 再执行sudo apt list --upgradable,会列出可升级的软件包(若暂无可升级软件,会提示“No upgrades available”),# 整个过程无网络报错、能正常加载源信息,说明apt镜像源配置成功,后续apt指令可正常使用。
  • yum(sudo yum repolist):执行后会显示yum源的名称、标识、软件包数量,如果能看到“aliyun”相关的源(如base、epel),且软件包数量正常(通常上万个),说明阿里云yum镜像源配置成功,后续所有yum指令可正常使用。
  • apt(sudo apt update && sudo apt list --upgradable):执行后先更新缓存,再显示可升级的软件包列表,若没有“无法连接”报错,且能正常显示软件包,说明阿里云 apt 镜像源配置成功,后续所有 apt 指令可正常使用。

3.2 查询软件包

# CentOS:搜索lrzsz软件包 $ yum list |grep lrzsz lrzsz.x86_64 0.12.20-36.el7 @base #lrzsz软件已安装(@base表示从基础源安装),版本0.12.20,适用于CentOS 7# Ubuntu:搜索lrzsz软件包 $ apt search lrzsz Sorting... Done Full Text Search... Done cutecom/focal 0.30.3-1build1 amd64 Graphical serial terminal, like minicom lrzsz/focal,now 0.12.21-10 amd64 [installed]#lrzsz软件已安装([installed]标识),版本0.12.21,适用于Ubuntu 20.04 Tools for zmodem/xmodem/ymodem file transfer # Ubuntu查看lrzsz详细信息 $ apt show lrzsz Package: lrzsz Version: 0.12.21-10 # 解读:确认软件包名称为lrzsz,版本0.12.21-10 Tools for zmodem/xmodem/ymodem file transfer # 解读:软件功能描述——用于Zmodem/Xmodem/Ymodem协议的文件传输工具

lrzsz软件包提供rz(接收)和sz()发送命令。

  • yum list | grep ≈ apt search:搜索软件包
  • yum info ≈ apt show:查看详细信息

【注意事项】:

  • 软件包名称::主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构
  • “x86_64” 后缀表示64位系统的安装包,“i686” 后缀表示32位系统安装包,选择包时要和系统匹配
  • “el7” 表示操作系统发行版的版本,“el7” 表示的是 centos7/redhat7。 “el6” 表示 centos6/redhat6
  • 最后⼀列,base 表示的是 “软件源” 的名称,类似于 “小米应用商店”,“华为应用商店” 这样的概念
  • Ubuntu 有上述有详细介绍

3.3 安装软件包

# 一、CentOS#1.查询lrzsz是否已安装sudo yum list |grep lrzsz #若已安装 lrzsz.x86_64 0.12.20-36.el7 @base #lrzsz已安装,版本0.12.20,适配CentOS 7,@base表示从基础源安装,无需再执行安装指令#若未安装 lrzsz.x86_64 0.12.20-36.el7 base #lrzsz未安装,软件包存在于base基础源中,可执行以下安装指令# 2.未安装时,执行yum安装指令sudo yum install lrzsz -y #======================================================#Ubuntu系统# 1.先查询lrzsz是否已安装sudoapt search lrzsz #若已安装 lrzsz/focal,now 0.12.21-10 amd64 [installed]#lrzsz已安装,版本0.12.21,适配Ubuntu 20.04(focal),[installed]为已安装标识,无需再执行安装指令#若未安装 lrzsz/focal 0.12.21-10 amd64 #lrzsz未安装,软件包存在于配置的国内镜像源中,可执行以下安装指令#2.未安装时,执行apt安装指令sudoaptinstall lrzsz -y #3.安装完成后,查看lrzsz详细信息(验证安装)sudoapt show lrzsz Package: lrzsz Version: 0.12.21-10 #确认软件包名称为lrzsz,安装版本0.12.21-10,与下载版本一致 Tools for zmodem/xmodem/ymodem file transfer 

指令语法: 安装软件包:yum / apt install [选项] 软件包名-y自动确认)

【注意事项】:

  • 安装软件时需要 root 用户或者sudo
  • yum / apt 安装软件只能安装完一个在装另一个,尝试同时安装会报错

3.4 卸载软件包

#卸载lrzsz工具,保留配置#yumsudo yum remove lrzsz -y sudo yum erase lrzsz -y #aptsudoapt remove lrzsz -y 
关于yum/apt的所有操作必须保证主机(虚拟机)网络畅通!! 通过ping指令验证:ping www.baidu.com

总结

🍓 我是晨非辰Tong!若这篇技术干货帮你打通了学习中的卡点: 👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长 ❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量 ⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用 💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑 🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解 技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标! 

结语:

本文梳理了Linux软件包、管理器及镜像源的核心知识,拆解新手常见的依赖与兼容问题,同步给出yum、apt的实操指令。
对新手而言,掌握基础指令+配置国内镜像源,是高效搞定软件安装的关键,也是熟悉Linux生态的入门必备。
后续可结合实际需求探索进阶操作,充分发挥Linux开源、稳定的优势。

Read more

MCP客户端与服务端初使用——让deepseek调用查询天气的mcp来查询天气

MCP客户端与服务端初使用——让deepseek调用查询天气的mcp来查询天气

本系列主要通过调用天气的mcp server查询天气这个例子来学习什么是mcp,以及怎么设计mcp。话不多说,我们开始吧。主要参考的是B站的老哥做的一个教程,我把链接放到这里,大家如果有什么不懂的也可以去看一下。 https://www.bilibili.com/video/BV1NLXCYTEbj?spm_id_from=333.788.videopod.episodes&vd_source=32148098d54c83926572ec0bab6a3b1d https://blog.ZEEKLOG.net/fufan_LLM/article/details/146377471 最终的效果:让deepseek-v3使用天气查询的工具来查询指定地方的天气情况 技术介绍 MCP,即Model Context Protocol(模型上下文协议),是由Claude的母公司Anthropic在2024年底推出的一项创新技术协议。在它刚问世时,并未引起太多关注,反响较为平淡。然而,随着今年智能体Agent领域的迅猛发展,MCP逐渐进入大众视野并受到广泛关注。今年2月,

By Ne0inhk
可以在命令行通过大模型使用上下文协议(MCP)与外部工具交互的软件:小巧的MCPHost

可以在命令行通过大模型使用上下文协议(MCP)与外部工具交互的软件:小巧的MCPHost

小巧的MCPHost MCPHost 可以在命令行下使用,使大型语言模型(LLM)能够通过模型上下文协议(MCP)与外部工具进行交互。目前支持Claude 3.5 Sonnet和Ollama等。本次实践使用自己架设的Deepseek v3模型,跑通了Time MCP服务。  官网:GitHub - mark3labs/mcphost: A CLI host application that enables Large Language Models (LLMs) to interact with external tools through the Model Context Protocol (MCP). 下载安装 使用非常方便,直接下载解压即可使用。官网提供Windows、Linux和MacOS三个系统的压缩包: https://github.com/

By Ne0inhk
实战篇:Python开发monogod数据库mcp server看完你就会了

实战篇:Python开发monogod数据库mcp server看完你就会了

原创不易,请关注公众号:【爬虫与大模型开发】,大模型的应用开发之路,整理了大模型在现在的企业级应用的实操及大家需要注意的一些AI开发的知识点!持续输出爬虫与大模型的相关文章。 前言 目前mcp协议是给deepseek大模型插上工具链的翅膀,让大模型不仅拥有超高的推理和文本生成能力,还能具备执行大脑意识的工具能力! 如何开发一个mcp? mcp是一种协议,指的是模型上下文协议 (Model Context Protocol)。 官方结成的mcp https://github.com/modelcontextprotocol/python-sdk mcp库 pip install mcp from mcp.server.fastmcp import FastMCP 我们先来做一个简单的案例 from mcp.server.fastmcp import FastMCP import requests mcp = FastMCP("spider") @mcp.tool() def crawl(

By Ne0inhk
【大模型实战篇】基于Claude MCP协议的智能体落地示例

【大模型实战篇】基于Claude MCP协议的智能体落地示例

1. 背景         之前我们在《MCP(Model Context Protocol) 大模型智能体第一个开源标准协议》一文中,介绍了MCP的概念,虽然了解了其概念、架构、解决的问题,但还缺少具体的示例,来帮助进一步理解整套MCP框架如何落地。         今天我们基于claude的官方例子--获取天气预报【1】,来理解MCP落地的整条链路。 2. MCP示例         该案例是构建一个简单的MCP天气预报服务器,并将其连接到主机,即Claude for Desktop。从基本设置开始,然后逐步发展到更复杂的使用场景。         大模型虽然能力非常强,但其弊端就是内容是过时的,这里的过时不是说内容很旧,只是表达内容具有非实时性。比如没有获取天气预报和严重天气警报的能力。因此我们将使用MCP来解决这一问题。         构建一个服务器,该服务器提供两个工具:获取警报(get-alerts)和获取预报(get-forecast)。然后,将该服务器连接到MCP主机(在本例中为Claude for Desktop)。         首先我们配置下环

By Ne0inhk