Linux(三)apt/yum 软件安装与 vim 编辑器入门指南

一、在 Linux 环境下安装软件

在 Linux 操作系统的日常使用与运维中,安装软件是基础且频繁的操作。根据自动化程度和底层原理的不同,传统的软件安装手段主要分为三大类:源码安装、软件包安装(如 RPM)以及包管理器安装(如 yum/apt)。

在 Ubuntu 中是 apt,在 CentOS 中是 yum,以下我们以 yum 示例,在 Ubuntu 中完全一致。

1.1 Linux 中安装软件的三大手段

为了更好地理解为什么现代生产环境更倾向于使用包管理器,我们需要对比这三者之间的差异及其各自的局限性。

1.1.1 源码安装的不足

源码安装是最原始、最灵活的安装方式。用户通常需要通过 git clone 或下载 .tar.gz 压缩包获取源代码,随后经过 configure、make、make install 三部曲完成安装。

这种方式存在明显的不足:

编译门槛高:要求用户环境必须提前配置好对应的编译器(如 gcc, g++)、构建工具以及所有的底层库文件。

过程繁琐且耗时:大型软件的编译可能耗费数小时,且一旦报错,排查成本极高。

难以管理:源码安装的软件通常分散在 /usr/local/ 等目录下,不具备统一的卸载与版本升级机制。

1.1.2 软件包安装的不足

为了简化安装过程,开发者将源码预先编译好,打包成特定格式的安装包(如 CentOS 中的 .rpm 文件或 Ubuntu 中的 .deb 文件)。这种方式类似于 Windows 下的 .exe 安装程序。

    尽管它免去了编译的痛苦,但仍存在一个致命的知识点缺陷:依赖问题(Dependency Hell)。

手动处理依赖:当你安装软件包 A 时,系统可能会提示它依赖于 B;而当你尝试安装 B 时,又发现它依赖于 C 和 D。

版本兼容性风险:用户很难手动判断当前系统中已有的库文件版本是否满足该软件包的严苛要求,强行安装极易导致系统库冲突或软件无法运行。

1.1.3 包管理器的优势(以 apt 为例)

针对上述手段的痛点,包管理器(Package Manager)应运而生。类似于我们的应用商店,在 CentOS 中,我们最常用的工具是 yum(Yellowdog Updater, Modified),它本质上是 RPM 的前端工具,并引入了"软件仓"的概念。

与前两者相比,其核心优势体现在:

  1. 全自动解决依赖关系:这是包管理器最显著的优势。当你执行 apt install 时,它会自动分析该软件所需的所有依赖包,并从云端仓库一并下载安装。这种"一键式"体验彻底解决了令人头疼的依赖缺失与版本兼容性问题。

  2. 网络化获取与安装:apt 能够自动从配置好的镜像源(Repo)中通过网络下载最新的软件包,确保了获取渠道的安全与便捷。

  3. 全局共享与权限管理:在 Linux 中,使用 apt 安装软件通常需要 root 权限。软件一旦安装到系统中,便实现了"一次安装,全员使用"的共享机制,方便了多用户环境下的统一管理。

4.生命周期管理:包管理器提供了完善的查询(check)、更新(update)和卸载(remove)功能,使得维护系统软件环境变得井然有序。

1.2 apt 的使用

我们在上面所说 apt 就是一个包管理器,也就相当于我们手机上的软件应用商店,如果我们想在我们的Linux上面安装相关的软件,此时我们就可以使用 apt 这个指令。

1.2.1指令介绍

指令名称:yum (Yellowdog Updater, Modified)

指令重要性:★★★★★

说明:

基本用法:

yum install <包名>(安装软件)、

yum remove <包名>(卸载软件)、

yum list(列出可用包)。

最常用选项:-y "免确认"开关,让 Linux 在安装软件时自动执行。#### 1.2.2 操作案例

下载:

指令:yum install -y 安装软件

此时如果我们想安装一些其他的软件,我们该如何操作呢?我们可以先来简单地安装一下我们不经常使用的软件,但是又好玩的软件,接下来我们安装一个小火车跑的指令 sl。

此时我们输入 sl 指令之后,控制面板上面就会出现小火车在跑的界面。

卸载:

格式:apt remove -y 卸载软件

如果我们不想要这个软件,该如何卸载掉呢?

此时,我们的 sl 软件就卸载完成了,当我们再输入 sl 指令,系统就会报出找不到该指令,也就代表我们将该软件成功卸载了。

查找

