Linux 的软件生态 软件包管理器(yum)编译器 - vim

news2024/11/18 23:01:51

 Linux的软件生态

 在 手机 ipad 笔记本等等我们使用的产品当中,会有应用商店等等可以下载软件的 软件包管理器,当我们想要下载某一款软件的时候,就去这个应用商店当中搜索,或者是去寻找,找到之后,进行下载,安装;但是我们下载是在通过我们使用的这个应用商店的官方,维护的一个服务器当中进行下载的。

这个服务器当中会提前准备很多的软件,比如:抖音,bilibili等等软件。那么我们通过在手机当中的 “应用商店” 这样的 APP  来进行下载 和 安装软件,这个 其实也是一个客户端。比如我们现在下载 bilibili 这个软件,其实这个 bilibili 并不在本地,而是在远端的,只是在手机 APP 上给你 拉取一个 软件列表,给你搜索,在真正需要装的时候,是需要通过网络,从服务器当中 下载 这个软件到你 的本地,然后你在进行安装。

那么在 应用商店 当中 软件肯定不都是 维护这个 应用商店的人写的,其他人(公司,个人组织,处于某种目的,或者活动给我们提供软件服务)写的软件要通过 提交到服务器上,然后通过 应用商店进行 上线这个APP。上线之后 客户才能搜到,在手机的 应用商店当中,内置了服务器,所以我们能在其中找到软件下载。

如果实在windows 当中,我们是要自己寻找下载位置的,比如我想下载 vscode ,那么一般是在网上找到 其官网,然后在官网当中下载安装包,然后进行安装。

当然,现在 笔记本提供商已经内置了和手机一样的应用商店,也可以像手机一样进行下载安装。

那么在Linux当中也就相当于是 应用商店。

 那么在 LInux 当中的 yum 是谁来维护,谁来提供软件呢?

因为 LInux 是一个开源的操作系统,而且 LInux 的使用群体也不同!!! 在 Windows 当中我们所下载 游戏 等等这些娱乐项目,是提供给 小白用户的 ,这些在 LInux 当中都用不了,比如 lol,csgo 等等;但是在 LInux 当中的很多软件在 Windows 当中也是用不了的,因为 LInux 的用户一般是职业程序员。所以一般是客户需要什么,那么软甲的生产者,就生产什么。

LInux生态

 开源不是圣母,开源是一种商业战略,这就导致不同的版本都有不同的生态。而生态好就是:

  • 这个操作系统当中,获取的来源多,获取的来源官方;
  • 这个操作系统的版本是否是一个足够稳定的版本,在行业内共识,他是一个比较好的软件;
  • 这个操作系统是否有非常成熟,活跃的社区,这些社区当中有 很多问题,这些问题都被暴露出来,并且得到了解决;
  • 其中的软件的开放文档,是否丰富;
  • 这个操作系统的背后是否有非常多的软件生态,各种各样的软件的解决方案;

 而站在 OS 的开发者 ,推动者,设计者,的角度,他们要解决的是 更好的和用户互动,积极地推动使得生态更加完整,就花钱搞服务区,推广,让更多的自己OS 写的程序员来写软件。

那么一直使用免费的操作系统的人,就会对这个操作系统产生依赖,因为他已经在这个操作系统的基础之上做出了一些成就,或者是成果,那么此时,不仅仅是 这个操作系统的 提供者 不愿意像看到这个操作系统 ,或者这个操作系统的社区夸掉,其中的用户也不希望这个操作系统或者是操作系统的社区垮掉。

有句话说的就是 : 免费的才是最贵的。

Linux 软件包管理器(yum)

 在Linux 当中安装软件,一般情况是 有人写好了一段源代码,然后再 Linux 当中进行编译,编译之后得到了 可执行文件,这个可执行文件就是我们可以使用的软件了。

上述方法会出现一些问题,比如,某人写的源代码,用到了别人写的代码,或者是其他的 工具等等,那么其他人如果像使用它的 源代码 编译出 可执行文件的话,就必须把对应的 代码 或者是其他 东西 下载下来,然后经过一些操作,才能编译出 可以用的可执行文件。

而且像上述一样实现太麻烦了,所以有人就直接把 一些 编译好的可执行文件(软件)做成了 软件包(这里的软件包可以理解为 Windows 当中的 安装程序)放在一个服务器上,这就是在线的软件包。然后我们通过 软件包管理器 就可以很方便的获取到这个已经编译好的软件包,就直接可以进行安装。

