linux之YUM命令

什么是YUM

YUM是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器,YUM从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。(首先Linux系统是使用软件管理器来进行软件的安装,卸载和查询等操作的,而软件管理器又分为后端工具前端工具)前端工具就是本文的重点YUM。

  • yum源就相当是一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
  • 说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的。
  • Linux 的依赖关系是因为他的整个系统都是由各个不同的开发组开发的软件集合而成,每个软件都有不同的功能提供和调用。而 Linux 因为他的软件包组成可以很灵活,某些软件包不是必须的,有些软件功能可以有很多软件进行提供。所以有些软件互相之间的功能需求就需要“依赖关系”这种描述来进行说明控制。(依赖关系最简单的一个理解就是 Windows 上你玩游戏结果提示 directx 版本过低无法运行。以及常见的运行某个程序之后提示 .dll 未找到。还有就是用个软件结果安装说明上让你先去安装 .net 。)

为什么要使用YUM

Linux系统维护中令管理员最头疼的就是软件包之间的依赖性了,往往是要安装A软件,但是编译的时候告诉你A软件安装之前需要B软件,而当安装Y软件的时候,又告诉你需要Z库了,好不容易安装好Z库,发现版本还有问题等。由于历史原因,RPM软件包管理系统对软件之间的依存关系没有内部定义,造成安装RPM软件时经常出现令人无法理解的软件依赖问题。而yum就是一个半自动化的下载、更新、安装工具。

linux之YUM命令_第1张图片

  • 这还不算最麻烦的,只需要按照要求逐步下载,最麻烦的是相互依赖的情况。

linux之YUM命令_第2张图片

  • 遇到这种情况一般人就很难解决,而yum工具会根据你要安装的软件解析出依赖树,然后把依赖树的软件从网上的yum库全部下载下来打包给后端工具,从而让后端工具拿到完整的rpm包。

在时代的发展中,YUM变得越来越实用,功能也逐渐的增多,使用也更加的便捷。YUM已经形成了一套较为完善的组件。

  • YUM命令

  1. 通过yum命令使用YUM提供的众多功能。
  1. 由名为yum软件包提供(默认已安装)。

  • YUM插件

  1. 由官方或第三方开发的YUM插件用于扩展YUM的功能。
  1. 通常由名为yum -的软件包提供。

  • YUM仓库

  1. YUM仓库(repostory) 亦称“更新源”。
  1. 一个YUM软件仓库就是个包含了仓库数据的存放众多 RPM文件的目录。
  1. YUM仓库必须包含一个名为 repodata的子目录用于存放仓库数据,仓库数据包含所有RPM包的各种信息,包括描述、功能、提供的文件、依赖性等信息。
  1. YUM客户通过访问YUM仓库数据进行分析并完成查询、安装、更新等操作。
  1. YUM客户可以使用http://, ftp://或file: //(本地文件)协议访问YUM仓库。
  1. YUM客户可以使用官方和第三方提供的众多YUM仓库更新系统。
  1. createrepo,yum-utils 等软件包(默认未安装)中提供了YUM仓库管理工具。

  • YUM缓存

  1. YUM客户运行时会从软件仓库下载YUM仓库文件和RPM包文件。
  1. 下载的文件默认被缓存在/var/cache/yum目录中。
  1. 可以修改YUM的配置文件配置YUM的缓存行为。

YUM的宗旨是自动化地升级,安装/移除RPM包,收集RPM包的相关信息,检查依赖性并自动提示用户解决。因此YUM具有如下特点:

  1. 自动解决包的依赖性问题,能更方便的添加/删除/更新RPM包。
  1. 便于管理大量系统的更新问题。
  1. 可以同时配置多个仓库。
  1. 简洁的配置文件。
  1. 保持与RPM数据库的一致性。
  1. 有比较详细的日志,可以查看何时升级安装了什么软件包等。

使用YUM命令

YUM是YUM系统的字符界面管理工具,语法:yum [全局参数] 命令 [命令参数]

首先列举并解释一些常用的全局参数。

  • -y:对yum命令的所有提问回答"是(yes)"。
  • -C:只利用本地缓存,不从远程仓库下载文件。
  • --cnablerepo=REPO:临时启用指定的名为REPO的仓库。
  • --disablerepo=REPO:临时禁用指定的名为REPO的仓库。
  • --installroot=PATH:指定安装软件时的根目录,主要用于为chroot环境安装软件。

