目录
- 前言
- 一、Linux软件安装与操作系统生态体系解析
- 1.1 Linux软件安装的三种方式
- 1.1.1 源代码安装
- 1.1.2 RPM包安装
- 1.1.3 包管理器(yum/apt)安装
- 1.2 包管理器的工作原理
- 1.2.1 yum/apt的本质
- 1.2.2 工作流程
- 1.2.3 配置文件的作用
- 1.3 软件依赖问题的深度解析
- 1.3.1 什么是软件依赖?
- 1.3.2 依赖列表的概念
- 1.3.3 包管理器如何解决依赖问题?
- 1.4 Linux操作系统生态体系
- 1.4.1 如何评估一款操作系统的好坏?
- 1.4.2 为什么要有完善的生态系统?
- 1.4.3 开源的本质是一种商业模式
- 1.5 为什么要配置国内镜像源
- 二、Linux软件管理实战:YUM与APT
- 2.1 开篇:如何优雅地管理软件?
- 2.1.1 认清你的系统:你是谁?
- 2.2、两大阵营:YUM vs APT
- 2.2.1 CentOS 阵营:YUM
- 2.2.1.1 搜索软件
- 2.2.1.2 安装与卸载
- 2.2.2 Ubuntu 阵营:APT
- 2.2.2.1 关于 apt-get 的小插曲
- 2.2.2.2 搜索软件
- 2.2.2.3 安装与卸载
- 2.3、核心概念:软件是从哪来的?
- 2.3.1 软件安装的真相
- 2.3.2 软件源(Repository)是什么?
- 2.3.3 配置文件在哪里?
- 2.4、进阶操作:换源与缓存清理
- 2.4.1 为什么要换源?
- 2.4.2 换源的步骤(以 CentOS 为例)
- 2.4.3 清理缓存
- 结语
前言
大家好啊,我是云泽Q,欢迎阅读我的文章,一名热爱计算机技术的在校大学生,喜欢在课余时间做一些计算机技术的总结性文章,希望我的文章能为你解答困惑~
在这篇文章之前的所有Linux相关的内容是让大家了解Linux系统及其操作模式,认识指令和权限细节,更重要的是理解Linux的目录结构、绝对路径与相对路径、管道操作、重定向操作,以及权限配套的指令集。掌握这些后,就能在Linux中进行基本的指令操作,就像在Windows下用鼠标单击、双击打开页面或软件一样。
然而,仅仅会操作是不够的。我们还需要在Linux中安装和卸载软件,甚至进行编程——编写C/C++代码、编译和调试代码。后面,我们将重点讲解Linux下的开发工具链,包括软件安装命令、文本编辑器、GCC编译器、Makefile自动化编译,以及如何编写第一个小程序(如进度条)。
一、Linux软件安装与操作系统生态体系解析
1.1 Linux软件安装的三种方式
1.1.1 源代码安装
- 原理:获取开源软件的源代码,通过配套的编译和安装脚本自行编译安装。
- 缺点:对初学者不友好,因为软件可能依赖其他库,即便编译成功也可能因缺少依赖而无法运行。
1.1.2 RPM包安装
- 原理:类似于Windows的安装包,由发行版(如CentOS 7)将源代码在特定系统上编译后打包成RPM格式,用户通过
rpm -ivh等命令安装。 - 缺点:RPM包不自动解决依赖关系,若软件A依赖B、C,则需手动安装所有依赖。
1.1.3 包管理器(yum/apt)安装
- 原理:推荐方式,能自动查找、下载、安装软件并自动解决依赖问题,极大简化安装流程。
- 优势:类似手机上的App Store或Windows应用商店,背后有对应的软件包服务器(服务端),存储了大量预编译好的软件包。用户通过包管理器向服务器发起请求,下载并安装软件。
1.2 包管理器的工作原理
1.2.1 yum/apt的本质
- yum(Yellow Dog Updater Modified)和apt(Advanced Package Tool)本质上是Linux下的“应用商店”客户端,类似于手机上的App Store或Windows应用商店。
- 其背后有对应的软件包服务器(服务端),存储了大量预编译好的软件包。用户通过包管理器向服务器发起请求,下载并安装软件。
1.2.2 工作流程
- 查找:包管理器根据配置文件中的URL或IP地址,向软件包服务器发起查找请求。
- 下载:找到目标软件包后,下载到本地。
- 自动解析依赖:包管理器会自动解析软件的依赖关系,并下载所有依赖的软件包。
- 安装:将所有软件包安装到系统中。
1.2.3 配置文件的作用
- 包管理器通过本地的配置文件获知软件包服务器的地址(URL或IP)。例如,CentOS默认指向国外官方源(如
centos.org),Ubuntu指向其官方源。 - 用户可以通过修改配置文件(一般也不需要自己配置,我们购买了国内的云服务器时,对应的云服务器厂商就会默认把这个配置文件替换为指向国内镜像源的文件),将软件包服务器地址替换为国内镜像源(如阿里云、腾讯云),以加速下载速度。
比如我这里使用的是阿里云的服务里,阿里云官方修改的配置文件就是指向国内镜像源的
1.3 软件依赖问题的深度解析
1.3.1 什么是软件依赖?
- 软件依赖是指一个软件在运行时,需要依赖其他库或组件才能正常工作。例如,一个软件可能依赖C语言标准库(libc.so)、SSL加密库(ssl.so)、网络库(libhttpplib.so)等。
- 如果只安装了目标软件,而没有安装其依赖的库,软件将无法运行。
1.3.2 依赖列表的概念
- 软件依赖的关系可以形成一个依赖列表。例如,软件A依赖B和C,而B又依赖D,C依赖E,那么安装A时,需要同时安装B、C、D、E。
- 在Windows下,安装包通常会将所有依赖打包在一起,用户无需关心依赖问题。而在Linux下,用户需要手动处理依赖,或者使用包管理器自动解决。
1.3.3 包管理器如何解决依赖问题?
- 包管理器在安装软件时,会自动解析其依赖关系,并下载所有依赖的软件包。用户只需执行一条命令,即可完成所有软件的安装。
- 例如,使用
yum install或apt install命令安装软件时,包管理器会自动处理依赖问题,确保软件能够正常运行。
1.4 Linux操作系统生态体系
1.4.1 如何评估一款操作系统的好坏?
- 不仅要看系统本身的性能、安全性和稳定性(Linux内核各发行版基本一致),更关键的是考察其生态系统是否完善。
- 优秀操作系统的标准包括:社区活跃、官方文档齐全(中英文)、软件体系丰富、更新维护及时、有大量目标用户群体(如大公司开发者)。
1.4.2 为什么要有完善的生态系统?
- 操作系统作为产品,核心目标是“被使用”。若无人使用,则无法形成正向循环。
- 完善的生态系统可以吸引更多用户和开发者,从而推动操作系统的发展。例如,CentOS和Ubuntu被腾讯、阿里等大公司广泛采用,社区成熟,可降低公司技术风险和评估成本。
1.4.3 开源的本质是一种商业模式
- 开源的本质是一种商业模式,通过提供免费的操作系统,吸引大量用户和开发者,从而形成庞大的生态系统。
- 在这个生态系统中,社区论坛、官网文档、软件体系、维护更新速度、操作系统自身、富有针对性的客户群体等要素相互作用,共同推动操作系统的发展。
1.5 为什么要配置国内镜像源
- 默认的国外软件包服务器在国内访问速度较慢,甚至可能出现连接失败的情况。
- 配置国内镜像源可以显著提高软件下载速度,提升用户体验。
二、Linux软件管理实战:YUM与APT
2.1 开篇:如何优雅地管理软件?
接下来我会演示怎么在Linux下搜索、安装、卸载软件的过程
我会用两个最主流的平台——CentOS(代表 Red Hat 系)和Ubuntu(代表 Debian 系)来给大家演示。只要掌握了这两个,市面上绝大多数 Linux 发行版你都能通吃。
2.1.1 认清你的系统:你是谁?
在动手之前,你得先搞清楚用的是什么系统。
怎么查看系统版本呢?这里教大家一个通用的命令:cat /etc/os-release
- CentOS 7:你会看到
NAME="CentOS Linux",版本号是VERSION_ID="7"。它的内核其实源自 Red Hat Enterprise Linux (RHEL),所以我们可以把它理解为 RHEL 的社区版。 - Ubuntu 20.04:你会看到
NAME="Ubuntu",版本号是VERSION="20.04 LTS (Focal Fossa)"。它属于 Debian 体系。
记住这两个特征,以后不管拿到什么机器,先跑一下这个命令,心里就有底了。
2.2、两大阵营:YUM vs APT
Linux 世界主要分为两大阵营,它们的包管理工具不同,但逻辑是一样的。
2.2.1 CentOS 阵营:YUM
CentOS、RHEL、Fedora 这些系统,使用的是YUM包管理器。
2.2.1.1 搜索软件
如果你想找某个软件,比如我们要找一个叫lrzsz的工具(用于文件传输),你可以直接列出所有软件并过滤:
yum list|greplrzsz注意:yum list会列出成千上万个软件包,速度可能会稍微慢一点,因为它要去阿里云或者华为云的源里去匹配。如果卡住了,按Ctrl + C取消即可。
2.2.1.2 安装与卸载
找到名字后,安装非常简单:
sudoyuminstall-ylrzsz这里的-y参数很重要,它表示自动确认安装,省得系统问你“Is this ok [y/N]”,你还要手动输个 y。
如果要卸载,就把install换成remove:
sudoyum remove lrzsz2.2.2 Ubuntu 阵营:APT
Ubuntu、Debian 这些系统,使用的是APT包管理器。
2.2.2.1 关于 apt-get 的小插曲
老资历兄弟可能见过apt-get这个命令。它是老版本的命令。现在 Ubuntu 推荐直接使用apt,它整合了常用功能,界面更友好。虽然apt-get还能用,但我们今天要讲的是新标准apt。
2.2.2.2 搜索软件
在 Ubuntu 下搜索软件,命令更直观:
aptsearch lrzsz或者你想看某个软件的详细信息(比如版本、依赖关系):
aptshow lrzsz2.2.2.3 安装与卸载
安装命令如下:
sudoaptinstall-ylrzsz卸载命令:
sudoaptremove lrzsz重点总结:
- CentOS:
yum install,yum remove,yum list | grep- Ubuntu:
apt install,apt remove,apt search- 无论哪个系统,普通用户都没有权限往系统目录写文件,所以必须加
sudo提权。
2.3、核心概念:软件是从哪来的?
很多兄弟只会敲命令,但不知道背后的原理。这部分才是最重要的
2.3.1 软件安装的真相
当你执行yum install或apt install时,系统到底在干什么?
简单来说,就是下载二进制程序,然后拷贝到系统的特定目录(通常是/usr/bin或/bin)。
- 一次安装,全员可用:因为软件被装在了公共目录,所以这台机器上的所有用户都可以使用这个软件,不需要每个人都装一遍。
- 锁机制:YUM 和 APT 都有一个特性,就是同一时间只能运行一个安装任务。如果你正在装软件 A,这时候又去装软件 B,系统会报错,告诉你数据库被锁定了。这是为了防止文件冲突。
2.3.2 软件源(Repository)是什么?
既然要下载,那从哪下载?这就是软件源。
你可以把软件源想象成一个巨大的“应用商店服务器”。
- 稳定源(Base/Main):这里面放的软件都是经过长期测试、非常稳定的。就像手机出厂自带的那些 APP。
- 扩展源(EPEL/Universe):有些软件比较新,或者比较小众,官方觉得不够稳定或者维护精力有限,就会放在扩展源里。比如 CentOS 的 EPEL 源,Ubuntu 的 Universe 源。
2.3.3 配置文件在哪里?
包管理器怎么知道去哪个服务器下载软件呢?因为它有配置文件。
CentOS 的配置文件:位于
/etc/yum.repos.d/目录下。你可以进去看看,里面有很多.repo结尾的文件,比如CentOS-Base.repo。打开它,你会看到baseurl=后面跟着一串网址,那就是下载地址。Ubuntu 的配置文件:主文件是
/etc/apt/sources.list。你可以用vim打开它,里面列出了一堆deb http://...的地址。
2.4、进阶操作:换源与缓存清理
这部分是很多新手最容易踩坑的地方,请仔细看
2.4.1 为什么要换源?
默认情况下,虚拟机里的镜像下配置的源是国外的服务器。
- 问题:在国内访问国外服务器,由于国情原因,下载速度会很慢,甚至经常超时连不上。
- 解决:我们需要把配置文件里的地址替换成国内的镜像站,比如阿里云、腾讯云、华为云或者清华源。
特别提示:如果你用的是阿里云、腾讯云买的云服务器,它们初始化时通常已经自动配好了内网源,这种情况下你不需要手动换源!只有你自己装的虚拟机才需要操心这个事。
2.4.2 换源的步骤(以 CentOS 为例)
假设我们要把源换成阿里云的:
- 备份原文件:养成好习惯,动配置前先备份。比如下面先重命名
sudomv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup - 下载新文件:使用
wget命令从阿里云下载新的配置文件。
含义是从后面的网址下载前面的文件到sudowget-O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo/etc/yum.repos.d路径下
2.4.3 清理缓存
首先要清楚,为什么要“清理缓存”?
很多人会遇到这种情况:明明我已经把配置文件换成阿里云了,为什么执行 yum install 还是报错,或者下载的还是很慢?
这就是因为本地缓存的问题。
- 原理: YUM/APT 为了加快速度,会把远程服务器的软件列表信息下载到本地缓存起来。当你修改了配置文件(换了源)之后,本地的缓存依然是旧的(指向旧地址的)。
- 后果: 此时直接安装,工具可能还会尝试去连旧的地址,导致失败。
- 解决方案: 必须手动清理掉旧的缓存,强制工具重新从新的源获取信息。
那么如何清理与重建呢?
清理旧缓存:
- CentOS: s
udo yum clean all - Ubuntu:
sudo apt clean(清理安装包)
重建新缓存(让新配置生效):
- CentOS:
sudo yum makecache(这一步非常关键,它会去新源拉取最新的元数据,makecache会根据新的配置文件,重新去服务器上拉取软件列表并建立本地索引。)。 - Ubuntu:
sudo apt update。