这里的软件包和 软件包管理器 就好比手机当中的 " APP " 和 "  应用商店 "这样的关系。

而 yum 就是一种 软件包管理器,是在 Linux 当中常用的一种软件包管理器,主要是在 Fedora, RedHat,Centos等发行版本上应用。

yum,可以帮我们解决,安装源的问题,安装版本,安装依赖。这些问题。

 需要注意的是,yum只有 root 用户才能使用,普通用户是不能使用的,除非是 Linux 信任的白名单用户可以使用 sudo + 命令 来强制执行 这个命令。

在 Linux 当中安装rzsz 软件

在windows 当中,如果我们使用 云服务器来使用 Linux 系统的话,那么我们就会使用 Xshell 这个软件,而 rzsz  这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。

 安装完毕之后可以通过拖拽的方式将文件上传过去

 使用 如下 命令可以查看当前 Linux 操作系统下 安装了多少 软件,他可以把所有的都列举出来:
 

yum list

但是一般软件都比较多,所有都列举出来我们不好找,所以我们使用 如下 命令来结合 " | "  管道来查看某一个 软件是否安装:

yum list | grep 软件名

 yum就是 一个应用商店,那么他是如何找到 对应软件的 在哪儿呢?

 我们一般在手机当中的应用市场下载软件的时候,他是应用商场当中内置了这个软件的下载链接。

在Linux当中这个下载链接就存储在一下路径当中:
 

/etc/yum.repos.d/

 目录当中有 CentOS-Base.repo 的这个文件,而且我们之前在安装 lrzsz 的时候,后面就有 @base 这个文件属性,这就表示这个软件的下载是来自哪里的,如上,就是来自 Base的,当我们进入这个 CentOS-Base.repo 文件之后,就可以看到下载链接了:

 这些都是下载链接。

而使用 yum ,他就可以自动的在这些链接当中去寻找这个软件,然后下载安装。这些链接我们也是可以手动打开的。

 那么在上述 CentOS-Base.repo 这个文件当中可以下载的软件都是 认可的 yum源,那么肯定也有不被官方认可的 yum源,也就是应用市场当中没有的。也就是说,有准官方,和非官方的 yum源(扩展源)。

比如现在我们安装 epel 这个扩展源:

yum install -yepel -release

 其中有些一些比较好玩的 软件: cowsay     sl     。

可以使用 yum remove 来卸载一个软件。

 而一般的Linux操作系统,默认安装的都是国外的 yum 源,可能访问的时候比较慢,可能需要更新yum源-- 替换 yun 源文件。而云服务器,一般是已经替换为国内的yum源了。

Linux 编译器 - vim 

 vim 他是一个 编辑器,用于文本的编写,我们一般用于写代码

vim 是一个 多模式的 编辑器:命令模式,插入模式,底行模式等等

 也就是说,当我们用vim 打开一个 文件进行编辑的时候,它有多种模式对这个文件进行 编辑

 如上图,我们vim 这个  text.c  文件,然后就会进入如下界面:

这时候,我们敲键盘,像写代码的话是没有什么反应的,因为 vim 进入 文件的话默认是 命令模式。

 在命令模式当中,用户所有的输入都被当做是 命令一般不会作为文本输入

 所以,如果我们想要在 vim 当中对文件 ,写代码,那么就要进入插入模式,我们按下 i ,就可以进入插入模式

 此时左下角变成 如上图所示,表示是 插入模式。这时候我们就可以 以文本方式输入了:

 那么如果我们想要退出这个插入模式,只需要无脑按下 esc 就行了,就会退回到 命令模式:

 此时左下角不做显示了。

如果我们想退出这个vim 编辑器,那么需要从 命令模式 进入 底行模式

 在命令模式下,按下 shift + :  就可以进入底行模式,此时在底部显示如下图所示:

 我们输入 wq 就可以退出这个 vim 编辑器。这里的 w 表示的意思是 保存的意思,q 代表的是 退出vim的意思。

 此时查看 text.c  文件;

 那么由底行模式退回到 命令模式,还是无脑 esc

 注意:我们一般在操作 vim 退出的时候,还是使用  上述 底行模式 输入 wq 的方式退出,如果使用 一些快捷方式来退出的话可能会出现一些问题,比如  一些快捷方式退出的话,不会结束掉 vim编辑器,时间久之后,可能会开 上百个 vim 从而导致 服务器挂掉。所以我们,一般建议用 底行模式 输入 wq 的方式来退出 vim。

 插入模式底行模式之间 只能通过 命名模式来转换