如果我们想看一下这个包管理器都有哪些安装软件,我们此时可以把包管理器所有的软件列出来,但由于包管理器里面有很多软件,这里我们就不全部罗列出来,我们查找其中包含相同字符的软件就行

格式:apt list | grep sl

我们先把包管理器里面所有的软件放到管道里面去,然后使用grep指令抓取含sl的相关软件,此时就会帮我们罗列出所有包含sl相关的软件,此时就会有大量的文件刷屏。

二、Linux 上的软件是谁提供的?

理解了 Linux 软件安装的演进,我们自然会产生下一个疑问:我们在 apt install 时,那些源源不断的软件包究竟出自谁手?又是通过怎样的途径来到我们的机器上的?这不仅仅是一个技术问题,更关乎 Linux 庞大的生态系统。

2.1 配套软件之于操作系统生态

如何评估一款操作系统的优劣?

绝不仅仅是看它的内核版本有多高,而是由其生态所决定的。

一个健康的操作系统生态是由多个维度共同构成的:

  1. 内核版本:提供最底层的硬件管理和核心功能。
  2. 文档与社区支持:完善的文档和活跃的社区(如 CentOS、Ubuntu 社区)能帮助用户快速解决问题。
  3. 用户群体与应用场景:使用者越多,生态越繁荣。
  4. 核心问题解决能力:是否能高效解决特定领域的问题。

而在这其中,一款操作系统背后的配套软件无疑是生态中至关重要的一环。 为什么?因为操作系统本身只是一个平台,真正为用户创造价值的是运行其上的应用程序。如果一个系统虽然高效,但其上缺乏好用的编译器、Web 服务器、数据库等配套软件,或者这些软件的获取极其困难,那么这个操作系统生态就是不完整的,也难以被大众接受。Linux 的成功,很大程度上归功于其背后极其丰富的开源软件生态。

2.2 Linux 上软件的提供过程

那么,这些软件是如何从开发者的电脑上,最终安装到我们的 Linux 机器上的呢?这是一个多方协作的过程。我们将这个过程概括为三个主要阶段,涉及三个核心主体:

2.2.1 开发者与开源商业模式

一切源于开发者。他们编写源代码,并通常选择开源的方式发布。

这里有一个重要的知识点:开源,本质上是一种商业模式。

它不一定意味着免费,更多的是意味着代码的透明与协作。这种模式保证了软件来源的源源不断和持续更新。

2.2.2 社区与构建系统

开发者发布源码后,Linux 发行版社区(如 CentOS 社区、Ubuntu 社区,www.centos.org / ubuntu.org)接过了接力棒。

社区不仅提供云服务器,更重要的是建立了一套构建系统。社区志愿者或员工会将源码在不同硬件架构上进行编译,修复兼容性问题,并将其打包成 RPM 或 DEB 格式。(社区运行不下去了?依赖这个社区的公司会自发为这个社区捐款。)

在这个过程中,软件会被分类:

Base 源(稳定源):包含操作系统运行所必需的核心、稳定的软件。

EPEL 源(扩展源):由 Fedora 社区维护,新出的软件都是在这个里面,等到一段时间后慢慢移入 Base 源。

有这两个源的原因是让软件池更加干净。除了这两个还有 Update 等等其他的一些。

2.2.3 我们的 Linux 机器与包管理器

最后,回到我们的 Linux 机器:

    我们的机器是如何知道去哪里下载这些软件的呢?答案就在操作系统内部内置的配置文件中。

    在 CentOS 中,这些配置文件通常位于 /etc/yum.repos.d/ 目录下。当你运行 yum install 时,yum(或 apt)会读取这些配置文件中的下载链接(repo 地址),然后自动连接到社区提供的服务器进行下载和安装。

总结:也就是说那些开源者把他们开发好的软件都统一打包放到公共的社区里面,这个社区不仅仅存放软件,并且还提供了云服务器。而当我们在云服务器上下载不同版本的操作系统时,我们就会去相应的社区进行下载,此时我们就会链接相应的社区,自然而然我们就能安装社区里面的软件。

2.3 镜像

2.3.1 镜像的概念

在上述过程中,存在一个现实问题:社区的服务器通常在国外,对于国内用户来说,直接下载速度极慢且不稳定。为了解决这个问题,镜像(Mirror)技术被广泛应用。

什么是镜像?

国内的大型互联网公司(如阿里、腾讯、百度)、高校(如清华、中科大)会定期将国外社区服务器上的所有软件包"克隆"一份,存放在自己位于国内的服务器上。这些国内的服务器就是国外原版服务器的镜像源。

