【Linux】--- 详解Linux软件包管理器yum和编辑器vim

目录

  • [一、Linux软件包管理器 - yum](#一、Linux软件包管理器 - yum)
    • [1.1 yum和软件包是什么](#1.1 yum和软件包是什么)
    • [1.2 Linux系统(Centos)的生态](#1.2 Linux系统(Centos)的生态)
    • [1.3 yum相关操作](#1.3 yum相关操作)
    • [1.4 yum本地配置](#1.4 yum本地配置)
  • [二、Linux编辑器 - vim使用](#二、Linux编辑器 - vim使用)
    • [2.1 vim的基本概念](#2.1 vim的基本概念)
    • [2.2 vim命令模式命令集](#2.2 vim命令模式命令集)
    • [2.3 vim末行模式命令集](#2.3 vim末行模式命令集)
    • [2.4 关于vim的几个相关问题](#2.4 关于vim的几个相关问题)

一、Linux软件包管理器 - yum

1.1 yum和软件包是什么

yum是一个软件下载安装管理的一个客户端 ,如类似的小米应用商店,华为应用商城...。Linux中软件包可能会有依赖关系 (如我们安装游戏时,除了游戏的可执行程序,可能还安装了一堆的动态库,配置文件等等,都与游戏放在了一起,这些都是由厂商打包好的)--- yum会帮我们解决依赖关系的问题(即当我们需要安装A软件时,可能依赖B软件,还依赖C动态库,那么yum会帮我们一并下载)。

那什么是软件包呢?

  • Linux下安装软件, 一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序 。
  • 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。
  • 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系。
  • yum(Yellow dog Updater, Modified)Linux下非常常用的一种包管理器.。主要应用在Fedora, RedHat, Centos等发行版上。

那么软件包是谁给的呢? 便有了下面这个问题

1.2 Linux系统(Centos)的生态

三种安装方式:源代码安装,rpm包安装,yum安装:

源代码安装: 一些软件是开源的,我们可以直接下载源代码,并在我们自己的环境下编译,安装。但此方法十分麻烦,因为编译环境的不同,所以在我们这不一定能编过。 出现编译报错,那就还要解决交叉编译的问题,还有就是软件间的依赖关系。

rpm包安装: 那么将一份源代码在不同的环境编译好,就形成了rpm安装包。 我们只需获取与我们编译环境相同的安装包即可。但rpm包安装并没有很好的解决软件间的依赖关系,有时安装的一个软件可能还缺少某种库。

yum安装: rpm包安装的基础上,解决好依赖关系便形成了yum安装 。一些程序员会把项目在不同环境下编好,形成对应的安装包放在服务器的系统上,我们只需要yum install XXX来安装即可。那么它怎么知道要到哪台服务器上去找呢?所以我们的机器内部,一定内置了目标服务器的地址链接! 所以我们使用yum install XXX来安装软件时,我们的系统总是能找到目标服务器,搜索并找到要下载的软件,然后下载到本地并安装。

这些yum源被放在了此路径下:/etc/yum.respos.d/下,使用ls查看:

1.3 yum相关操作

搜索: yum list | grep XXX,通过 yum list命令可以罗列出当前一共有哪些软件包。由于包的数目可能非常之多,这里我们需要使用 grep命令只筛选出我们关注的包。如下:

注意事项:

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

安装: (sudo提权/root身份)执行yum install [-y] XXX

注意事项:

  • 安装软件时由于需要向系统目录中写入内容,一般需要 sudo或者切到root账户下才能完成。
  • yum安装软件只能一个装完了再装另一个。正在yum安装一个软件的过程中,如果再尝试用yum安装另外一个软件,yum会报错。
  • 如果 yum 报错,请自行百度。

卸载: (sudo提权/root身份)执行yum remove [-y] XXX


base,为基本软件源,里面是很稳定的软件 ;为了不断的在base中扩容,就产生了 epel,为扩展软件源,里面大多是新的软件,里面软件可能不太稳定或未经过长时间检测 。一旦一些软件已经很稳定或被用了很长时间,就可以将这些epel中软件选择到base中。扩展软件源安装:yum -y install -y epel-release

1.4 yum本地配置

配置将来是在干什么?

  1. yum会根据/etc/yum.repos.d/该路径下面的配置文件,来构成自己的下载链接(根据OS版本,根据你要下载的软件),yum帮我们下载,安装。
  2. 一般的机器,内置的链接地址是CentOS的官网,软件链接都指向的是国外的。yum可能会比较慢,所以需要我们配置。

那要如何配置呢?本质就是更改文件,或者更改文件内容。 以阿里云为例(阿里云官方镜像站:https://developer.aliyun.com/mirror/):

  1. 先备份
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  2. 下载新的CentOS-Base.repoetc/yum-repos.d/
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  3. 清除缓存,生成缓存,升级更新
    yum clean allyum makecacheyum -y update

二、Linux编辑器 - vim使用

2.1 vim的基本概念

这里介绍vim的三种模式(其实有好多模式,其余请自行了解),分别是命令模式(command mode),插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  • 正常/普通/命令模式(Normal mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。即允许使用者通过命令,来进行文本的的编辑控制。
  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,在命令模式下,按a / i / o都可进入该模式,i:是从光标当前位置开始输入文件,o:是插入新的一行,从行首开始输入文字,a:是从目前光标所在位置的下一个位置开始输入文字。按「ESC」键可回到命令行模式 。该模式是我们后面用的最频繁的编辑模式,即文本的编辑模式。
  • 末行模式(last line mode)
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift + ; -> :即可进入该模式,同样按「ESC」键可回到命令行模式。 该模式主要用来让vim进行包括但不限于与shell的交互。

如果我们在vim中编写代码时,vim会为我们维护临时文件,来应对vim退出时没有保存的内容,形成临时文件,保障数据的安全 。但下次每当我们vim打开文件时,都会跳出提示,那么如何去点提示呢?

  1. 写代码时,文件是打开的,但没有对文件内容做任何修改(即文件是最新的),此时断网将不影响,下次仍然正常打开,不会跳出提示;
  2. 若将文件编辑了一下,此时断网或断开Xshell,然后再打开文件时会有提示,我们可以先shift + r -> R恢复文件,进入文件然后正常保存并退出,最后再删除vim维护的临时文件 (.开头,需要ls -la查看)即可
  3. 同情况2,在恢复文件后我们再次打开,直接shift + d -> D删除即可。

2.2 vim命令模式命令集

  • 移动光标:
    vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格

    「 $ 」:移动到光标所在行的"行尾"

    「^」:移动到光标所在行的"行首"

    「w」:光标跳到下个字的开头

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

    「b」:光标回到上个字的开头

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

    [gg]:进入到文本开始

    [shift+g]:进入文本末端

    「ctrl」+「b」:屏幕往"后"移动一页

    「ctrl」+「f」:屏幕往"前"移动一页

    「ctrl」+「u」:屏幕往"后"移动半页

    「ctrl」+「d」:屏幕往"前"移动半页

  • 删除文字:
    「x」:每按一次,删除光标所在位置的一个字符
    「#x」:例如,「6x」表示删除光标所在位置的"后面(包含自己在内)"6个字符
    「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符
    「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符
    「dd」:删除光标所在行
    「#dd」:从光标所在行开始删除#行

  • 复制:
    「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
    「#yw」:复制#个字到缓冲区
    「yy」:复制光标所在行到缓冲区。
    「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
    「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

  • 替换:
    「r」:替换光标所在处的字符。
    「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

  • 撤销上一次操作:
    「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
    「ctrl + r」: 撤销的恢复

  • 更改:
    「cw」:更改光标所在处的字到字尾处
    「c#w」:例如,「c3w」表示更改3个字

  • 跳至指定的行:
    「ctrl」+「g」:列出光标所在行的行号。
    「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

2.3 vim末行模式命令集

  • 列出行号:
    「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。跳到文件中的某一行
    「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,

    再回车,就会跳到文章的第15行。

  • 查找字符:
    「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
    「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。问题:/和 ?查找有和区别?/会将光标置于搜索到的所有关键字的第一个,而?会将光标置于搜索到的所有关键字的最后一个!

  • 保存文件:
    「w」: 在冒号输入字母「w」就可以将文件保存起来离开vim
    「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
    「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
    「!」:表示强制执行

  • 其他:
    「! command」:表示不退出vim,可以进行shell命令的执行,常用作函数的查看(man)。
    「vs filename」:表示分屏,多文件操作。
    「Ctrl + ww」:多文件操作时,转换光标位置(切屏)。

2.4 关于vim的几个相关问题

  1. vim中如何批量化注释和批量化去注释?

具体操作:Ctrl + v进入视图模式,->h,j,k,l进行区域选择,->//注释,->Esc退出。如此便完成了批量化注释。去注释:Ctrl + v进入视图模式,->h,j,k,l进行区域选择,注意要包含//,->再按d便完成了去注释操作。

  1. 普通用户无法进行sudo提权,要如何操作?即如何在sudoers配置文件中添加自己?

此配置文件存在于路径/etc/sudoers下,使用vim打开并修改内容(注:要用超级用户账户root打开),具体操作如下:

  1. vim的配置问题

原理: vim不是简单直接执行可执行程序就行,也会先读取若干配置文件(名为.vimrc的文件)。 那么我们便可在此文件中添加指令或链接,来完善编译环境(如:自动缩进,自动补齐,显示行号等等)。如:在文件.vimrc添加set nu,那么再用vim打开文件写代码时,便会显示行号。其余操作还请自行搜索

相关推荐
博语小屋5 分钟前
进程初识之进程状态
linux
吉凶以情迁1 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
柏木乃一2 小时前
Linux初步认识与指令与权限
linux·运维·服务器·shell·权限
Joemt2 小时前
ubuntu源码编译安装cmake高版本、pybind11安装、crow使用
linux·运维·ubuntu
huohuopro3 小时前
在linux(ubuntu)服务器上安装NTQQ并使用
linux·ubuntu
Jooolin3 小时前
Ubuntu?Centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·ai编程
Sadsvit3 小时前
Linux 进程管理与计划任务
linux·服务器·网络
bigcarp4 小时前
linux + 宝塔面板 部署 django网站 启动方式:uwsgi 和gunicorn如何选择 ?
linux·运维·django
爱凤的小光4 小时前
图漾相机-ROS1_SDK_ubuntu 4.X.X版本编译
linux·数码相机·ubuntu