一、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本地配置
配置将来是在干什么?
yum
会根据/etc/yum.repos.d/
该路径下面的配置文件,来构成自己的下载链接(根据OS
版本,根据你要下载的软件),yum
帮我们下载,安装。- 一般的机器,内置的链接地址是
CentOS
的官网,软件链接都指向的是国外的。yum
可能会比较慢,所以需要我们配置。
那要如何配置呢?本质就是更改文件,或者更改文件内容。 以阿里云为例(阿里云官方镜像站:https://developer.aliyun.com/mirror/
):
- 先备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 下载新的
CentOS-Base.repo
到etc/yum-repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 清除缓存,生成缓存,升级更新
yum clean all
,yum makecache
,yum -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
打开文件时,都会跳出提示,那么如何去点提示呢?
- 写代码时,文件是打开的,但没有对文件内容做任何修改(即文件是最新的),此时断网将不影响,下次仍然正常打开,不会跳出提示;
- 若将文件编辑了一下,此时断网或断开
Xshell
,然后再打开文件时会有提示,我们可以先shift + r -> R
恢复文件,进入文件然后正常保存并退出,最后再删除vim
维护的临时文件(.
开头,需要ls -la
查看)即可 - 同情况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的几个相关问题
- 在
vim
中如何批量化注释和批量化去注释?
具体操作:Ctrl + v
进入视图模式,->h,j,k,l
进行区域选择,->//
注释,->Esc
退出。如此便完成了批量化注释。去注释:Ctrl + v
进入视图模式,->h,j,k,l
进行区域选择,注意要包含//
,->再按d
便完成了去注释操作。
- 普通用户无法进行
sudo
提权,要如何操作?即如何在sudoers
配置文件中添加自己?
此配置文件存在于路径/etc/sudoers
下,使用vim
打开并修改内容(注:要用超级用户账户root
打开),具体操作如下:
- vim的配置问题
原理: vim不是简单直接执行可执行程序就行,也会先读取若干配置文件(名为.vimrc的文件)。 那么我们便可在此文件中添加指令或链接,来完善编译环境(如:自动缩进,自动补齐,显示行号等等)。如:在文件.vimrc添加set nu,那么再用vim打开文件写代码时,便会显示行号。其余操作还请自行搜索