yum命令的常见用法表

命令

功能

yum check-update

检查可更新的所有软件包

yum update

下载更新系统已安装的所有软件包

yum upgrade

大规模的版本升级,与yum update不同的是,连旧的被淘汰的包也升级

yum install

安装新软件包

yum update

更新指定软件包

yum remove

移除指定软件包

yum localinstall

安装本地的RPM包(与rpm -i命令不同,可同时安装依赖的包)

yum localupdate

更新本地的RPM包(与rpm -U命令不同,可同时安装依赖的包)

yum groupinstall

安装指定软件组中的软件包

yum groupupdate

更新指定软件组中的软件包

yum groupremove

卸载指定软件组中的软件包

yum grouplist

查看系统中已经安装的和可用的软件组

yum list

列出资源库中所有可以安装或更新的rpm包,以及已经安装的rpm包

yum list

列出资源库中与正则表达式匹配,可以安装或更新的rpm包,以及已经安装的rpm包

yum list available

列出资源库中所有可以安装的rpm包

yum list available

列出资源库中与正则表达式匹配的所有可以安装的rpm包

yum list updates

列出资源库中所有可以更新的rpm包

yum list updates

列出资源库中与正则表达式匹配的所有可以更新的rpm包

yum list installed

列出资源库中所有已经安装的rpm包

yum list installed

列出资源库中与正则表达式匹配的所有已经安装的rpm包

yum list extras

列出已经安装的但是不包含在资源库中的rpm包

yum list extras

列出与正则表达式匹配的已经安装的但是不包含在资源库中的rpm包

yum list recent

列出最近被添加到资源库中的软件包

yum search

检测所有可用的软件的名称,描述,概述和已列出的维护者,查找与正则表达式匹配的值

yum provides

检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值

yum clean headers

清除缓存中的rpm头文件

yum clean packages

清除缓存中的rpm包文件

yum clean all

清除缓存中的rpm头文件和包文件

yum deplist

显示软件包的依赖信息

YUM配置文件

主配置文件/etc/yum.conf

文件/etc/yum.conf存放了YUM的基本配置参数,即"主配置"。下面列出默认的配置并说明。

[main]
cachedir=/var/cache/yum/releasever       #指定YUM缓存目录
keepcache=0        #是否保持缓存(包括仓库数据和RPM), 1保存,0不保存
debuglevel=2       #设置日志记录等级(0-10),数值越高记录的信息越多
logfile=/var/log/yum.log                #设置日志文件路径
distroverpkg=centos-release        # 指定发行版本的软件包名称
exactarch=1       #更新时是否允许更新不同架构的RPM包
                             #比如是否在i386上更新i686的RPM包
                             #设置为1表示精确匹配,即不允许更新不同架构的RPM包
obsoletes=1                           #相当于upgrade,允许更新陈旧的RPM包
gpgcheck=1                           #校验软件包的GPG签名
plugins= 1                              #默认开启YUM的插件使用
installonly_limit=5               #允许保留多少个内核包
metadata_expire=90m       #设置仓库数据的失效时间为90分钟

