【Linux】软件包管理与vim工具使用详解

Linux 软件包管理与vim工具使用详解

🌏个人博客主页:个人主页

什么是软件包

  • 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.

  • 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.

  • 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.

  • yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

Liunx安装软件

  1. 源码安装(需要自己编译,生成可执行程序,容易出问题,比较麻烦)
  2. rpm安装(Liunx下面的安装包,需要自己找,有彼此的依赖关系不好解决)
  3. yum安装(解决安装源,安装版本,安装依赖)

Linux下载软件的过程(Ubuntu、Centos、other)

在windows里面下载软件,我们可以通过应用商城直接下载。

这里的yum就相当于Liunx下面的应用商店,帮助我们下载软件。


yum怎么知道去哪里下载安装软件的呢?

yum有自己的配置文件,记录自己的搜索路径。

centos7配置新的yum源

python 复制代码
# 切换到 root 用户
sudo su

# 备份原有的 YUM 源配置文件
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

# 下载新的 YUM 源配置文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清除 YUM 缓存
yum clean all

# 生成新的缓存
yum makecache

# 验证新源是否有效
yum repolist

# 更新已安装的包(可选)
yum update

操作系统的好坏评估---生态问题

📢注意事项:

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!

可以通过 ping 指令验证

ping www.baidu.com

如何安装软件

通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装

yum 会自动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装,出现 "complete" 字样, 说明安装完成。

📢注意事项:

安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成。

yum安装软件只能一个装完了再装另一个.,正在yum安装一个软件的过程中,如果再尝试用yum安装另外一个软件,,yum会报错。

查看软件包

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

结果如下:

📢注意事项:

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

卸载软件

仍然是⼀条命令:

sudo yum remove [-y] lrzsz

Linux编辑器-vim使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于mac os、windows。

  1. vim的基本概念
    我们讲解vim的三种模式,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
  • 正常/普通/命令模式(Normal mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁
    的编辑模式。
  • 末行模式(last line mode)
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模
    式。要查看你的所有模式:打开vim,底行模式直接输入

1、快速跳动光标

  • gg:将光标快速移动到文本的开始位置(第一个字符)
  • Gshift + g:将光标快速移动到文本的结束位置(最后一个字符)
  • $shift + 4:将光标快速移动到所在行的最右侧
  • ^shift + 6:将光标快速移动到所在行的最左侧
  • n + Gn + shift + g:将光标快速移动到任意行

2、移动光标

  • h:光标向左移
  • j:光标向下移
  • k:光标向上移
  • l:光标向右移

3、复制/粘贴/剪切/删除

  • (n)yy:复制当前(n)行
  • (n)p:在光标所在行的下面粘贴(n行)
  • (n)dd:剪切、删除当前所在的(n)行

4、撤回/取消撤回

  • u:取消上一步执行的操作
  • Ctrl + r:取消上一次的撤回操作

5、字符的处理

  • (n)~或者n+shift ~:将光标后面的字符大小写转换

  • (n)r 或者n +r输入:将光标后面的字符全部替换为输入的字符

  • (n)x:向后删除删除光标所字符

  • X即n+shift+x:向前删除删除光标所在字符

R即shift + r:进入替换模式,此时光标所在的字符被替换为输入的字符

6、批量化(去)注释

批量化注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被注释的区域
  3. 第三步:shift + i
  4. 第四步://
  5. 第五步:Esc

批量化去注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被去注释的区域
  3. 第三步:d

7、多文件

第一步:vs filename(不退出vim情况下打开更多文件)底行模式中打开更多的文件

第二步:ctrl+ww 窗口光标切换 (光标在哪一个窗口,就在哪一个窗口进行操作)

底行模式

1、保存与退出

  • q(!):(强制)退出
  • w(!):(强制)保存
  • wq(!):(强制)保存并推出

2、不退出vim的情况下执行shell命令

  • ! + 命令

3、新建一个窗口(或打开另一个文件)

  • vs filename

4、搜索关键字

  • / + 关键字

简单vim配置

配置文件的位置

  • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:".vimrc"。例如,/root目录下,
  • 通常已经存在一个.vimrc文件,如果不存在,则创建之。
  • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
  • 打开自己目录下的.vimrc文件,执行 vim .vimr

    如果家目录下面没有.vimrc文件需要自己创建

    在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行):

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


