Linux软件包管理器 yum
Posted 起飞的风筝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux软件包管理器 yum相关的知识,希望对你有一定的参考价值。
前言:
- 对于之前学习的内容如果大家理解为让大家知道【linux】基本知识并且会使用它,那么接下来的学习的知识便是让各位小伙伴在纯【linux】环境下进行程序的开发,为了达到这一目的我们就需要使用工具的辅助。因此,接下来给大家讲述的便是【linux】下的常用工具了!!!
本文目录
(一)浅聊软件包
在正式讲解第一个工具之前,我先给大家具体的普及一下软件包的概念,不知道各位小伙伴是否真正的理解它呢?
那么什么是软件包呢?接下来给出答案:
- 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
- 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
- 软件包和软件包管理器, 通俗一点举个例子就好比日常生活中的 "App" 和 "应用商店" 这样的关系,这么说大家可能就清楚了。
好了,有了上面的内容做铺垫,接下来我们就开始对【yum】进行深入学习。第一步,我先给出其具体的概念,即什么是【yum】呢?让大家先初步对其有个认识。
1、什么是yum
- YUM,全称Yellow dog Updater, Modifier,是一个自由、开源的命令行软件包管理工具。是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.
- 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
(二)背景介绍
通过结合上述讲到的【yum】的概念,接下来我们以日常生活中下载软件的场景为例带大家深入去探究!!!
1、下载的原理(你真的懂下载吗)
首先,先问大家一个小问题,那就是在日常生活中,对于手机来说不管是安卓的还是iPhone的,当我们准备到手机中的应用商店下载软件时,手机商店中的软件是在你的本地呢?还是在你的远端的呢?
- 我相信大家都应该知道的这个答案,对于要下的软件来说,其实并没有真正在你的手机上,是在远端下载的,通过应用市场从服务器当中下载到我们手机的。
其次,当你在手机上下软件时,这个软件此时在远端的服务器上。这时,问题就来了,远端的服务器有数百万个服务器甚至更多,那么当你下软件时你访问的是哪台服务器呢?
- 对于我们普通用户来说,我们需要管那么多吗?知不知道对我们来说有影响吗?我们只需要打开应用市场,找到我们需要的软件,在点击下载即可,此时上面下载工作就全权交给了手机的应用市场来解决。
- 举个例子,当我们想在手机上下载【csdn】时,我们通过打开自己上的应用商店 ,通过查询搜索,找到相应的软件之后,点击下载,此时应用商店代理完成从远端的服务器上把软件下载到我们的手机上的任务。因此,当我们点击下载之后,就看得见下载进度了。
因此,类比之下,在我们的【linux】下也有所谓的“应用商店”帮助我们去完成这个任务。
2、软件诞生的原因
对于我们来说,身处在这个信息化高度发达的时代下,每天各种的逛哔站呀还是信息通讯呀已经是家常便饭了。那么为什么有人要给我们提供如此海量的【APP】呢?这些人出于什么目的呢?
- 答案很简单,就是想让我们把它的软件用起来,这样它的公司才能才能赚到钱呀!背后全是利益的驱动。
- 之前,互联网公司有句话叫做——羊毛出在猪身上,叫狗买单!!不知道大家有没有用【APP】用的好好的,突然给你弹一个广告出来这种情况。什么意思呢?意思就是这些互联网公司搭个平台,通过我们去使用去观看,此时我们的注意力就在这个【APP】上,有了活跃的人数就会吸引广告商来投递广告,一旦有广告了,那么广告商就会支付费用,通过这种方式来赚钱。
就像这样:
那有小伙伴就就为好奇了:那对于我们的【Linux】而言,是否有广告呢?
- 答案是当然没有,各位有在【Linux】看到除了代码之外的其他东西吗?因为【Linux】是纯命令行的操作系统,界面都没有,别人是无法向你推广告的
3、开源生态
那讲到这,各位小伙伴是否就好奇了。你刚才说的【APP】都是归根结底还是为了企业能够赚钱,那么【linux】是否也是这样的呢?
- 我们从第一篇的博客中就说到,【Linux】是一款免费的,开源的操作系统,它提供开源社区来供一些开发者之间互相交流学习!!!
正是基于开源,且大部分来说都是免费的特点。因此,【linux】得到了大多数企业的青睐,大多数的公司都是使用的【linux】,因此虽然它的运行需要用到服务器,而服务器使用久了就需要去维护,维护那一定是需要成本和工费,大家就会好奇谁会去对其进行处理呢?
- 其实,对于这种情况,刚才我已经说了,市面上的大多数公司都是使用的这一款操作系统,因此最不愿意看到这样的场景的首先就是这是公司。我还记得之前罗永浩好像就把卖产品的一部分钱都捐给了为维护开源的这种做了奉献。
4、软件分类
在【linux】下软件主要分为两类,那么是哪两类呢?
主要分为【系统软件】和【扩展软件】
- 官方软件:这类软件就是平时常见,能叫得上名字的【推荐使用】
- 扩展软件:而对于这类软件来说,其实它并不属于官方软件。例如接下来我们要学习的【sl】就是一个典型的扩展软件。
接下来就是对于软件的选择的小技巧了:
首先问大家一个小问题那就是大家是否都喜欢最新版本的软件呢?
- 对于我而言,现在正在使用的是【linux】系统是CentOS7,而在如今这个快速发展的大时代中,已经出现了许多比它更新款的软件了,那是不是就一定要用它呢?
接下来我就来回答这个问题:
- 首先,大家都喜欢选择最新款的,无非就是最新款软件肯定是在旧版本的基础上进行了升级换代的,相对来说肯定会比旧版的好用。但是你能说得准虽然它解决了旧版本存在的问题,难道新版本就不会有新的问题吗。像一些新的操作系统虽然解决了一些其他问题,但一定会面临着一些新的问题
- 而对于旧版本的软件来说,毕竟已经使用了那么久,对于许多的问题已经得到了相对的解决,要是这时突然换上新版本,那么对于那些无法预知的“坑”,万一踩种了,那么造成的损失轻则还好,严重的话造成的后果可能是无法承担的
(三)yum使用
1、如何查看软件包
首先当我们想安装应用软件那就要先进入到【应用商店】中,接下来我们先来看看我们的【Linux】中的有哪些yum
- 我们需要执行以下指令去查看当前【linux】下的yum
yum list | grep sl
接下来我们通过指令一起去看看:
大家看着一脸问号呢?别急,接下来我给大家稍微解释一下,让大家认识认识:
①对于最左侧的就是操作系统下的软件名称了,这个应该可以理解把!主要包括有以下信息:
- 主版本号;次版本号;源程序发行号-软件包的发行号;主机平台.cpu架构.
紧接着最后好多后缀都会有“x86_64” ,什么意思呢?
- 主要代码64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
②其次中间部分就是它所发行的版本。
③最右侧部分的@后面的名称就是这个【yum】的**发行商**了,就像手机上的应用商店
2、安装与卸载
首先介绍yum 语法:
yum [options] [command] [package ...]
- options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等。
- command:要进行的操作。
- package:安装的包名。
接下来,我们去安装一个试试手:
安装好了,我想删除怎么删除呢?很简单,看以下实例:
对于上述安装的做法,会弹出我们手动输入【-y】进行确定的场景,那么是否有办法不需要我们手动的去输入,而是系统直接完成呢?当然是有的,具体如下:
yum -y install sl.x86_64
当我们去测试这个软件的时候,我们就会发现一个有趣的事情,因为它看起来就像火车一样。
注意事项
- 安装软件时由于需要向系统目录中写入内容, 所以一般需要 【sudo 】或者切到 【root 】账户下才能完成.
- yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
3、yum基本指令
接下来带大家认识【yum】下的常用命令有哪些。
1. 列出所有可更新的软件清单命令:
-
yum check-update
2. 更新所有软件命令:
-
yum update
3. 仅安装指定的软件命令:
-
yum install <package_name>
4. 仅更新指定的软件命令:
-
yum update <package_name>
5. 列出所有可安裝的软件清单命令:
-
yum list
6. 删除软件包命令:
-
yum remove <package_name>
7. 查找软件包命令:
-
yum search <keyword>
8. 清除缓存命令:
-
yum clean packages: 清除缓存目录下的软件包 yum clean headers: 清除缓存目录下的 headers yum clean oldheaders: 清除缓存目录下旧的 headers yum clean, yum clean all = yum clean packages; = yum clean oldheaders :清除缓存目录下的软件包及旧的 headers
(四)yum源
在上述的学习中,我们已经知道了如何去进行软件的安装与卸载,这就够了吗?答案是当然不够,对于一位出色的学习者来说,我们不仅要知其然更要知其所以然,只有真正的掌握其原理以及使用,我们才能说得上能够掌握它!!!
刚开始的时候,我已经给大家提过在我们上机上下载软件的原理,对于手机的应用商店来说,它怎么知道要去哪里下载呢?
- 因此这些应用商店必须要知道各个软件的下载地址吧!对于这个下载的地址,一般都是内置下载的地址(配置文件)
因此那对于【Linux】中的yum,它是如何知道自己要去下载的软件在哪里的呢?
- 基于上述情况这就要谈到【yum】自己的配置文件,也是我接下来要讲的——yum源
那什么是【yum】呢?
- 包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称之为yum源或者是yum仓库,这个源可以是本地的也可以是网络的。
接下来的问题就是【yum源】在哪里呢?如何查看自己本机所配置的所有yum源呢?这就需要用到以下指令了:
ls -l /etc/yum.repos.d/ //查看配置的【yum】源
接下来我们一起去看看:
解析:
大家可能对上述的最右侧列举出来的东西一脸疑惑,什么意思呢?接下来给大家介绍一下:
- CentOS-Base.repo【基础yum源】
- CentOS-Epel.repo 【扩展yum源】
a)CentOS-Base.repo
接下来,我们就可以去对二者进行了解了,具体如下:
b)CentOS-Epel.repo
注意:
- 如果你自己使用的【yum】的时候没有问题,那么我们就需要在进行配置了,并且你看到的【yum】源配置文件就是国内的镜像源——如华为云,阿里云,163等都是可以使用的,不用再配置,如果你还想亲自上手配置一下,在这里我就不讲解了,大家可以百度一下!!
最后就是如果各位小伙伴在安装自己想要的软件时找不到了,此时不要慌张,可能你要找的这款软件就要扩展的yum源的中:epel.repo
- 此时我们只要执行一下下面这条指令即可。此时系统就会根据你的base yum源,帮我们找到和他所匹配的扩展yum源了。具体如下:
yum install -y epel-release
(五)总结
到此,对于我们要学习的第一个【linux】工具就介绍完毕了!!
以上便是关于【yum】的全部知识,如果本文对您有帮助的话,麻烦点赞三连哟!!!
Linux软件管理 - YUM工具
Linux软件管理 - YUM工具文本关键字:Linux、软件管理、YUM工具、解决依赖
一、YUM介绍
1. YUM含义
YUM的全称是:Yellowdog Updater Modified,是一个基于RPM包管理的Shell前端软件包管理器。由于是基于RPM包管理器,那么使用的场景也就和RPM类似,主要支持的Linux操作系统为:RedHat、CentOS、Fedora。YUM还提供了图形化前端工具:yumex和kyum,需要在yum正常工作的前提下使用。
2. YUM特点
- 使用python开发
- 需要对应的软件仓库(repository)
- 自动化升级、安装、移除rpm软件包
- 可以很好的解决RPM软件包依赖问题
- 可以自定义多个资源库/yum源(repository)
3. YUM工作流程
- 执行yum命令
- 读取yum配置文件,获取仓库信息
- 在仓库中搜索元数据文件,确定所需软件及依赖的软件
- 下载相关软件包及校验文件
- 按顺序安装软件包
- 当远程仓库更新后可以通过相应的命令更新本地缓存(软件元信息)
二、常用操作
在系统安装完毕后已经默认配置了网络源,在网络畅通的情况下,可以使用yum命令完成软件的安装、升级、卸载等操作。
1. 常用指令
- install {package1} [package2] [...]
- 将安装最新版的软件以及相关的依赖,可以同时安装多个软件包,用空格隔开
- 指定的软件包可以是一个名称,也可以是一个rpm软件包文件
- 当指定为一个rpm软件包文件时,效果等同于localinstall
- update/update-to [package1] [package2] [...]
- 不填写软件包参数时将更新系统的所有软件至最新版
- 指定的软件包可以是一个名称,也可以是一个rpm软件包文件
- 当指定为一个rpm软件包文件时,效果等同于localupdate
- update-to:可以指定将软件升级至某一版本
- check-update:列出所有可更新的软件清单
- remove/erase {package1} [package2] [...]:删除指定的软件包
- list
- 不写任何参数时等同于all:列出所有可用的软件包信息以及已安装的软件包信息
- available:列出所有在yum源中可安装的软件包
- updates:列出所有在yum中可用于升级的软件包
- installed:列出所有已安装的软件包信息
- info:列出某一个软件或所有软件的详细信息,支持的选项与list相同
- clean
- 不填写参数时效果等同于clean all:将会清空所有本地缓存文件
- packages:清空已下载的所有软件包,默认情况下不会自动删除
- metadata:清空已下载的元信息缓存文件,再次运行yum时会重新下载进行缓存
- expire-cache:清除过期的缓存,如果缓存数据仍然可用,将不会执行删除操作
- rpmdb:清空所有缓存在本地的rpm软件数据库信息
- plugins:清空所有插件对应的缓存数据
- all:清空上面列出的所有缓存数据
- makecache:在本地缓存元数据
- search {string1} [string2] [...]:根据提供的信息搜索软件包,会优先根据名称搜索,如果未发现会使用描述信息和url匹配
- localinstall {rpmfile1} [rpmfile2] [...]:使用yum安装一个rpm软件包,会自动从可用源中搜索安装所需依赖软件
- localupdate {rpmfile1} [rpmfile2] [...]:使用yum升级一个rpm软件包,会自动从可用源中搜索安装所需依赖软件
- reinstall {package1} [package2] [...]:重新安装某个软件包,以最近一次安装的版本为准
- deplist {package1} [package2] [...]:列出某一个软件包相关的依赖软件列表
只截取了部分内容,嗯,果然,rpm软件依赖一不小心就会变成噩梦,yum,感谢有你。
- repolist [all/enabled/disabled]
- all:显示所有的yum源
- enabled:显示所有开启状态的yum源
- disabled:显示所有关闭状态的yum源
- check:检查本地rpm数据库和产品信息是否有误
2. 常用选项
- -y:自动使用yes应答过程中的选项
- -q:取消输出内容,静默安装
- -v:输出详细信息
- -R:设置最大等待时长,单位为分钟
- --version:显示当前yum工具版本
- --skip-broken:解决卸载软件时产生的依赖错误问题
- --downloadonly:只进行软件的下载
- --downloaddir:指定软件包下载路径
三、YUM源的管理维护
1. yum配置文件
- yum配置文件目录:/etc/yum.repos.d
- yum配置文件:*.repo
2. 配置国内镜像
默认情况下,Base对应的是网络镜像的配置,Media对应的是本地镜像的配置,网络镜像地址是使用的centos.org提供的镜像列表,可以将镜像修改为国内的阿里、网易等镜像,提升下载速度。
- 备份原有的Base配置文件(可选操作)
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.bak
- 下载阿里云yum配置文件,写入对应的文件中
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
- 生成缓存
yum makecache
四、本地YUM源配置
1. 配置项说明
- [serverid]:repo的唯一标识,用于区分不同的repo
- name:对repo的描述,支持使用$进行引用变量值的写法
- mirrorlist:镜像列表地址,打开之后是一个记录多个镜像地址的列表,会自动在这些列表中扫描选择镜像资源
- release:发行版本,对应的大版本号,如:6,7
- arch:系统架构,32位一般对应i386,64位对应x86_64
- repo:仓库类型,如os、fasttrack等
- infra:该选项可省略,对应值为stock,可以在/etc/yum/vars/infra中查看
- baseurl:直接指向一个yum源地址,支持多种协议
- http:网络传输协议
- ftp:文件传输协议
- file:文件协议,可以指向一个本地磁盘路径
- gpgcheck:是否开启gpg校验
- 0:关闭
- 1:开启
- gpgkey:指定校验文件URL
- enabled:是否启用该配置
- 0:关闭
- 1:开启
- failovermethode:对应仓库出现故障时如何挑选
- roundrobin:默认选项,随机挑选
- priority:按顺序挑选
2. 挂载光盘镜像
由于系统镜像中包含了大部分常用的软件包,所以在离线情况下一般都是使用系统镜像作为yum源。使用虚拟机时可以直接进行光盘镜像挂载,物理机时可以搭建ftp服务器或者将光盘镜像文件烧录至U盘后挂载,亦或是将其中的内容全部拷贝至系统某一个路径下。
光盘镜像挂载后,会在/dev下被识别为cdrom,使用如下命令进行挂载:
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
3. 修改配置文件
- 使默认的Base配置失效,否则在无网络连接的情况下会出现找不到服务器的错误
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 以Media文件为模板,将baseurl指定为光盘挂载路径,完整配置内容如下(CentOS-Media.repo):
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/
gpgcheck=0
enabled=1
如果gpgcheck指定为1,则需要正确指定gpgkey的值为校验文件所在路径,如:/mnt/cdrom/RPM-GPG-KEY-CentOS-6
4. 可用验证
yum makecache
以上是关于Linux软件包管理器 yum的主要内容,如果未能解决你的问题,请参考以下文章
Linux环境基础开发工具的使用(yumvimgccg++gdbmake/Makefile)