Linux:软件包管理器 - yum

简介: Linux:软件包管理器 - yum

Linux的软件安装方式

源代码安装

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

源代码安装是最初的安装方式,在安装一个程序的过程中,我们要经历以下过程:

  1. 找到所需的源代码
  2. 挑选自己合适的版本
  3. 自己对代码编译运行(如果代码兼容性差,还要自己改)

可见该方法安装一个软件包代价有的多高,因此现在几乎不使用这种方法安装。


rpm包安装

把一些常用的软件提前编译好, 做成软件包放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装

这种的rpm包,就是已经把代码编译好了,我们可以直接下载下来然后进行安装。但是这也会遇到问题,比如这个编译好的rpm包运行时可能需要其它的库,比如C语言库,C++库等,如果你的Linux上面没有这种库,那就要额外地下载。或者有软件之间的依赖关系,一个软件想要运行,必须同时有其他的软件。


yum安装

与之前两种安装方式不同的是,yum的安装是全自动化的,完全不需要你操心任何一个过程,其可以自动判断一个软件要去哪个地方下载,自动下载好配套软件。因此yum是当前主流的软件安装方式。

接下来我先讲解yum的基础指令,然后再深入yum相关的生态体系。


yum三板斧

yum list

如果我们直接使用yum list,会列出所有可以下载的软件,这会导致大量刷屏。一般而言,我们会有目的的下载某一个软件,比如我现在要下载一个叫做lrzsz的软件。我们要用grep进行筛选,选出带有lrzsz字段的软件。

在此我输入yum list | grep lrzsz

我们就搜到了自己想要的软件,x86_64表示该软件在64位计算机中运行。 0.12.20-36.el7是版本号,el表示CentOSel7就表示CentOS7base表示软件的提供方。

一般而言,软件的提供方有两种,baseepel

  • base:基本软件源,这里面的软件都是经过筛选,比较稳定的软件
  • epel:扩展软件源,一般都是新软件,这些软件刚发布需要经过一定时间的测试,来发现一些问题,当epel内部的软件经过一定时间后变得稳定了,而且比较好用,就会进入base

yum install

当我们找到一个软件,就可以进行下载了。语法为yum install xxx,也就是下载xxx软件。

我这里下载lrzsz,执行yum install lrzsz

其没有直接给我们下载,而是向我们展示了这个软件的相关信息,比如版本,名称,软件也,大小等等,然后向我们确认是否安装此软件。

如果你不希望它询问,那么就输入-y选项,这样就会直接下载了,yum install -y lrzsz


最后显示complete!就说明下载成功了


yum remove

如果你想删掉一个软件,那就执行yum remove xxx命令。

比如我要删掉lrzsz,执行yum remove lrzsz

同样的,会向你展示该软件的信息,然后向你确认是否删除。如果不希望它询问,直接删除,加上-y选项即可。


yum生态

在使用yum时,你可以从别人的服务器上下载各种软件,那么你有没有想过,这些服务是谁提供的?为什么你可以免费的使用别人的服务?

一个系统用的人越多,其社区的活跃度就越高,存在的问题就越容易暴露出来。而因为人多,问题暴露出来就会有更多的人去解决问题。同样的,人多的操作系统软件就更加全面,专业人士也更多。相应的,当一个操作系统的人越来越多,那么也就会吸引越来越多的人,公司,组织去使用这一款操作系统。


而为了吸引不同的人去使用一款操作系统,很多操作系统都有自己的特点。比如说当前Linux的版本就有Ubuntu,CentOS,Debian等等,它们的Linux内核几乎没有差别,区分开它们的是社区。比如说Ubuntu大部分被学生使用,CentOS大部分被公司以及开发者使用。那么Ubuntu社区中的人们,就会更加广泛的提出以及解决学习方面的问题,而CentOS社区更注重实际开发方面的问题。久而久之各个版本的操作系统之间社区就建立了起来,一个用户选择操作系统时,就会去了解这个社区,比如这个人对网络安全感兴趣,对实际开发感兴趣,那么他就会选择不同的系统。


一个社区的既得利益者,比如公司,组织,学生,开发者。他们都不希望自己的社区倒下,公司为了让自己的系统更加稳定,开发者为了自己写的代码可以被看到,学生为了自己的问题可以及时被解决。于是他们就会想办法来维护社区,让社区越来越好,这样自己也就能从中获取更多的利益。


那么回到最初的问题,我们的yum要去别人的服务器中下载软件,服务器谁提供的?这有很多种形式,比如开源组织自己购置的,公司为了维护社区提供的,等等。总而言之就是为了让社区存活下去,既得利益者会提供这样的服务。那么开源组织明明开源,那就应该不收费啊,为什么还有钱来购置服务器?对,我们使用Linux这样的系统是不收钱的,从中下载软件也不要钱,开源组织不从我们手上收钱。很多使用Linux的公司,它们希望Linux可以发展的越来越好,那么他们就会向开源组织捐赠。开源组织不对他们提供的服务收费,但是他们可以接收捐赠,因此开源组织是有钱的,甚至是盈利的。


