Linux软件包管理器 – yum
正文开始@Assassin
目录:
1. Linux环境下安装软件:
Linux下安装软件的方式可以简单归类为三类:
- ① 下载到软件的源代码,自行进行编译,得到可执行程序
- ② 获取rpm安装包,通过rpm命令进行安装(未能解决软件间的依赖关系)
- ③ 通过yum命令进行软件安装(很好地解决了依赖关系,目前较为常用)
2. yum简介:
Yum(Yellow dog Updater, Modified) 是由Duke University团队修改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于RPM包管理的字符前端软件包管理器。能够从指定的服务器自动下载RPM包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux、CentOS所采用
3. 软件包来源:
可供Yum下载的软件包包括Fedora本身的软件包以及源自rpmfusion(页面存档备份,存于互联网档案馆)等非官方软件仓库的软件包,全部是由Linux社区维护的,并且基本是自由软件。所有的包都有一个独立的GPG签名,主要是为了用户的系统安全。对于Fedora core 4及更高版本的用户,来自新软件仓库的签名是自动导入并安装的。
4. 理解yum:
yum是一个在Fedora、RedHat以及CentOS中的前端软件包管理器,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装,可以简单地类比为手机中的应用商店,如App Store;
小贴士: 一个服务器同一时刻只允许进行一次yum安装操作,不能在同一时刻同时安装多个软件,可能会报错;
yum是从服务器上下载RPM包,类似于跨网络进程间通信,所以在下载时必须联网,可以通过ping指令判断当前云服务器是否联网:
[Assassin@Ninghai ~]$ ping -c 3 baidu.com
ping 3 次百度得到回复,说明当前网络正常
5. 查找软件包:
命令:yum list
功能:列出所有可安装的软件清单
[Assassin@Ninghai ~]$ yum list | less
yum list:
罗列出可供下载的全部软件,列出所有可安装的软件清单
这里简单补充一哈:
- ① 第一列是软件包名称,其中一般涵盖标识该软件是64位架构还是32位架构,第二列一般包括该软件包的主次版本号,源程序发行号,软件包的发行号,主机平台,cpu架构等信息,第三列一般是软件源(软件来源方)的名称
- ② " x86_64 " 后缀表示64位系统的安装包," i686 " 后缀表示32位系统安装包,选择包时应该注意要和系统匹配
- ③ " el7 " 表示操作系统发行版的版本," el7 " 表示 " centos7 / redhat7 ", " el6 " 表示 " centos6 / redhat6 "
- ④ yum 除了官方yum源还可配置其他非官方源,如epel源,这些非官方源所提供的软件包往往更全更新,但在一定程度上稳定性不如官方源
使用yum list配合grep查找lrzsz:
[Assassin@Ninghai ~]$ yum list | grep lrzsz
lrzsz 是一个提供 XMODEM / YMODEM / ZMODEM文件传输协议的Unix通信包工具;需要注意的是,zmodem协议不能处理超过4G的文件;lrzsz可以将Windows当中的文件上传到Linux当中,也可以将Linux当中的文件下载到Windows当中,实现云服务器和本地机器之间进行信息互传;
yum list | grep lrzsz:
yum list 会列出所有可安装的软件包信息,该信息通过管道 | 作为 grep 命令的标准输入,进而筛选出lrzsz软件包
6. 安装软件:
命令:sudo yum install [软件包名]
功能:安装对应的软件
这里以安装lrzsz工具为例:
[Assassin@Ninghai ~]$ sudo yum install lrzsz
安装软件过程中,有时会出现让我们确认是否安装的提示,如下图所示:
在 yum install 后加上 -y 选项即可跳过询问步骤,对应到这里就是:
[Assassin@Ninghai ~]$ sudo yum install -y lrzsz
接下来 yum 工具会自动帮我们安装好相应的软件,并解决好依赖关系;
小贴士:
- ① 安装软件时由于需要向系统目录中写入内容,一般需要使用sudo提升权限或者切换到root账户下才能完成
- ② yum安装软件只能串行,不能并行;也就是说在使用yum安装一个软件的时候,不能同时使用yum安装另一个软件;如果使用yum安装一个软件的过程中,再尝试用yum安装另外一个软件,yum一般情况下会报错
6.1 lrzsz工具的使用:
实现本地机器和云服务器之间的文件互传:
① 云服务器发送文件至本地主机:
命令:sz [文件名]
功能:将云服务器上的文件下载到本地机器的指定文件夹
[Assassin@Ninghai test]$ sz test.cpp
② 本地主机发送文件至云服务器:
命令:rz -E 或者 rz
功能:将本地机器上的指定文件上传到云服务器
BTW: rz命令也可使用拖拽的方式完成,注意:lrzsz工具一般是用来互传小文件,且传输速率也不是很快,建议大一点的文件还是使用xftp来传输嗷,毕竟是专业的:
7. 卸载软件:
命令:sudo yum remove [软件名]
功能:将对应软件从本机上移除,不能再使用软件对应的功能
这里依旧以卸载lrzsz为例:
[Assassin@Ninghai test]$ sudo yum remove lrzsz
yum会自动卸载该软件,Removed Complete
8. 搜索软件:
命令:yum search [软件名]
功能:查找指定的软件包,具有关键字模糊匹配功能
依旧是以搜索lrzsz为例:
[Assassin@Ninghai test]$ yum search lrzsz
模糊匹配:
[Assassin@Ninghai test]$ yum search lrz
没有完整输出lrzsz,也搜索到了对应的软件包
9. 列出可更新软件:
命令:yum check-update
功能:列出所有可更新的软件清单
[Assassin@Ninghai ~]$ yum check-update
10. 更新软件包:
命令:sudo yum update
功能:更新所有可更新的软件
[Assassin@Ninghai ~]$ sudo yum update
更新软件包需要 sudo 提升权限或者root用户执行
Update Completed:
也可指定更新软件包:yum update [package_name]
11. 清除软件包缓存:
命令:yum clean all
功能:清除缓存目录下的软件包及旧的headers
清除掉yum中的缓存
12. yum扩展源epel:
EPEL是企业版 Linux 附加软件包的简称,EPEL是一个由Fedora特别兴趣小组创建、维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一个高质量附加软件包项目
EPEL 的软件包通常不会与企业版 Linux 官方源中的软件包发生冲突,或者互相替换文件。EPEL 项目与 Fedora 基本一致,包含完整的构建系统、升级管理器、镜像管理器等;
epel-release是第三方源,用来弥补 yum 官方源更新较为滞后的一个扩展源
[Assassin@Ninghai test]$ sudo yum install -y epel-release
13. 配置国内yum源:
国内有许多优秀的yum源,如网易163源,阿里云源,搜狐源,清华源,中国科大源等,将yum官方源设置为国内源可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到;
这里介绍将yum源更换为阿里云源:
① yum源位于/etc/yum.repos.d/CentOS-Base.repo
,先查看一下:
② 换源前先备份,以便出错时能及时恢复;将CentOS-Base.repo重命名为CentOS-Base.repo.bak:
[Assassin@Ninghai yum.repos.d]$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
③ 下载阿里云源 http://mirrors.aliyun.com/repo/Centos-7.repo,将下载好的文件重命名为CentOS-Base.repo:
注意,自己的机器是centos 7就下载Centos-7.repo,对应好自己的版本
[Assassin@Ninghai yum.repos.d]$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者:
[Assassin@Ninghai yum.repos.d]$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
小贴士:wget中是 -O,大写的O,不是0;curl中是 -o,小写的o;为了避免出错建议直接copy
④最后清除缓存即可:
[Assassin@Ninghai yum.repos.d]$ yum clean all # 清除系统所有的yum缓存
[Assassin@Ninghai yum.repos.d]$ yum makecache # 生成yum缓存