接下来我们就可以在用vim写代码了,但是默认是两个空格缩进。

我们可以打开.vimrc进行修改样式

大小改成4即可

Linux编译器-gcc/g++使用

格式 gcc [选项] 要编译的文件 [选项] [目标文件]

预处理(进行宏替换)

预处理功能主要包括宏定义,文件包含,条件编译,去注释等。

预处理指令是以#号开头的代码行。

实例: gcc --E code.c --o code.i

选项"-E",该选项的作用是让 gcc 在预处理结束后停止编译过程。

选项"-o"是指目标文件,".i"文件为已经过预处理的C原始程序。


编译(生成汇编)

在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。

用户可以使用"-S"选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。

实例: gcc --S code.i --o code.s


汇编(生成机器可识别代码)

汇编阶段是把编译阶段生成的".s"文件转成目标文件

读者在此可使用选项"-c"就可看到汇编代码已转化为".o"的二进制目标代码了

实例: gcc --c hello.s --o hello.o


此时,已经生成的可重定位的目标文件但是并不能执行,因为此时还缺少库里面的文件,如:printf库函数等,所以它并不是一个可执行文件,需要连接。

连接(生成可执行文件或库文件)

在成功编译之后,就进入了链接阶段。

实例: gcc code.o --o code

在这里涉及到一个重要的概念:函数库

我们的C程序中,并没有定义"printf"的函数实现,且在预编译中包含的"stdio.h"中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实"printf"函数的呢?

最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到

系统默认的搜索路径"/usr/lib"下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数"printf"了,而这也就是链接的作用

ldd查看程序执行时依赖那些库

函数库一般分为静态库和动态库两种。

静态库

静态库是指编译链接时,把我们要访问的方法实现拷贝到自己的可执行程序中,其缀名一般为".a"。

特点:比较浪费资源,可执行程序体积大,不依赖其他库,库丢失也无所谓,程序照样执行。

动态库

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,就是说程序在执行的时候它会跳到动态库里面执行,然后执行完在回来,这样可以节省系统的开销。

动态库一般后缀名为".so",如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。

特点:一旦动态库缺失,所以程序都无法执行,比较节省资源,可执行程序体积小。

gcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证。

安装C/C++静态库指令

C静态库:sudo yum install -y glibc-static
C++静态库:sudo yum install -y libstdc+±static

如何执行sudo命令?



总结

Linux通过软件包管理器(如YUM)简化了软件安装与管理,将软件预编译为包供用户安装,避免了源码编译的复杂性。软件包如同Windows的安装程序,YUM是其"应用商店"。

安装软件可以通过源码、RPM包或YUM完成,其中YUM解决了依赖关系问题。配置YUM源需调整相关文件并清理缓存。

Vim作为Linux常用编辑器,分为命令、插入和底行模式,支持快速移动、批量注释等功能,配置通过.vimrc实现。

GCC是Linux默认的C/C++编译器,编译过程包括预处理、编译、汇编和链接,生成静态库和动态库分别用于资源独立性和共享性。

通过Sudo权限可完成系统级软件管理,确保高效和安全的操作环境。

相关推荐
Re.不晚21 分钟前
Java图书管理系统(简易&保姆级)
java·linux·服务器·开发语言·学习·算法·intellij-idea
lly_csdn12330 分钟前
【Docker】常用命令汇总
linux·运维·docker·容器
敲上瘾34 分钟前
虚拟地址空间与物理内存(Linux系统)
linux·运维·服务器·开发语言·c++·算法·aigc
云边的快乐猫1 小时前
在Linux中对mysql用户进行管理
linux·数据库·mysql·用户管理·用户权限
努力的Andy1 小时前
修改Docker 默认存储目录( Docker Root Dir: /var/lib/docker)
linux·docker·容器
MANX981 小时前
Linux Deploy安装Debian桌面
linux
李小白202002021 小时前
Linux 生成/proc/config.gz
linux·服务器·前端
我们的五年1 小时前
【Linux课程学习】:《简易版shell实现和原理》 《哪些命令可以让子进程执行,哪些命令让shell执行(内键命令)?为什么?》
linux·运维·服务器·学习
聚观3651 小时前
聚观早报 | 知乎Q3营收;华为Mate 70系列发布
科技
阿俊仔(摸鱼版)2 小时前
GPT分区、格式化与自动挂载
linux·服务器·云计算