前言
Linux下,如何进行软件安装,查找,卸载
1.源代码安装
2. rpm安装方式,安装包的本质,就是把源代码在Linux下编译好,然后打包(别人把自己编译好的软件打包给你让你去安装)
上面这两种安装方式都有一些编译和对应库的问题,因为软件是存在依赖关系的。
比如 vim 一个c语言文件需要有对应的 lib64/libc.so.6 C语言标准库。
3. yum/apt 工具级别的安装 --- 自动解决依赖关系!
一、软件包管理器
1. 1 什么是软件包
- 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。
- 但是这样太麻烦了, 于是有些⼈把⼀些常用的软件提前编译好, 做成软件包RPM(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 把它下载下来然后安装到linux操作系统的特定目录下,直接进行安装。软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系。
- yum(Yellow dog Updater, Modified)是Linux下非常常用的⼀种包管理器. 主要应⽤在Fedora, RedHat, Centos等发行版上.yum提供了自动解决依赖关系、下载和安装软件包的功能。Ubuntu:主要使⽤apt(Advanced Package Tool)作为其包管理器。apt同样提供了自动解决依 赖关系、下载和安装软件包的功能。
Linux操作系统的内核一样,源代码一样,但是各个发行版本的生态不一样所以就有了多种Linux操作系统。
1. 2 Linux软件生态
- Linux各个发行版本下载软件的过程(Ubuntu、Centos、other)
这里自己的云服务器就类似于手机的应用商店,这个应用商店里面会内置上我要下载软件时所对应的软件包服务器对应的网络地址,在远端服务器找到对应的app并安装在本地
我们下载的软件是在远端的,所以我们在网络中把他下载安装到本地
Linux操作系统的各个发行版本都有自己的软件包服务器,开发者会把自己写好的软件编译形成二进制程序打包放在对应的软件包服务器上,让用户下载并安装;
- 为什么开发者会免费为特定社区提供软件,还发布?还提供云服务器让你下载安装?
因为这些软件也是Linux操作系统生态的一部分!!!要和其他发行版本的操作系统竞争,当然还要盈利!
提到下载的前提就是要:找到软件的地址!!
应该先找到软件包服务器的地址,而软件包服务器也是某种云服务器。
各个操作系统社区除了需要准备好软件还要有自己的云服务器把软件包传到云服务器上,还要把自己的云服务器的地址链接打包内置到他对应发行版本的操作系统发布的apt/yum的软件包的配置文件里,然后用户通过apt/yum工具就可找到对应的软件进行下载安装。
我们自己用的云服务器部署各种服务,做开发,测试,实际上这个云服务器上直接就可以部署某种网络文件传输的服务,把文件包括软件文件传输就是因为已经内置好了一切。
- 操作系统的好坏评估--- 生态问题
Linux操作系统的开发者,肯定是希望让更多的人用他这个发行版本 !
那么 开发者就不仅得写操作系统,还得维护社区论坛,官网文档等生态,还要支持和欢迎更多的开发者来给linux操作系统开发大量的上层应用,全方位的搭建linux操作系统的生态!!!
- 软件包依赖的问题
- 国内外镜像源切换
国内的软件包服务器把国外的软件包服务器镜像到国内让我们使用,同时修改一系列配置文件和给你提供国内的下载链接。
1.3 yum的具体操作
我们用到的指令其实是linux下特定路径下的二进制文件,我们yum/apt工具下载的软件也会到指定的系统目录下。
安装软件要以超级用户root身份进行安装,因为要拷贝下载下来的软件到指定系统目录,这里涉及到了权限的约束,所以需要以root身份来进行安装。
普通用户用 sudo 以超级用户(root)权限执行后续命令,避免普通用户权限不足的问题。
1.3.1 查看软件包
通过 yum list 命令可以罗列出当前⼀共有哪些软件包. 由于包的数目可能⾮常之多, 这⾥我们需要使⽤ grep 命令只筛选出我们关注的包. 例如:
我们也可以使用search命令来查找
sudo yum search sl | grep sl.x86
注意事项:
- 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
- "x86_64" 后缀表⽰64位系统的安装包, "i686" 后缀表⽰32位系统安装包. 选择包时要和系统匹配.
- 在 Linux 系统中,
sl.x86_64
指的是适用于 x86_64 架构(64 位 Intel/AMD 处理器)的Steam Locomotive命令行工具包。 - "el7" 表示操作系统发行版的版本.5.02 - 1.el7 5.02 - 1是代表的版本号 el7是指这个文件是在centos release 7下有效的
- 最后⼀列, @epel 表示的是 "软件源" 的名称, 表示是谁提供的,类似于 "小米应用商店", "华为应用商店" 这样的概念.
其实也不太需要用到查找这些工具,如果以后有需求需要下载软件直接可以通过AI大模型工具来搜索辅助你下载。
1.3.2 安装软件
通过 yum, 我们可以通过很简单的⼀条命令完成 lrzsz 的安装.
lrzsz是在Linux 终端实现文件上传和下载功能的工具。
# Centos
$ sudo yum install -y lrzsz
# Ubuntu
$ sudo apt install -y lrzsz
- yum/apt 会自动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装. 如果在命令行中加上 -y 就可以省去这一需要你确定的步骤
- 出现 "complete" 字样或者中间未出现报错, 说明安装完成.
注意事项:
- 安装软件时由于需要向系统目录中写入内容, ⼀般需要 sudo 或者切到 root 账户下才能完成.
- yum/apt 安装软件只能⼀个装完了再装另⼀个, 正在yum/apt安装⼀个软件的过程中, 如果再尝试用yum/apt安装另外⼀个软件, yum/apt会报错。
这种情况是当前发行版本的操作系统没有更新扩展源导致不支持下载这个软件 ,我们可以更新一下扩展源。
sudo yum install -y epel-release
1.3.3 卸载软件
也是通过命令行来卸载
# Centos
sudo yum remove [-y] lrzsz
# Ubuntu
sudo apt remove [-y] lrzsz
注意事项:
关于 yum / apt 的所有操作必须保证主机(虚拟机)网络畅通!!!
可以通过 ping 指令验证。
ping www.baidu.com
例如;
[zky1@hcss-ecs-0c30 ~]$ ping www.baidu.com
PING www.a.shifen.com (110.242.70.57) 56(84) bytes of data.
64 bytes from 110.242.70.57 (110.242.70.57): icmp_seq=1 ttl=48 time=11.6 ms
64 bytes from 110.242.70.57 (110.242.70.57): icmp_seq=2 ttl=48 time=11.6 ms
64 bytes from 110.242.70.57 (110.242.70.57): icmp_seq=3 ttl=48 time=11.6 ms
64 bytes from 110.242.70.57 (110.242.70.57): icmp_seq=4 ttl=48 time=11.6 ms
64 bytes from 110.242.70.57 (110.242.70.57): icmp_seq=5 ttl=48 time=11.6 ms
64 bytes from 110.242.70.57 (110.242.70.57): icmp_seq=6 ttl=48 time=11.6 ms
^C
1.3.4 安装源
Cetnos 安装源路径:
$ ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源
-rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源
# 安装扩展源,
# $ sudo yum install -y epel-release
Ubuntu 安装源路径:
$ cat /etc/apt/sources.list # 标准源
$ ll /etc/apt/sources.list.d/ # 扩展源
# ubuntu 安装扩展源,就结合未来具体场景
我们没有告诉yum / apt这些工具我们要下载的软件在哪里他就能下载安装,是因为centos/ubuntu系统里已经内置了软件源的链接地址。
这个命令可以看到安装源
ls /etc/yum.repos.d/
在 Linux 系统中,.repo后缀通常用于软件仓库配置文件。
软件仓库是存储软件包的地方,系统通过读取
.repo
文件来获取软件仓库的相关信息,如仓库的地址、包含的软件包类型、更新频率等。这样,当用户使用包管理工具(如 yum、dnf 等)安装、更新软件时,包管理工具就会根据.repo
文件中定义的仓库信息去查找和获取相应的软件包。例如,在 CentOS 系统中,
/etc/yum.repos.d/
目录下存放着各种.repo
文件,用于配置不同的软件源,包括官方源、第三方源等。每个.repo
文件对应一个软件仓库,通过修改这些文件中的配置信息,可以灵活地管理系统的软件来源和更新策略。
Centos-Base.repo 就是稳定软件源;
epel.repo 就是扩展软件源;
有些软件yum命令之后没安装成功可以看看是不是么有更新扩展源;
首先检查系统是否已安装扩展源(如 EPEL):
yum repolist enabled | grep -i epel
# 如果有输出(如epel/x86_64),说明已安装
如果已安装扩展源,直接使用yum update
更新所有软件包(包括扩展源中的包):
sudo yum update -y
更新源配置后,建议清除 yum 缓存并重新生成:
sudo yum clean all # 清除缓存
sudo yum makecache # 重新生成缓存
二、编辑器Vim
2.1 vim的基本概念
vim是一款在linux系统中广泛使用的强大文本编辑器,具有高度的可定制性和效率以下是关于vim的核心介绍
我们讲解vim的三种模式(其实有好多模式,前掌握这3种即可),分别是命令模(commandmode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
命令模式(Normal Mode):
启动 Vim 后默认进入的模式,用于导航和执行命令,不能直接输入文本。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进⼊Insert mode下,或者到 last line mode等模式下。
插入模式(Insert Mode):
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
在此模式下可以输入和编辑文本。进入方法:按 i(在当前光标前插入)、a
(在当前光标后插入)、o
(在当前行下方插入新行)等。
底行模式(last line mode):
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,按 " : " 即可进⼊该模式。要查看你的所有模式:打开 vim,底⾏模式直接输⼊ :help vim-modes
2.2 vim的基本操作
进入vim,在系统提示符号输入vim及文件名称后,就进⼊vim全屏幕编辑画面:
vim code.c
不过有⼀点要特别注意,就是你进入vim之后,是处于[命令模式],你要切换到[插入模式]才能够输入文字。
【命令模式】 切换至 【插入模式】:
输入a
输入 i
输入o
【插入模式】切换至【命令模式】:
可以先按⼀下「ESC」键转到[正常模式]
【命令模式】切换至【底行模式】:
【shift + ;】, 其实就是输⼊【:】
退出vim及保存文件,在【命令模式】下,按⼀下【:】冒号键进入【底行模式】:
• : w (输入 w , 保存当前文件) • : wq (输入 wq ,存盘并退出vim)• : q! (输入 q! ,不存盘强制退出vim)
2.3 vim命令模式命令集
1. 【插入模式】:
首先先从默认的命令模式转到插入模式。
按「i」切换进入插入模式「insert mode」,按“i”进⼊插⼊模式后是从光标当前位置开始输入文件;
按「a」进⼊插入模式后,是从目前光标所在位置的下⼀个位置开始输入文字;
按「o」进⼊插入模式后,是插入新的一行,从行首开始输入文字;
然后就可以开始在里面编写代码等
2. 写好代码以后从【插入模式】 ---> 【命令模式】
3.在命令模式下,用命令进行文本编辑(增删改查),提升编辑效率。
移动光标:
- vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移⼀格。
- 按「G」 也就是shift + g :移动到文章的最后;n + G 代表光标移动到第n行;gg 光标快速回到文本开始;
- 按「$」:移动到光标所在行的"行尾"
- 按「^」:移动到光标所在行的"行首"
- 按「w」:光标跳到下个字的开头
- 按「e」:光标跳到下个字的字尾
- 按「b」:光标回到上个字的开头
- 按「#l」:从光标位置处移到光标后面的第#个位置,如:5l,56l
- 按「ctrl」+「b」:屏幕往“后”移动一页
- 按「ctrl」+「f」:屏幕往“前”移动一页
- 按「ctrl」+「u」:屏幕往“后”移动半页
- 按「ctrl」+「d」:屏幕往“前”移动半页
删除文字:
- 「x」 :每按⼀次,删除光标所在位置的⼀个字符
- 「#x」 :例如,「6x」表⽰删除光标所在位置的“后⾯(包含⾃⼰在内)”6个字符
- 「X」 :⼤写的X,每按⼀次,删除光标所在位置的“前⾯”⼀个字符
- 「#X」 :例如,「20X」表⽰删除光标所在位置的“前⾯”20个字符
- 「dd」 :删除光标所在行 dd删除之后配合 p 就是剪切的功能
- 「#dd」:从光标所在行开始删除#行
复制:
- 「yw」 :将光标所在之处到字尾的字符复制到缓冲区中
- 「#yw」:复制#个字到缓冲区
- 「yy」 : 复制光标所在行到缓冲区
- 「#yy」 :「6yy」拷贝从光标所在位置往下数的6行文本
- 「p」 :将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能
替换:
- 「r」:替换光标所在处的字符。
- 「R」:让vim进入替换模式(replace)可覆盖式替换,直到按下「ESC」键为止
撤销上⼀次操作:
- 「u」:如果您误执行⼀个命令,可以马上按下「u」,回到上⼀个操作。按多次“u”可以执行多次恢复
- 「ctrl + r」: 撤销恢复
大小写变换:
- shift + ~ : 把光标所在位置的大小写字母进行替换(大写变小写,小写变大写)
选中光标位置的文本,高亮语法:
- shift + # , 选中以后高亮,点击n可以跳转到下一个
上面的大多数命令都可前面配合n使用,一次多行。
【底行模式】:
注:在使⽤末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进⼊末⾏模式。
列出行号:
- 「set nu」: 输⼊「set nu」后,会在⽂件中的每⼀⾏前⾯列出行号
- 「set nonu」: 取消行号
保存文件:
- 「w」: 在冒号输⼊字⺟「w」就可以将⽂件保存起来
离开vim:
- 「q」:按「q」就是退出,如果⽆法离开vim,可以在「q」后跟⼀个「!」强制离开vim
- 「wq」:⼀般建议离开时,搭配「w」⼀起使⽤,这样在退出的时候还可以保存⽂件。
代码复用的时候查找和替换(substitute):
(%)s/xxx/yyy/ + 命令提示符, 具体搜索AI大模型
在底行模式中可以不用退出执行各种命令:
!command
直接用vim也可以新建文件。
vim hello.c
保存退出即可新建文件
vs newfile 可支持多文件协同工作
ctrl + ww 在两个文件中间切换光标
如果gcc编译报错可以直接用
vim code.c +n 直接定位到报错行
直接快捷打开最近编辑过的文件
!v
2.4 简单的vim配置
配置文件的位置在目录 /etc/ 下面,有个名为vimrc的⽂件,这是系统中公共的vim配置文件,对所有用户都有效。
⽽在每个用户的主⽬录下,都可以自己建立私有的配置⽂件,命名为:“.vimrc”。例如,/root⽬录下,通常已经存在⼀个.vimrc⽂件,如果不存在,则创建之。
以普通用户的身份配置,打开自己家录下的.vimrc文件,执行vim .vimrc进行配置。
vim的配置文件就是在修改自己普通用户家目录下所对应的 .vimrc的文件内容
插件得安装在普通用户家目录下的 ~/.vim/plugin 中;