Linux软件包管理器,软件生态及yum的安装介绍
软件包管理器
Linux下安装软件的常见方式:
1. 源代码安装
2. rpm包安装
3. 包管理器安装---最佳实践
什么是软件包?
- 在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。
- 但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。
- 软件包和软件包管理器,就好比 "App" 和 "应用商店" 这样的关系。
- yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.
- Ubuntu: 主要使用apt (Advanced Package Tool) 作为其包管理器。apt同样提供了自动解决依赖关系、下载和安装软件包的功能。
Linux软件生态
Linux下载软件的过程
以 Ubuntu,Centos为例 :
这张图是对Linux软件下载流程的直观解释,我们可以把它想象成一场“软件快递”的协作:
- 你的云服务器(左侧):是你操作的“根据地”,里面的包管理器(yum/apt) 就像“智能快递员”,负责处理“解决依赖、下载、安装、卸载”这些核心任务。
- 软件包服务器(右侧):是“软件仓库”,里面存着各种“软件包(如软件包1、2…8)”,就像不同的快递包裹。
- 流程互动:当你想装软件时,“智能快递员”(包管理器)会向“软件仓库”(软件包服务器)发送“查找、下载请求”,找到需要的软件包后,“仓库”会把包裹“下载返回”到你的服务器,之后包管理器再自动处理依赖和安装,让你能顺利用上软件。
简单来说,这张图就是把Linux下“装软件”的过程,具象成了“本地请求-远程仓库响应-协作完成安装”的快递式流程,让你明白包管理器和软件仓库是怎么配合给你“送软件”的
操作系统的好坏评估---生态问题
为什么会有人免费向特定社区提供软件 , 还发布? 还提供云服务器让你下载呢?
- 「开源精神」:觉得技术该共享,大家一起把软件做好。
- 「拉人共建」:用户多了,大家一起找bug、加功能,软件越做越好。
- 「间接赚钱」:靠免费软件吸引用户,再通过技术支持、云服务之类的业务赚钱;或者打响名气,方便接活儿、谈合作。
这张图展示了Linux软件从开发到用户下载使用的完整流程,可以分成两个部分理解:
左侧:用户下载软件的流程
- 你的云服务器里的包管理器(yum/apt) 负责处理“解决依赖、下载、安装、卸载”等任务。
- 当你需要安装软件时,包管理器会向软件包服务器发送“查找、下载请求”,找到对应的软件包后,服务器将包“下载返回”到你的服务器,完成安装。
右侧:软件的开发与发布流程
- 开发者编写软件的源代码,然后将其编译发布成不同Linux发行版的软件包(如Ubuntu软件包、CentOS软件包、其他Linux环境软件包)。
- 这些软件包被上线到软件包服务器中,供用户的包管理器下载使用。
简单来说,这张图完整呈现了“开发者做软件→发布到服务器→用户通过包管理器下载安装”的全链路,让你明白Linux软件是如何从开发端到达用户端的。
软件包的依赖问题
这张图表达了,你要装的软件不是孤立的,它得依赖一堆“小部件”(比如 libc.so 、 ssl.so 这些)才能跑起来。而且这些“小部件”可能还依赖其他“更小的部件”(比如 libhttplib.so 依赖 libc++.so 、 XXX.so )。包管理器就是帮你自动把这些层层依赖的“部件”都找齐、装好,让你的软件能正常运行。也就是提供了自动解决依赖关系的功能。
镜像源
国内镜像源 :
这张图展示了Linux软件包镜像源的工作逻辑,可以分成以下两部分理解:
1. 国外镜像源与国内镜像源的区别
- 国外软件包服务器:是官方或国外机构维护的软件仓库,位于海外。
- 国内软件包服务器(镜像源):是国内机构把国外仓库的软件包“复制”到国内的服务器(比如阿里云、清华大学的镜像站)。
2. 镜像源的作用
- 因为国外服务器在海外,国内用户直接访问时下载速度慢,甚至可能因为网络问题连接不稳定。国内镜像源把软件包同步到国内,用户的云服务器(通过包管理器yum/apt)优先从国内镜像源下载软件,就能大幅提升下载和安装软件的速度,让装软件更顺畅。
简单来说,国内镜像源就是“国外软件仓库的国内副本”,专门解决国内用户下载Linux软件慢的问题
软件源
这张图展示了Linux软件源的分类与协作逻辑,可以分两部分理解:
1. 软件源的分类
- 稳定软件源:包含经过充分测试、稳定性高的软件包,是系统默认依赖的核心软件仓库。
- 扩展软件源:提供稳定源之外的额外软件包(比如更多小众工具、最新版本软件),丰富了可安装的软件种类。
2. 整体流程
- 开发者编写软件源代码,编译发布成不同Linux发行版的软件包(如Ubuntu、CentOS对应的包),然后上线到国外软件包服务器的“稳定源”或“扩展源”中。
- 你的云服务器通过包管理器(yum/apt),从国外软件包服务器的软件源中发送“查找、下载请求”,获取需要的软件包后完成安装。
简单来说,这张图是告诉:Linux的软件源分“稳定”和“扩展”两类,开发者把软件包放到对应的源里,你通过包管理器就能从这些源中下载安装软件
安装源
简单来说,安装源是 Linux 系统“软件仓库的地址簿”,Yum 和 APT 就是通过这些配置文件,知道从哪里下载软件包。CentOS 和 Ubuntu 因为包管理器不同,所以配置文件的路径和形式也有差异
$ ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源
-rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源
CentOS 安装源(Yum 源)
- 配置文件路径: /etc/yum.repos.d/
- CentOS-Base.repo :是标准源,包含 CentOS 官方维护的基础软件包仓库。
- epel.repo :是扩展源(EPEL),提供官方源之外的更多软件包。若要安装扩展源,可执行命令 sudo yum install -y epel-release 。
$ cat /etc/apt/sources.list # 标准源
$ ll /etc/apt/sources.list.d/ # 扩展源
Ubuntu 安装源(APT 源)
- 标准源配置文件: /etc/apt/sources.list
- 扩展源配置目录: /etc/apt/sources.list.d/
- (Ubuntu 安装扩展源需结合具体场景,按需添加配置文件到该目录)
总之 :
软件包和软件包管理器,就好比APP和应用商店这样的关系,我们下载一个APP你可能会去应用商店去找 , 有这样一个问题:我们在手机上使用的应用市场(app,客户端),这上面显示出来的app是在手机上,还是在我们看不到的服务器上呢?
答案是在服务器上,当我们点击下载时,会从服务器上去找该APP然后通过服务器传送到我们的手机上
应用市场和应用(app)
软件包管理器和软件包,Linux下centos的软件包管理器是:yum,yum相当于手机上的应用商店,命令/工具->(配置文件)指明我们应该去哪里下载资源
yum软件包管理器
yum是什么?
Yum 软件包管理器:CentOS 系统的“软件管家”
- 在 Linux 世界中,软件的安装、升级与卸载曾是令不少初学者头疼的问题,而 Yum(Yellowdog Updater, Modified) 的出现,彻底改变了这一局面。它是专为 CentOS、RHEL(Red Hat Enterprise Linux)等发行版打造的包管理器,以“自动化解决依赖 + 一站式软件管理”的能力,成为服务器运维和系统管理的核心工具之一。
Yum 的核心定位:Linux 软件的“智能管家”
- Yum 的本质是一套自动化的软件管理工具链,它基于 RPM(Red Hat Package Manager)包格式,为用户提供了“安装、升级、卸载、查询”软件的统一入口。
- 举个例子:你想在 CentOS 服务器上安装一款 Web 服务器软件(如 Nginx),如果没有 Yum,你需要手动找到 Nginx 的 RPM 包,再逐个解决它依赖的“库文件、组件”(比如 openssl 、 pcre 等),过程繁琐且极易出错;而有了 Yum,只需一条命令 yum install nginx ,它会自动分析依赖、下载所有需要的包并完成安装,全程无需人工干预。
这张图是通过 which yum 命令查询 Yum 程序在系统中的安装路径。
输出结果 /usr/bin/yum 表示,Yum 程序位于系统的 /usr/bin 目录下。 which 命令的作用是查找可执行程序在系统中的具体位置,这里的结果说明你在命令行中输入 yum 时,系统会从 /usr/bin 目录中调用这个程序来执行软件包管理操作。
查看Yum软件包
我们可以通过 yum lis t命令罗列出当前一些共有哪些软件包,但是由于包的数目非常多,这里我们需要使用grep命令来只筛选出我们关注的包 , 例如:
这张图是执行 yum list | grep lrzsz 命令后的结果,说明系统中已安装了 lrzsz 软件包,版本是 0.12.20-36.el7 ,架构为 x86_64 。 lrzsz 是 Linux 系统中用于文件传输的工具,支持通过串口或 SSH 连接进行文件的上传( rz 命令)和下载( sz 命令),常用于服务器与本地之间的文件交互场景。
安装软件
命令: sudo yum install 软件包名 sudo apt install 软件包名
从 Yum 仓库下载并安装指定软件包,同时自动解决所有依赖关系。
注意事项:
- yum/apt会自动找到都有哪些软件包需要下载,这时候敲 "y" 确认安装.
- 出现 "complete" 字样或者中间未出现报错,说明安装完成.
- 安装软件时由于需要向系统目录中写入内容,一般需要 sudo 或者切到 root 账户下才能完成.
- yum/apt安装软件只能一个装完了再装另一个.正在yum/apt安装一个软件的过程中,如果再尝试用yum/apt安装另外一个软件,yum/apt会报错.
卸载软件
命令: sudo yum remove 软件包名 sudo yum remove 软件包名
卸载指定软件包,同时会询问是否卸载其依赖(可根据需求选择)。
注意事项
关于 yum / apt 的所有操作必须保证主机(虚拟机)网络畅通!!!
总结:
Linux软件安装与管理摘要:本文介绍了Linux系统下三种主要软件安装方式(源代码、RPM包和包管理器),重点讲解了包管理器的工作原理。通过类比"应用商店",阐述yum/apt等包管理器如何自动解决依赖关系、从软件仓库获取并安装软件包。文章还解析了国内镜像源的作用、软件包依赖关系处理机制,以及CentOS和Ubuntu系统下安装源配置的差异。最后详细说明了yum/apt的常用命令(安装、卸载、查询)及使用注意事项,强调了网络连接对包管理器操作的重要性。