在退出文件时候,如果出现下述错误:

 

 错误原因:

  • 当前用户没有对这个文件进行修改的权限。
  • 该文件没有正常的保存退出,如果这个文件处于正在打开的状态,那么我们再次用vim进入这个文件,就报错。
  • 如果这个文件都正常关闭,提示有人没有正常关闭,则删除这个文件的临时文件就可以,继续打开进行操作。

 此处参考引用博客;(2条消息) Linux修改文件出现错误E45:“readonly” option is set(add ! to override)退出不了vim_e45 readonly_jgm20475的博客-CSDN博客

 vim 当中底行一些模式命令

 如果我们在用 vim 创建一个文件并写入的时候,没有对这个文件进行保存,那么这个文件不会创建在 路径下。因为 vim 它默认不会创建文件,只有当你 在底行模式下,输入 w 保存之后,才会创建。

 在底行模式当中输入 ,

vs 文件名

 可以进行多个文件同时用vim 来编辑,进行分屏操作;那么光标所在哪一个屏当中,就是对哪一个文件进行操作,我们可以使用 ctrl + ww 来进行换屏操作!!

 在 vim 编辑的 text.c,文件同时,用vim编辑 text1.c  文件 :

 此时就可以分屏:

 使用 ctrl + ww 来切屏;

 !:表示强制的意思,w!就是强制保存;q!就是强制退出;wq!就是强制保存并退出。

 !+ 命令:可以在命令行当中直接执行这些命令。如:! ls,在不退出vim的情况下,浏览当前目录下文件。同样,gcc xxxxx       ./a.out  就可以直接编译这个源文件,并执行对应的可执行文件,同时不会退出vim

 如下例子,直接用 gcc 编译器 编译这个 text.c 源文件。(需要注意的是,执行之前,需要保存执行源文件

 

 

 执行可执行文件:

输出: 

 

 set nu:调出 文本行的行号;输入之后 效果如下:

 set nonu:删除 文本行的行号;输入之后 效果如下:

 

 

 vim 命令模式当中的命令

 在 vim 当中有如下的命令:

gg:把光标定位到 整个文本行的第一行;

G(shift + g  或者是  使用 Caps 大写锁定):把光标定位到 整个文本行的最后一行;

nG: 先输入一个数字,然后 输入 G,就可以移动到这个文本当中的 第n行。如下我们移动到第5行。

 yy:复制光标所在行;

p: 把复制的内容粘贴到光标的下一行:

 (n)p :在光标所在行的下一行粘贴n个复制的内容;如下复制了1000行 printf("hello world");

 (n)yy:复制光标所在行开始的 n 行内容。如下述输入 2 yy p :

 u:表示撤销,同 windows 当中 ctrl + z。

ctrl + r : 反撤销,相当于 撤销撤销,同 windows 当中的 ctrl + z。

(n)dd:剪切光标所在的行开始的n行。或者说是删除,也为剪切也就同时把这一n行所删除了。

 $:定位到光标所在行 的最右侧(结尾);

^:定位到光标所在行 的最左侧(开头),需要注意的是由字符的最左侧:

 w:按照单词为单位向后移动;

b:按照单词为单位向前移动;

我们可以使用 上下左右 方向键来进行一个字符一个字符的移动,同时为了方便,还有 对应 h j k l的方式来移动,分别对应的是 做 下 上 右。

 shift(按住不动)+ ~  :可以从光标开始,按一次 “ ~ ”  就往后 修改一个字符大小写,如果这个字符是大写的,就改成小写的;如果这个字符是大写的,就把这个字符改成小写的;

 (n)r  + 字符:把光标所在字符开始之后的n个字符,修改为 r 之后跟这个的那个字符;如下我们输入 4 r x :

 R:从光标开始的字符,往后我们输入的字符都会替代原本的字符;当我们按下 R 之后,在屏幕的左下角就会出现 一下字样:

 如果需要退出 R 的界面可以 按下 esc。下面例子是修改当中的输入:

 如上述当中  R 也属于 vim 当中一种模式,如果需要退出可以无脑 esc。

(n) x:向右删除一(n)个字符;相当于 windows 当中的 delete。

按「e」:光标跳到下个字的字尾;

按「#l」:光标移到该行的第#个位置,如:5l,56l;

按「ctrl」+「f」:屏幕往“前”移动一页;

按「ctrl」+「u」:屏幕往“后”移动半页;

按「ctrl」+「d」:屏幕往“前”移动半页;
 

vim的 插入模式的命令

按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

按「o」进入插入模式后,是插入新的一行,从行首开始输入文字;

 vim的配置

 默认的 vim 都是裸的vim,没有经过配置,不太好用。我们可以配置我们的 vim 从而 让 vim 更加好用。

配置 vim 需要在 家目录(/home)下 ,创建一个 隐藏文件 (vimrc):
 

 我们想要配置的配置项,就是在 .vimrc  当中写的。

 

 如上,使用 vim 在其中写入 底行模式 当中的命令,输入如下内容:

 此后我们再使用 vim 编辑其他文件的时候,就有行号显示了。上述的 " : " 可以不写。

 具体的其他配置功能可以看如下资源:

Vim 配置入门 - 阮一峰的网络日志 (ruanyifeng.com)

 那么上述每一个在自己 home 下配置的 vim 只会影响自己的 vim。不会互相影响。

  不建议给root 用户做 vim 的配置,他的配置目录在 如下 路径:

/etc/vimrc

 

 傻瓜式一键安装:

他不是 隐藏文件。
VimForCpp: 快速将vim打造成c++ IDEhttps://gitee.com/HGtz2222/VimForCpp

 或者 复制下面链接,在LInux 当中直接执行:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

最后注意:

 Xshell 当中可以这样修改主题:

 

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

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

相关文章

Linux Kernel源码阅读: x86-64 系统调用实现细节(超详细)

0、前言 本文采用Linux 内核 v3.10 版本 本文不涉及调试、跟踪及异常处理的细节 一、系统调用简介 系统调用是用户空间程序与内核交互的主要机制。系统调用与普通函数调用不同,因为它调用的是内核里的代码。使用系统调用时,需要特殊指令以使处理器权限转…

初识Linux操作系统及常用的Linux命令

Linux是一种自由和开放源码的类UNIX操作系统,也是一种基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随互联网的发展,企业对服务器速度和安全的要求越来越高,Linux系统由于具有性能稳定、防火墙组件性能高效、配置简单等…

Java内存模型的抽象结构 JMM

并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步。 线程之间如何通信:共享内存,消息传递线程之间如何同步通信是指线程之间以何种机制来 交换信息同步是指程序中用于控制不同线程间 操作发生相对顺序 的机制在共享内存的并发模型里&a…

Maven 详细教程(万字长文)

目录 一、Maven的简介二、Maven安装与配置三、Maven POM四、创建 Maven 项目五、Maven项目的构建与测试六、Maven依赖七、Maven仓库(本地仓库远程仓库)八、Maven生命周期(cleansitedefault)九、Maven常用插件十、Maven 版本号约定…

大模型时代的prompt学习(持续更新)

目录 为什么要学prompt基本原则prompt撰写框架Base Prompt FrameworkCRISPE Prompt Framework 场景撰写文案文档竞品分析产品设计数据分析 chain of thoughtzero shotin context learning(few shot)Self-Consistency Program-Aidedprompt tipsTo Do and Not To Doadd examples引…

水下图像0

d_r_1_.jpg 一个拖着电线的水下六足机器人在海水中作业 A robot is exploring the reef on the sea floor A hexapod robot works next to reef at the bottom of the sea A rectangular deep-sea robot swims past a patch of reef An underwater robot is detecting coral …

神经网络视觉AI“后时代”自瞄实现与对抗

通俗一点来说,自瞄是在FPS射击游戏中最为常见的作弊手段之一,当下最火爆的CSGO也深受其扰,在此我说些我自己的看法,欢迎大家在下方留言讨论; (1)软件层面 在神经网络方面的视觉AI应用流行之前&…

面试官:工作三年,还来面初级软件测试?恐怕你的软件测试工程师的头衔要加双引号...

相信身为测试工程师的你可能经历过这些: 已经工作三年了,每个项目都会加班加点全力以赴去完成,薪资增长幅度却不如人意。 听说年后离职的老同事,金三刚拿下高薪offer,年薪直奔50万了。 由于现在的公司接触不到新技术&…

docker(一)安装部署卸载以及基础命令使用

文章目录 1、安装1.1、安装插件1.2、设置源:1.3、安装docker卸载docker:1.4、配置国内源 2、基础命令3、提交某个镜像为新的镜像4、docker 存档 1、安装 机器配置: 1.1、安装插件 [rootdophin ~]# yum -y install yum-utils1.2、设置源: …

Spring相关面试题(Spring核心)

Spring相关面试题 谁定义了bean的生命周期IOC初始化 IOC启动阶段 (Spring容器的启动流程)Spring-IOC是什么IOC是什么DI是什么 依赖注入 DI的三种方式Spring-AOP是什么OOPAOPAOP实现方式动JDK动态代理和CGLIB动态代理 JDK动态代理和CGLIB动态代理IOC 和 AOP 的联系和区别 BeanFa…

【2023 · CANN训练营第一季】应用开发(初级)第五章——媒体数据处理

1.媒体数据处理 受网络结构和训练方式等因素的影响,绝大多数神经网络模型对输入数据都有格式上的限制。在计算机视觉领域,这个限制大多体现在图像的尺寸、色域、归一化参数等。如果源图或视频的尺寸、格式等与网络模型的要求不一致时,我们需…

LLMs开源模型们和数据集简介

本篇文章整理下目前常用的LLMs模型们和数据集简介。 BackBones ​https://github.com/FreedomIntelligence/LLMZoo 可以看到目前被广泛用来作为LLMs的backbone的模型有以下特点: Backbone:基于某个开源backbone,如GLM、LLaMA、BLOOMZ&#…

Android 文本识别:MLKIT + PreviewView

随着移动设备的普及和摄像头的高像素化,利用相机进行文本识别成为了一种流行的方式。MLKit 是 Google 提供的一款机器学习工具包,其中包含了丰富的图像和语言处理功能,包括文本识别。PreviewView 是 Android Jetpack 的一部分,它提…

2 files found with path ‘lib/arm64-v8a/libwechatbacktrace.so‘ from inputs

2 files found with path lib/arm64-v8a/libwechatbacktrace.so from inputs 解决方案,在app module的build.gradle里面的 android { } 块里面添加: packagingOptions {exclude lib/arm64-v8a/libwechatbacktrace.so} 如果有多个,就再增加行…

“宝石与石头”:一道简单却巧妙的力扣算法题

本篇博客会讲解力扣“771. 宝石与石头”的解题思路,这是题目链接。 先来审题: 以下是输出示例: 以下是提示: 本题可以使用数组模拟哈希表来实现。先把宝石字符串中的字符标识到数组的对应位置,每次拿石头字符串中的…

ChatGpt免费的镜像网站

目录 1.ChatGpt 简介 2.ChatGpt 免费网站合集 2.1 https://chat21.zhulei.xyz/ 2.2 Vega AI 创作平台 2.3 AI文本工具站 2.4 FancyPig (jqrai.one) 2.5 AiDuTu 1.ChatGpt 简介 ChatGPT是美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具&…

geotools简介

geotools简介 官网 https://docs.geotools.org/latest/userguide/index.html 架构图 特性 1. 主要特性 Geotools主要提供各种GIS算法,实现各种数据格式的读写和显示。在显示方面要差一些,只是用Swing实现了地图的简单查看和操作。用户可以根据Geoto…

运营-17.留存

如何定义留存 某段时间内的新增用户,经过一段时间后,又继续使用应用的被认作是留存 用户,这部分用户占当时新增用户的比例即是留存率,即用户没有流失; 例如: 5月份新增用户200,这200人在6月份启…

Abaqus——悬臂梁问题之工字梁实例

参考 有限元基础-第7课(悬臂梁问题)-2022年_哔哩哔哩_bilibili 实例 软件 Abaqus 2022 方法 通过线形式建模 具体操作 建模 1.打开部件的模块,创建一个零件。Name:自定义命名;Modeling Space:梁的空…

认识Vue中组件利器-插槽Slot-案例介绍

一. 插槽的使用 1.1. 认识插槽slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示; 但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定…