Linux使用过程中非常重要的命令——yum。
大学期间刚开始跟着慕课网上的视频学习Linux的时候下载安装软件总是先下载到Windows上然后上传到虚拟机上,解压后安装报什么错解决什么错,缺什么依赖安装什么依赖。2015年实习开始,第一个任务就是搭建Redis,第一次接触了yum命令,从此除了必要的测试、梳理离线安装步骤以外,剩下的东西都通过yum来安装,一条yum -y install
命令解决一切问题。
前一段时间,应该说是过去一年都在跟Zookeeper打交道,接下来会系统梳理Zookeeper的部分知识,特别是在配置文件管理,微服务管理方面,在此之前系统的梳理一下yum到底是个什么样的命令,通过什么原理下载安装软件。
YUM的介绍
YUM全称为 Yellow dog Updater Modified,它是一个在线的软件安装命令。YUM是C/S架构,是RPM的前端工具,依赖于RPM存在的。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
注:
RPM:原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL2规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
GPL:五种常用开源协议之一,Linux就是基于此协议的开源操作系统。
例如我们需要安装一个软件A,而软件A依赖B,而B可能还继续依赖其他软件,通过yum我们只需要安装A,其他依赖包会自动安装。
那么YUM是如何下载安装RMP包的呢?
但是上述这种机制,也存在着一些问题,万一服务器上的程序包或者依赖关系发生了变化,就会导致服务器和客户端本地的元数据不一致。想解决这个问题,可以在每次使用YUM的时候,都向服务器请求元数据。但是这种方式浪费带宽和时间,有的时候明明没有变化,但还是需要下载。
如何解决这种问题呢?
YUM服务器上有一个特殊文件,文件中记录了每一个元数据文件的校验码,实际上每次运行YUM的时候,都会向服务器请求这个文件(刚刚配置好YUM源的时候,本地没有这个文件,这时候肯定是要下载元数据的),并和本地元数据中的校验码文件进行对比,如果一致则代表元数据没有变化,本地元数据有效,否则就重新请求元数据。
YUM的安装及配置
我们可以通过yum -y install安装其他软件,如果Linux服务器没有yum,该如何安装?
- 首先,通过网址http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz下载yum-3.4.3。
- 解压压缩包
tar xvf yum-3.4.3.tar.gz
- 执行安装命令,更新yum catch
#依次执行以下命令
cd yum-3.4.3
yummain.py install yum
yum check-update
yum update
yum clean all
- 配置国内镜像源
#安装wget
yum -y install wget
如图所示表明wget成功安装。
#备份之前的仓库文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
#下载阿里云的仓库文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清除缓存
yum clean all
#新建缓存缓存
yum makecache
主配置文件/etc/yum.conf
yum.conf是yum的主配置文件,手动安装yum时,需要手动创建改文件。
[root@Centos7 ~]# cat /etc/yum.conf
##1表示使能,0表示不使能;
##等号左右不要有空格,否则可能出现语法错误;
[main] ##仓库ID
cachedir=/var/cache/yum/$basearch/$releasever ##缓存文件存放目录
keepcache=0 ##缓存文件是否保存下来
debuglevel=2 ##debug调试级别,默认为2
logfile=/var/log/yum.log ##日志文件路径
exactarch=1 ##安装程序包的时候,做精确地平台匹配(例如:配置为0则允许在i386上更新i686的RPM包)
obsoletes=1 ##仅在更新的时候生效,允许更新陈旧的RPM包
gpgcheck=1 ##安装程序包的时候,检查GPG(GNU Private Guard)
plugins=1 ##是否允许使用插件(我们一般会用yum-fastestmirror这个插件)
installonly_limit=5 ##同时安装几个程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
##追踪BUG的URL
distroverpkg=centos-release ##指定基准包,yum会根据这个包判断发行版本
仓库文件
yum仓库文件指/etc/yum.repos.d/目录下以,repo结尾的配置文件。
repo文件是Fedora、Redhat和Centos中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用。
文件必须以.repo结尾,否则不会被YUM使用;
一个repo文件可以指向一个仓库,为仓库的指向提供配置信息;
一个repo文件也可以指向多个仓库,只不过为了便于管理切割成了多个repo文件;
##1表示使能,0表示不使能;
##等号左右不要有空格,否则可能出现语法错误;
[repositoryID]:
##设定仓库ID(main不能作为ID,因为它是公共的);
name=Some name for this repository
##设定YUM仓库名;
baseurl=url://server1/path/to/repository/
##设定YUM仓库访问路径(指向repodata这个目录的上级目录);
url://server2/path/to/repository/
##第二行及其之后的URL不能顶格写
url://server3/path/to/repository/
mirrorlist=
##不能与baseurl同时使用,设定镜像服务器地址URL(指向的是个文本文件,里面存放多个指向仓库的URL,YUM会将这个文件下载到本地然后连接仓库);
enabled={1|0}
##设定是否启用仓库,默认启用;
gpgcheck={1|0}
##设定是否在安装此仓库中的程序包时,进行GPG校验,来RPM包的完整性和来源合法性;
repo_gpgcheck={1|0}
##设置是否检查仓库元数据签名信息;
gpgkey=URL
##指向GPG密钥文件的访问路径(可能是仓库或权威机构提供);
enablegroups={1|0}
##设置是否在仓库上使用组批量管理程序包;
failovermethod={roundrobin|priority}
##故障转移方法(轮询|优先级),默认为roundrobin随机挑选,priority是按顺序选择;
exclude=compiz* *compiz* fusion-icon*
##用来禁止这个软件仓库中的某些软件包的安装和更新,可以使用通配符,并以空格分隔,可以视情况需要自行添加;
keepalive={1|0}
##是否当远程服务器是HTTP/1.1时,保持连接功能;
username
##有些服务器不支持匿名访问,需要指明要访问服务器的用户名;
password
##有些服务器不支持匿名访问,需要指明要访问服务器的密码;
cost=
##访问仓库的开销(默认为1000),用数字表示;
group_package_types=default, mandatory, optional
##安装包组中指定类型的包;
YUM的使用
常用命令
##列出所有可更新的软件清单命令
yum check-update
##更新所有软件命令
yum update
##仅安装指定的软件命令
yum install <package_name>
##仅更新指定的软件命令
yum update <package_name>
##列出所有可安裝的软件清单命令
yum list
##删除软件包命令
yum remove <package_name>
##查找软件包 命令
yum search <keyword>
##清除缓存命令:
yum clean packages ##清除缓存目录下的软件包
yum clean headers ##清除缓存目录下的 headers
yum clean oldheaders ##清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) ##清除缓存目录下的软件包及旧的headers
常用选项
-q, --quiet:静默模式
-v, --verbose:详细模式
-y, --assumeyes:自动回答为yes;
--assumeno:自动回答为no
-R [minutes], --randomwait=[minutes]:最多等待时间
-x [package], --exclude=[package]:通配要排除的包
--noplugins:禁用所有插件;
--color=COLOR:带颜色
--downloadonly:仅下载包,不安装或升级。默认下载在yum的缓存目录中,默认为/var/cache/yum/$basearch/$releasever
--downloaddir=DLDIR:指定下载目录
yum的使用相信大家都不陌生,更详细的命令、选项合集可以从网上获取。
网友评论