优势: 国内用户通过访问国内的镜像源,可以获得极快的下载速度,极大地提升了软件安装的体验。

配置: 用户只需要修改 Linux 机器上 /etc/yum.repos.d/ 目录下的配置文件,将默认的国外下载链接切换为国内的镜像源链接即可。

三、编辑器 vim是什么?

vim 就是一个编辑器,我们在前面所学的 nano 也是一个编辑器,接着进入文件进行编辑,而这里我们新学的一个编辑器就是 vim 编辑器。

2.4.1 当前机器的 vim 的信息查看

   使用 vim --version 可以看到版本号、功能开关、脚本支持、终端特性等等内容。

   

2.4.2 vim 的基本概念

课堂上我们讲解 vim 的三种模式(其实有好多模式,目前掌握这 3 种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

• 正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode

• 插入模式(Insert mode)

只有在 Insert mode 下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

• 末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开 vim,底行模式直接输入 :help vim-modes

2.4.3 Vim 的基本操作

进⼊vim,在系统提⽰符号输⼊vim及⽂件名称后,就进⼊vim全屏幕编辑画⾯:

• 不过有⼀点要特别注意,就是你进⼊vim之后,是处于正常模式,你要切换到插⼊模式才能够输⼊⽂字。

正常模式切换⾄插⼊模式

• 输⼊a

• 输⼊i

• 输⼊o

插⼊模式切换⾄正常模式

• ⽬前处于插⼊模式,就只能⼀直输⼊⽂字,如果发现输错了字,想⽤光标键往回移动,将该字删除,可以先按⼀下「ESC」键转到正常模式再删除⽂字。当然,也可以直接删除。

正常模式切换⾄末⾏模式

• 「shift+;」,其实就是输⼊「:」

• 退出vim及保存⽂件,在正常模式下,按⼀下「:」冒号键进⼊「Lastlinemode」,例如:

• :w(保存当前⽂件)

• :wq(输⼊「wq」,存盘并退出vim)

• :q!(输⼊q!,不存盘强制退出vim)

   (1)命令模式

此时我们vim test.c回车之后就进入文件了,此时我们就可以直接对文件进行编辑,这种方式也就是命令的模式,vim test.c就进入命令模式。

(2)插入模式

当我们进入命令模式之后,如果我们想对文件进行编辑,我们可以按下键盘当中的i 案件,此时文件就进入了插入模式,此时我们就可以任意编辑了

此时我们就进入了insert插入模式,如果我们想退出insert模式呢?我们此时直接按我们键盘左上角的Esc退出插入模式又回到了命令模式。

(3)底行模式

在命令模式下按下 shift + ;(即 :)进入。用于保存文件(w)、退出(q)或执行复杂命令。

当我们对文件进行了插入之后,退到命令模式,如果我们想保存代码并且退出该文件,我们此时只需要点shift + : 也就是; 就可以进入到底行模式,可以输入相应的指令。

此时我们进入到底行模式之后输入wq也就是保存并退出,让后查看文件,正好是我们所编辑的文件,也就代表写入成功。

但是如果我们进入到底行模式,我们不想输入指令,想返回到命令模式,我们可以直接按Esc就回到了命令模式。

2.4.4命令模式、插入模式、底行模式三者之间的关系

由上图也看出插入模式与底行模式之间无法切换,要想切换到彼此的位置,都需要退到命令模式,接着进一步进入到相应的模式。

相关推荐
洪流之源1 小时前
Windows 远程 Ubuntu 24.04 桌面
linux·windows·ubuntu
民乐团扒谱机1 小时前
【超详细】PyQt6 实现 AU 风格波形图编辑器:多级缩放与采样点逐级渲染,附全过程代码
开发语言·python·编辑器·pyqt·audition·时域·频谱图
2401_862880821 小时前
Linux应用层开发 --- HTTP
linux·运维·http
s_w.h1 小时前
【 linux 】线程互斥与同步
java·linux·服务器·开发语言
可爱系程序猿1 小时前
libcrypto-3-x64.dll 加载失败排查:OpenSSL 3 版本、PATH 顺序与 x64 依赖如何对应
linux·运维·服务器·程序人生·电脑
zbyyd1 小时前
Linux 网络编程:IO 多路复用
linux·运维·c语言·网络
fengyehongWorld1 小时前
Linux 域名申请与DNS解析
linux·运维·服务器
晊晌_h2 小时前
嵌入式从0到精通——Linux 网络通信|TCP、HTTP 网络编程
linux·c语言·网络
筝筝ba2 小时前
linux查询某个网卡是否插了对应网线的命令
linux·运维·网络