仓库配置文件/etc/yum.repos.d/*.repo

   YUM使用仓库配置文件(文件名以.repo结尾文件)配置仓库的镜像站点地址等配置信息。默认情况下,CentOS在/etc/yum.repos.d/目录下包含6个配置文件。主要的仓库配置文本为CentOS-Base.repo,其余配置文件中的仓库默认均为未启用。
所有的配置文件语法相同,采用分段形式,每一段配置一个软件仓库,配置语法如下:

[repositoryid]
name=Some name for this repository
baseur=url://server1/path/to/repository/
            =url://server2/path/to/repository/
            =url://server3/path/to/repository/
mirrorlist=url://path/to/mirrorlist/repository/
enabled=0/1
gpgcheck=0/1
gpgkey=A URL pointing to the ASCII- armoured GPG key file for the repository      failovermethod=priority|roundrobin

其中:

  1. 文件中以“#"开头的行是注释行。
  1. repositoryid:用于指定一个仓库,必须保证此值的唯一性。
  1. name:用于指定易读的仓库名称。
  1. baseurl:用于指定本仓库的URL,可以是如下3种类型。

  • http:用于指定远程HTTP协议的源。
  • ftp:用于指定远程FTP协议的源。
  • file: 用于本地镜像或NFS挂装文件系统。

  1. mirrorlist:用于指定仓库的镜像站点列表。
  1. enabled: 用于指定是否使用本仓库,默认值为1,即可用。
  1. gpgcheck:用于指定是否检查软件包的GPG签名。
  1. gpgkey:用于指定GPG签名文件的URL。

配置YUM仓库

CentOS的YUM仓库

   仓库配置文件/etc/yum.repos.d/*.repo配置了yum命令在安装和查询软件时链接的YUM仓库地址,而CentOS的YUM仓库存放在CentOS的镜像站点中。下表列出官方仓库:

仓库名称

说明

默认是否启用

base

包含一个发行版本的所有软件包

updates

包含基于base仓库的所有软件的升级包

extras

包含CentOS扩展RHEL的软件包

centosplus

用于增强一些现有软件包的功能,如新内核

仓库的启用与禁用

要启用或禁用一个仓库, 除了直接修改仓库配置文件中的enabled=0/1之外,还可以使用yum-config-manager命令。
例如,要启用centosplus仓库,可以使用如下命令。
#yum-config-manager--enable centosplus
又如,要禁用centosplus仓库,可以使用如下命令。
#yum-config-manager--disable centosplus

配置仓库镜像站点

在仓库配置文件CentOS-Base.repo中默认配置了mirrorlist的URL地址,且默认安装启用了yum-plugin-fatestmirror 插件,因此执行yum命令时默认会从镜像地址列表中选择一个速度最快的镜像地址,并从此地址获取软件包。下面给出一个修改仓库配置文件配置镜像地址的例子:

# cd /etc/yum.repos.d/
//备份原始文件
# cp CentOS-Base.repo CentOS-Base.repo.orig
//注释mirrorlist配置行
# sed-i “s/^mirrorlist/#mirrorlist/g“ CentOS-Base.repo
//启用baseurl配置行
#sed-i“s/^#baseurl/baseurl/g“ CentOS-Base.repo
//修改镜像站点的URL
#sed-i“s/mirror.centos.org/mirrors.sohu.com/g“ CentOS-Base.repo

配置非官方的YUM仓库

为什么使用非官方仓库

所谓官方仓库是指CentOS提供的仓库,而非官方仓库是指官方仓库之外的由其他社区或某软件制作者提供的仓库。使用非官方仓库是为了安装官方仓库中不提供的软件包或安装比官方仓库中版本更新的软件包。在选择非官方仓库时,应该选择使用知名的非官方仓库和具有GPG签名的非官方仓库。

非官方仓库配置举例

//1.安装epel仓库的release文件

//epel-release文件在CentOS7的extras仓库里有提供,无需单独下载,可直接使用yum命令安装
#yum -y install epel-release
//2.安装remi仓库的release文件

# wget http://mirrors.hustunique

. com/remi/enterprise/remi-releas-7.rpm
#rpm -ivh remi-releas-7.rpm
//3.导入第三方仓库的GPGkey

#rpm -import/etc/pki/rpm-gpg/RPM-GPG-KEY-*
//4.显示当前启用的YUM仓库

#yum repolist
源标识                                       源名称
base7/x86_64                        CentOS-7- Base
epel/x86_64                           Extra Packages for Enterprise Linux 7-x86_64
extras/7/x86_64                   CentOS-7- Extras
remi-safe                               Safe Remi's RPM repository for Enterprise Linux 7-x86_64
updates/7/x86_64               CentOS-7- Updates
repolist: 20,694
//5.启用第三方仓库

# yum-config-manager -enable remi remi-php56
//6.配置第三方仓库的国内镜像

# cd /etc/yum.repos.d/
# sed-i "s/^mirrorlist/ #mirrorlist/g" remi.repo
# sed-i "s/^#baseurl/baseurl/g" remi.repo
# sed-i "s/rpms.familecollet.com/mirrors.hustunique.com\/remi/g" remi.repo
#sed-i "s/^mirrorlist /#mirrorist/g" epel.repo
#sed-i "s/^#baseurl/baseurl/g" epel.repo
#sed-i "s/download.fedorprpoject.org\/pub/mirrors.yum-idc.cpm/g" epel.repo
//7.安装第三方仓库提供的软件

# yum install htop nload cockpit

你可能感兴趣的:(Linux,shell,编程,linux,服务器,运维)