Linux基础开发工具——yum工具
文章目录
- 内容引入
- yum工具
- 下载方式的分类
- 安装的本质
- yum的生态
- yum的下载方式
- yum背靠Linux下的生态
- yum源——国内镜像源
- yum的使用
- 查看软件包
- 安装软件
- 卸载软件
- 一些有趣的指令
内容引入
从本篇文章开始,将连续地介绍Linux下的一些必学的、而且是基础的开发工具。学习这些工具是很有必要的,这有不仅有助于我们以后的开发,而且也能进一步地去理解Linux。
本篇文章将对一个我们需要了解和学习的工具——yum工具进行学习使用并且理解。
yum工具
接下来我们将正式的进入yum工具的学习。
下载方式的分类
首先我们要知道的是,在Linux系统下,大概有这三种下载方式:
- 源码安装
- 软件包安装(rpm)
- 使用包管理器yum(Centos系统下,ubuntu系统下是apt)
源码安装,顾名思义就是把软件/应用的源码(一般会放在一个压缩包里),然后需要用户拿到源码后,自行手动的编译和安装,并且完成配置部分的编译项。这个对大部分人来说是很困难的。使用起来非常复杂,一般是适合一些开发者进行深度定制。
第二种是软件包安装,就是把编译好的代码打包好,形成一个软件包。
但是这里会有一个很大的问题,就是软件是有依赖性的。要下载的软件很可能不止使用了自行编译的代码和部分库,还有可能使用了 网络上的库,这其实就是当前软件需要依赖于其他软件。这个现象是很正常的。哪怕是我们移动端和PC端常用的一些应用也是会有这种现象的。
使用rpm进行安装,最大的问题就是无法解决这种依赖,我们还是需要自行完成这些依赖项的配置的,这也是比较麻烦。
第三种是包管理器。什么是包管理器呢?
我们可以把包管理器看做成我们在手机上的应用商店。包管理器,意思就是它负责把软件/工具所有需要的东西打包好进行综合管理。使得用户端在下载的时候不需要去自行配置,做到了下载就能用。当然,这些依赖项可能是从网络上搜索,也可能是从别的地方拷贝。
所以综合以上三种来看,其实使用起来最方便的就是包管理器。使用包管理器我们就不需要再关注那些依赖的配置项,也不需要进行手动编译。这是很方便的。
安装的本质
我们来演示一下安装的本质是什么:
这里的my.exe是Hello.c编译生成的可执行文件。我们发现,把my.exe的路径打在屏幕上面是可以直接运行这个可执行文件的。这个我们入门阶段的时候就讲过,那些命令其实本质上都是文件,我们使用路径:/usr/bin/ls也是可以实现和ls一样的效果的。
但是这里我们想要让my.exe也可以直接当作指令怎么办?那需要把这个当作软件进行安装。安装到Linux下存放指令/usr/bin/ls的目录下就可以了。
我们又讲过,Linux下一切皆文件,所以安装指令的本质,就是把文件放在指定目录下,其实就是进行文件的拷贝罢了:
我们发现,确实是如此,我们把my.exe复制到了Linux系统下存放指令文件的目录下,这个时候my.exe就可以直接当作指令使用了。
但是这里我们有一个问题是需要注意的,这里我们是使用root账户进行操作的:
我们发现,当使用普通用户的时候,是没办法将复制文件到/usr/bin目录下的。这是因为,在Linux下,安装软件是需要高权限的,只有root账户才可以安装。而且,只要安装了一次,那么该机器所有账户都是可以使用的。
这里肯定会有人好奇,为什么这里的bin目录权限是777,但是却不能复制呢?
这里一定要看清楚,图中显示的bin目录路径是:/bin是根目录下的,而安装指令的地方是/usr/bin,这是不一样的:
我们来看一下,/usr/bin这个目录的权限:
很明显,写权限是全关的。所以这就是为什么我们没有办法在普通用户安装东西。虽然拥有者和从属组的写权限也给关了,但是,root用户可以无视这种权限的管控。
这里使用yum进行验证,发现报错说:需要使用root用户来操作这个指令,这也确实说明了普通的账户是没有安装权限的,只能提权安装。
yum的生态
接下来我们需要讲讲关于yum工具的生态。虽然听着觉得不算太重要,但是了解一个软件的生态还是有点必要的。因为可以学习到很多东西。
一款操作系统的生态其实包含着很多东西:
比如用户、出现问题的解决方案、社区(论坛)、文档…
比如我们现在学习的Linux系统也就是开源的一款操作系统,开源本质上是一种商业模式。而且开源的项目是可以让更多优秀的工程师参与的,能参与开发的人必定都是有很高水平的,所以他们基本都是不为利益所驱动的。而且开源的项目一般来说,出现问题解决的会更快,因为开发的群体更大,而且讨论的也会比较多。
接下来我们将基于Linux系统下来看看关于yum的生态。
yum的下载方式
yum是一个包管理器。我们前面讲过,我们可以把包管理器看作是手机/PC端的应用商店。这些应用商店的下载方式其实并不是说,这些应用商店里面就有这些的软件需要的包。如果是应用商店里面有所有上线软件的包,那这个体积太庞大了,内存是扛不住的。
其实应用商店的下载是点击下载后,包管理器会自动地去找该软件对应的下载链接和依赖的文件或者库等。然后再统一安装到对应路径下。
其实yum(Centos)/apt(Ubuntu)其实也是一样的。我们的云服务器里面我们可以把yum看作成应用商店,接收到下载请求后,yum就会去指定的路径去找对应的软件包。同时,会解决掉软件中的依赖情况,然后统一安装到指定路径下,如下图所示:
yum背靠Linux下的生态
既然是谈yum的生态,这里就有一个问题:
我们平时用的软件(手机或电脑的),其实很多时候是知道其背靠的公司的,大部分情况下,这些公司开发这些软件其实是利益驱动的。
但是我们会很惊奇地发现,我们在Linux系统下载的很多软件(比如压缩工具zip、tar),又或是系统互传工具(lrzsz),都不知道背靠的公司,而且和我们平时用的软件貌似也不太一样啊。这些软件都哪来的呢?
这里我们给出一个结论:这里的所有软件都集中在一个内置链接上:
www.centos.org(centos系统下 因为我自己用的是centos系统)
ubuntu系统下:www.centos.org
这个其实就是centos系统背后生态中的一环——社区。里面聚集了无数多的优秀的开发者,他们会集思广益,把开发好的工具上线到这个社区当中,然后yum工具接收到下载安装请求的时候,就会去这个链接去查询,查询到了就进行下载,反之报错。
就像这个图所示,包管理器会去内置链接对应的软件包管理器中查询。服务器里面的软件其实都是社区内的开发者们开发好后上线部署到对应的服务器上去的。
这里可能会有一些人好奇,这些人怎么赚钱呢?这确实是有一些匪夷所思。而且它们也要使用云服务器将对应的软件包部署到系统内置链接上对应的服务器。难道它们还花钱买服务器,然后不仅不赚钱还要开发嘛?
其实不是这样子的,他们首先,能参与这些开发的必然都是非常厉害的开发者/工程师。他们做这些事情本身就不是带有利益愿景的,而且他们也不会缺钱。再者,开源本质是一种商业模式,虽然开源看上去把东西免费送,不用花钱。但是往往不花钱的才是最贵的。
一款系统/软件配套的生态是很重要的,生态好才会有更多人使用。其实我们不知不觉间就已经变成了生态的一部分了——用户。生态里的用户其实是很大的一个团体,也是巨大的市场。所以他们这些工程师开发的时候,可以在网上募捐筹集研发经费,更有一些公司会主动给予赞助,所以他们压根不用担心缺钱的事情。
yum源——国内镜像源
上部分我们说到,yum接收到下载请求的时候,会去内置链接去找对应的软件包。这个内置链接www.centos.org其实就是centos系统的yum源。
现在我们得知道,这款系统必然是大部分是由国外的人开发的。因为我们国家在这个部分上起步还是比较晚,所以这个内置链接必然是外网的:
我们打开这个网站,发现访问的是比较慢的。基本上就是访问不到。这是因为我们国家对网络是有管控的,直接访问外网是很难的。
但是这里面临的问题就是,那么国内的云服务器厂商,他们的内置链接是这个嘛?我们在云服务器上下载东西发现是很快的,如果这些尝厂商不使用一些技术手段是很难达到这么快的速度的,但是在我们国家是不允许翻墙上网的,这怎么办呢?
其实,yum源是可以进行修改的,我们可以在centos系统下查到yum源:
在路径/etc/yum.repos下的CentOS-Base.repo文件下可以查到yum源:
如果是默认的情况下,这里确实是www.centos.org,但是这里的路径很奇怪,出现了mirrorlist字样,也就是镜像源。
镜像源的本质就是,由于外网的东西我们没有办法直接访问,但是总有一些在外国的开发者,他们可以将外网上的一些内容经过镜像操作,复制出一样的东西在国内的路径上,这样国内路径使用的时候只需要使用镜像源就可以了。
当然当前我们不需要了解那么多,我们只要大概知道镜像源就是外网在国内的副本就可以了。
所以这个时候,要想正常使用yum工具,就需要更改yum源。当然,不同厂商的云服务器对应的yum源可能是不一样的,这需要根据实际情况来看。我这里使用的是华为云服务器,所以下载链接是华为自己内置的镜像源。
下面提供几个常用的国内的镜像源(由deepseek生成):
名称 | 地址 | 特点 |
---|---|---|
清华大学 | https://mirrors.tuna.tsinghua.edu.cn/ | 覆盖全面,学术首选 |
阿里云 | https://developer.aliyun.com/mirror/ | 企业级稳定,支持多种开发工具 |
华为云 | https://mirrors.huaweicloud.com/ | 覆盖广泛,适合云服务器 |
中科大 | https://mirrors.ustc.edu.cn/ | 科研常用,Linux发行版丰富 |
腾讯云 | https://mirrors.cloud.tencent.com/ | 腾讯云用户优化 |
网易 | http://mirrors.163.com/ | 老牌镜像站,基础软件齐全 |
但是要注意的是,这里面有一些镜像源可能需要进行手动的配置,这需要根据具体情况来看,这里仅作为列举。
yum的使用
接下来我们就要来讲yum的使用,虽然我们以前已经使用过,但是还是需要补充一些细节。
查看软件包
我们在打开手机/电脑的应用商店的时候,是可以看得到里面有哪些软件是可以给我们下载的。其实yum也是可以的,软件包的名称被放在了yum list里面了:
直接在命令行输入yum list指令,就会弹出一系列可以下载的软件包了。第一列是名字和对应的后缀,后缀代有些事x64,有些事x86_64,其实都是代表着64位系统用的。中间的一列是版本号,分为主版本号和次版本号,el7代表着是centos系统的。最后一列是公司名称。
但是yum list打出来的东西特别多,在我的这个机子下用ctrl c甚至是停不下来,所以我们还是有必要使用一些方法搜寻的。
比如我们可以使用grep指令,把想要的指令过滤出来:
比如,我们想把含有ls字符串的软件包过滤出来,就可以使用管道文件配合grep指令。
在ubuntu系统下,可以使用apt search lrzsz来进行查询。这里了解一下即可。
安装软件
//Centos
$ sudo yum install -y lrzsz
//Ubuntu
$ sudo apt install -y lrzsz
注意这里加了sudo,是针对不是root用户而言的。因为前面说到了,安装软件的权限只有root账户有。普通用户要安装就需要提权。但是这里我们还没有配置白名单,没办法使用sudo提权。但是我们用的是云服务器,我们是知道root账户的密码的,所以我们直接切换提权即可。
yum/apt 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.
• 出现 “complete” 字样或者中间未出现报错, 说明安装完成.
yum/apt安装软件只能一个装完了再装另一个。 正在yum/apt安装一个软件的过程中, 如果再尝试用yum/apt安装另外一个软件, yum/apt会报错。
卸载软件
//Centos
sudo yum remove [-y] lrzsz
//Ubuntu
sudo apt remove [-y] lrzsz
删除软件也是一样的,需要root账户的高权限才可以删除。
一些有趣的指令
这个部分纯娱乐性质,我们可以下载一些有趣的指令:
- cowsay
描述:cowsay 是一个可以让 ASCII 艺术风格的牛说话的命令。你可以输入任意文本,并让牛把它“说”出来。
用法:cowsay “字符串”
- sl (Steam Locomotive)
描述:sl 是一个有趣的小工具。当你输入 sl 而不是 ls 时,会在你的终端中显示一个蒸汽火车动画。
用法:sl
效果: 你会看到一个蒸汽火车从屏幕左侧开到右侧,仿佛真的穿过了你的终端。
当然还有很多好玩的指令,可以看看这篇文章:
原文链接:https://blog.csdn.net/xiaoxiaosutang/article/details/141053674
到那时需要注意的是,由于centos系统在24年就停止维护了,所以有些指令可能不在了(centos系统下),这点需要特别注意。