持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
前言
本文就来分享一波笔者对于Linux下软件包管理器yum的学习经验和心得。
笔者水平有限,难免存在纰漏,欢迎指正交流。
Linux 软件包管理器 yum
前置理解
先理解一个概念:在Linux下什么是工具?本质也是指令。
我们先搭建一下理解链路:
-
安装软件之前,需要先把软件包下载下来,所以有一个前提:必须在联网状态下。
-
软件包并不是在你的本地的(你的电脑),那么软件包在哪里呢?只能在别人的电脑上(远端服务器上,云服务器)。
-
你的电脑怎么知道你要下的软件在网络中哪一台服务器上呢?
- PC端(Windows下):搜索官网下载
- 手机端:应用商店 (仅仅只是手机上的一个app,软件包本身还是在服务器上,不过应用商店内置了服务器的链接,可以通过链接找到服务器并下载对应软件)
- 那么PC端(Linux下)呢?
-
又是谁提供的软件包,谁又把软件包放在了服务器上呢?
-
企业、个人或组织提供的(为了获取利益)
-
软件包提供好之后,通常放在哪里呢?
- 官网
- 应用商店(通常是手机厂商提供服务器,各种软件要上架得交钱)
-
上述就是一种商业模式,一种生态。
软件包与Linux下安装
前面讲了这么些东西,那么在Linux下又是如何呢?
在Linux下安装软件, 一个通常的办法是下载程序的源代码,并进行编译,得到可执行程序。但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器,就好比手机端上 "App" 和 "应用商店" 这样的关系。
yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora、RedHat、CentOS等发行版上。 yum基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
下载之后一定要安装,安装的本质就是拷贝,而拷贝一定会拷贝到特定目录,目录是有权限的,有些目录可以修改内容而有些目录则不能,普通用户就要用sudo提权安装,root用户直接安装即可。
注意事项
关于 yum 的所有操作必须保证主机(或虚拟机)网络畅通。要是用云服务器就不用太担心这种问题。
可以通过 ping 指令验证,比如 ping www.baidu.com。
如何安装软件
通过 yum, 我们可以通过很简单的一条命令完成 sl 的安装 :
yum 会自动找到都有哪些软件包需要下载,在安装前会询问是否确认,这时候敲 "y" 确认安装:
出现 "complete" 字样,说明安装完成:
既然安装成功了我们不妨运行一下试试(小火车嘟嘟嘟~):
如果不想安装前被询问,可以加上一个-y选项,比如:yum install -y sl,这样一来就会直接安装而不询问。
yum安装软件只能一个装完了再装另一个,正在yum安装一个软件的过程中,如果再尝试用yum安装另外一个软件,yum会报错。
具体细节:
yum会查询数据库,有无这一软件包,假如有,则检查其依赖冲突关系,假如没有依赖冲突,那么下载安装;假如有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,需要自己作出判断。
如何卸载软件
仍然是一条命令就可以搞定,比如这里我们把前面装的sl删掉:
会询问我们是否确认移除,输入y确认:
出现 "complete" 字样,说明卸载完成:
如果不想卸载前被询问,可以加上一个-y选项,比如:yum remove -y sl,这样一来就会直接卸载而不询问。
如何看软件包
通过 yum list 命令可以罗列出当前一共有哪些软件包。
由于包的数目可能非常之多,这里我们需要使用 grep 命令只筛选出我们关注的包。例如
注意事项:
软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构。
"x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包, 选择包时要和系统匹配。
"el7" 表示操作系统发行版的版本.,"el7" 表示的是 centos7/redhat7, "el6" 表示 centos6/redhat6。
最后一列,base 表示的是 "软件源" 的名称,类似于 "小米应用商店"、"华为应用商店" 这样的概念。
如何查询软件包
我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道名字。这时yum的查询功能就起作用了。您能够用 yum search xxx这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索任何可用rpm的描述,列出任何描述中和messeger有关的rpm包,于是我们可能得到gaim,kopete等等,并从中选择。
命令:yum search
比如:
有时我们还会碰到安装了一个包,但又不知道其用途,我们能够用yum info xxx这个指令来获取信息。
命令:yum info 比如:
关于 rzsz
这个工具用于 Windows 机器和远端的 Linux 机器通过 XShell 传输文件。
rz用于Linux端接收Windows端的文件,而sz用于Windows端接收Linux端的文件。
还可以通过拖拽的方式将文件从Windows端上传到Linux端。
清除缓存
命令:yum clean
该命令介绍如下,作用:清除yum缓存。
yum 会把下载的软件包和header存储在cache中,而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令进行清除。
更精确的用法是:
yum clean headers清除header,
yum clean packages清除下载的rpm包,
yum clean all一全部清除。
使用yum clean all 清除,绕开了没有root权限的问题。
yum的拓展
我们在使用yum安装时好像只告诉了yum我们要安装什么,并没有直接告诉它要安装的软件要在哪里下载。前面讲了,yum内置了链接可以去服务器找到软件包,这些链接其实就在yum源配置文件。
我们可以找到当前机器的yum源:
其中CentOS-Base.repo是基础yum源,我们进去看看:
我们发现该yum源中有一些链接,而且是被配置过的(这里用的是腾讯云服务器),配置的是是国内的镜像源。自动配置是云服务器完成的,就不需要再自己手动配置了,但是如果用的是虚拟机就需要自己配置。
比如要在CentOS7 修改yum源为阿里源:
1. 查看yum源信息:
yum repolist
2. 定位到base repo源位置
cd /etc/yum.repos.d
3. 接着备份旧的配置文件
mv CentOS-Base.repo CentOS-Base.repo.bak
4. 下载阿里源的文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5.清理缓存
yum clean all
6.重新生成缓存
yum makecache
7. 再次查看yum源信息
yum repolist
有些软件没有被纳入CentOS、Ubuntu、kail等相关的生态平台的官方软件集合(能在CentOS-Base.repo下载的软件)中,需要到非官方的软件集合中下载,对应的yum源为epel-release,可以用yum install -y epel-release安装一下。
官方软件集合收录的是成熟安全稳定的软件,而非官方软件集合就是官方软件集合的储备池,当软件达到一定要求了就可能被收录到官方软件集合中去。
一般而言,软件和软件之间是有关联的,是具有一定耦合的。比如你下载的VS,它可不只含有一个软件,里面包含了编译器、编辑器、语言所依赖的动态库、静态库等等。yum安装某软件,就只是单纯地安装该软件,yum会自动解决软件和软件之间的耦合问题。
命令小结
在我们平时对CentOS的软件安装中,yum命令在查找安装盘中的rpm比较快。一些常用命令整理如下:
1.列出任何可更新的软件清单
命令:yum check-update
2.安装任何更新软件
命令:yum update
yum -y update:升级所有包同时,也升级软件和系统内核;
yum -y upgrade:只升级所有包,不升级软件和系统内核,软件和内核保持原样。
3.仅安装指定的软件
命令:yum install xxx
4.仅更新指定的软件
命令:yum update xxx
5.列出任何可安装软件的清单
命令:yum list
6.删除软件包
命令:yum remove xxx
7.查找软件包
命令:yum search xxx
8.列出任何可更新的软件包
命令:yum list updates
9.列出任何已安装的软件包
命令:yum list installed
10.列出任何已安装但不在 yum Repository 內的软件包
命令:yum list extras
11.获取某软件包信息
命令:yum info xxx
12.列出任何软件包的信息
命令:yum info
13.列出任何可更新的软件包信息
命令:yum info updates
14.列出任何已安装的软件包信息
命令:yum info installed
15.列出任何已安装但不在 Yum Repository 內的软件包信息
命令:yum info extras
16.列出软件包提供哪些文档
命令:yum provides
17.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages
18.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers
19.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders
20.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean或yum clean all (= yum clean packages,yum clean oldheaders).
21.将软件包信息缓存到本地
命令:yum makecache
yum工具在每次安装指定软件包的时候,都会检测源服务器上的软件包信息,为了便捷不用每次都去搜索软件包信息,因此使用 yum makecache将软件包信息缓存到本地
以上就是本文全部内容,感谢观看,你的支持就是对我最大的鼓励~