服务器的来源知道了,那么软件又是谁提供的呢?Linux社区这么多人,自然就有人愿意出来提供开源服务,把自己写的软件进行开源。另外的,Linux有多个版本,多个社区。如果有一天Ubuntu推出了一个很好用的软件,CentOS社区的用户看到了,发现CentOS没有这样的软件。于是CentOS社区的人直接把Ubuntu的该软件的代码拷贝过来,改改就变成了可以在CentOS下运行的软件,然后发行到CentOS上。反正都是开源项目,我们社区直接抄你们社区的代码也是合法合规的。因此很多软件只要一个Linux版本下出现了,其他版本也很快就会有对应的软件。再比如现在很多开源网站,知名的清华源等,它们也是直接拷贝一些国外的开源代码,方便国内的用户使用,反正都是开源的,我就算把所有的资料都拷贝走,也是合法合规的。


yum源

那么yum是如何知道要去哪里下载软件的呢?

我们可以找到/etc/yum.repos.d/下面的文件:

repos表示仓库,d表示目录,在改目录下,会存储大量的网址,yum会到对应的网址内部查找软件,并且筛选合适的版本自动下载到你Linux主机上。

比如这是CentOS-Base.repo内部:

可以看到内部有很多的连接,Linux就是到这些连接内部下载软件的。

这些称为yum源,在此常用的软件源有阿里云,网易,清华源等等,在此我为大家示范一个yum源的更新。环境为CentOS,使用的yum源是阿里云,这里需要root权限。

首先跳转到yum源所处目录下:cd /etc/yum.repos.d/

先把我们当前的CentOS-Base.repo进行备份,备份为CentOS-Base.repo.backup,以免后续还需要进行恢复。

cp CentOS-Base.repo CentOS-Base.repo.backup

然后从阿里云下载新的yum源:

wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

此时我们目录下的CentOS-Base.repo文件就已经被更新了。

更新yum源后,需要清除yum缓存,以便系统能够识别新的yum源文件。可以使用以下命令清除yum缓存:

yum clean all

清除yum缓存后,需要更新yum缓存,以便系统能够识别新的yum源文件中的软件包信息。可以使用以下命令更新yum缓存:

yum makecache

更新yum源后,可以使用以下命令测试新的yum源是否可以正常工作:

yum list

如果没有出现错误,并且软件包列表与预期一致,则表示新的yum源已经更新成功。

更新yum源是维护CentOS系统安全和稳定性的重要步骤。在更新yum源之前,应该备份当前的yum源,以防止出现问题。同时,应该从可靠的站点下载新的yum源文件,并清除和更新yum缓存,以保证系统能够正常使用更新的yum源文件。


相关文章
|
3天前
|
存储 Linux Shell
YUM管理器的命令列表-Linux
YUM管理器的命令列表-Linux
11 0
|
5天前
|
算法 Linux Windows
linux中的压缩软件介绍
这些是Linux中一些常见的压缩软件工具,您可以根据需要选择合适的工具来压缩和解压缩文件。每种工具都有其特定的特点和压缩性能,因此根据具体情况选择合适的工具是重要的。
20 0
|
5天前
|
Linux 开发工具 Android开发
【Linux修行路】基础开发工具——yum
【Linux修行路】基础开发工具——yum
|
5天前
|
Linux Shell 开发工具
【Linux】yum、vim
【Linux】yum、vim
17 2
|
5月前
|
Ubuntu Linux
Linux常用发行版本软件包安装指南
Linux操作系统以其开源、灵活和高度定制的特性而备受欢迎。然而,对于初学者来说,熟悉不同发行版的软件包管理系统可能是一个挑战。本文将介绍在常见的Linux发行版(Ubuntu、CentOS、Alpine)上安装软件包的基本指南,以帮助用户轻松应对软件管理任务。
122 2
Linux常用发行版本软件包安装指南
|
5天前
|
Ubuntu 算法 Linux
【Linux】软件包的安装
【Linux】软件包的安装
28 0
|
9月前
|
Linux 容器
Linux入门基础——软件包的安装
Linux入门基础——软件包的安装
|
安全 算法 Unix
Linux 常用命令(文件传输、网络通讯、软件包下载与安装、Shell 脚本编程常用命令)大全(三)
Linux 常用命令(文件传输、网络通讯、软件包下载与安装、Shell 脚本编程常用命令)大全(三)
382 0
|
Linux
LINUX安装依赖库冲突的最终版本:下列软件包有未满足的依赖关系/但是它将不会被安装/无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
LINUX安装依赖库冲突的最终版本:下列软件包有未满足的依赖关系/但是它将不会被安装/无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
702 0