Linux程序包管理yum

1.  Yum是什么?

yellowdogupdate modifier = yum

2.  为什么要使用yum?

yum:自行解决依赖关系

3.  Yum C/S架构:

4.  Yum的工作方式

要使用yum,必须的有yum仓库,在yum仓库服务端的某个路径中存放有程序包,使用createrepo命令构建这些程序包的元数据保存在repodata的目录下,yum客户端在首次启动时,会从yum服务上下载元数据到本地进行缓存,以后yum客户端在启动时,首先会去服务端检查yum元数据的特征码和本地缓存的yum的元数据的特征码做比较,如特征码一致则使用本地的元数据,如特征码不一致则从yum服务器端下载元数据到本地进行缓存

Yum仓库的使用依赖于文件共享的文件服务服务器;常见的文件服务的服务器:1.ftp服务

2 .http服务 3 .本地文件目录4 .NFS服务

rpm为基础包管理器;yum则是rpm的前端工具,yum的配置文件指向仓库指路径:repodata目录所在的父目录

 

5.yum配置文件

配置文件:指向仓库的位置以及相关的各种配置信息;每个yum命令行可以同时指向多个仓库,仓库间可以优先级等相关的配置;

 

yum配置文件有两部分组成:

主配置文件:/etc/yum.conf ;为各仓库指向提供公共配置文件;

各仓库的定义:/etc/yum.repos.d/*.repo ;

注意! : /etc/yum.repos.d/目录下文件以.repo结尾;每个repo配置文件中可以配置一至多个仓库;

 

6.  /etc/yum.conf文件

directive=VALUE

[main]:提供公共配置信息

cachedir=/var/cache/yum/$basearch/$releasever<--缓存目录;

keepcache=0<--是否缓存已下载的rpm包 0:不缓存,安装完成以后删除rpm包;1 : 缓存

debuglevel=2<--调试级别;级别越高输出的信息越详细

logfile=/var/log/yum.log<--日志文件存放位置

exactarch=1<--下载的程序包的平台是否与当前平台一致

obsoletes=1是否检测包是否已被废弃

gpgcheck=1<--在安装前是否检查每一个程序包的来源合法性;包完整性

plugins=1<--是否支持插件

installonly_limit=5<--限制每一次安装的程序包个数

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum<--bug追踪的路径

distroverpkg=centos-release

 

….

#in /etc/yum.repos.d

7.  各仓库配置

[repositoryid]<--对于当前系统的yum来讲,此repositoryid用于惟一标识此repository指向,因此,其必须惟一;

name=<--当前仓库描述信息;

baseurl=url://path/to/repository/<--指明repository的访问路径;通常为一个文件服务器上输出的某repository;

url:

ftp服务: ftp://SERVER/PATH/TO/REPOSITORY

http服务: http://SERVER/PATH/TO/REPOSITORY

本地目录:: file:///PATH/TO/REPOSTIROY

 

enabled={1|0}此仓库是否可被使用:默认为1

gpgcheck={1|0} 是否对程序包做校验;默认为1

gpgkey=url://path/to/keyfile指明gpgkey文件路径;

cost=#指明当前repository的访问开销,默认为1000;

 

yum有内置变量,用于保存当前平台的相信息;

(1)$raleasever: 当前OS发行版的主版本号;

例如,对CentOS6.6 x86_64,主版本号为6;

(2)$arch:平台

i386,i486

(3)$basearch: 基础平台, 例如i686, i586,i486以及i386的基础平台同为i386;

(4)$YUM0-$YUM9

 

假如:

baseurl=http://repo.magedu.com/centos/$releasever/$basearch

当前系统为CentOS6.6 x86_64

http://repo.magedu.com/centos/6/x86_64

创建yum仓库

如何使用发行版光盘作为yumrepository

(1)挂载光盘到指定挂载点,如/media/cdrom

(2)新建yum repo配置文件,类似如下所示:

[dvdbase]

name=CentOS6.6 X86_64 on dvd1

baseurl=file:///media/cdrom

gpgcheck=0

enabled=1      

 

自己创建yum仓库:

(1)在基于发行版安装树安装 createrepo 程序包;

(2)确定repository输出方式:

    本地输出:提供一个放置rpm包的本地路径;

    网络输出:提供一个文件服务器,配置好ftp服务或http服务;

ftp服务:

安装程序包:vsftpd

文件存放路径:/var/ftp/pub

启动服务:servicevsftpd start

http服务:

安装程序包:httpd

文件存放路径:/var/www/html

启动服务:servicehttpd start

 

Note:确保防火墙服务关闭;

 

(3)在准备好的目录中放置rpm程序包文件

(4)对此目录运行createrepo命令即可

 

示例

[root@localhostyum.repos.d]# cat centos6.6.repo

[base]

name=CentOS$releasever $basearch on local server 172.16.0.1

baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-$basearch/

enabled=1

gpgcheck=0

 

[extra]

name=CentOS$releasever $basearch extras

baseurl=http://172.16.0.1/centos/$releasever/extras/$basearch/

enabled=1

gpgcheck=0

 

[epel]

name=FedoraEPEL for CentOS$releasever $basearch on local server 172.16.0.1

baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/

enabled=1

gpgcheck=0

 

yum命令的使用格式

yum[options] [command] [package ...]

 

yum仓库管理:

repolist:列出已经配置的所有可用仓库   

repolist[all|enabled|disabled]

列出默认已经启用的仓库

[root@localhost ~]# yumrepolist  <--默认情况下会列出以启用的仓库 等同于yumrepolist enabled

已加载插件:fastestmirror,refresh-packagekit, security

Loading mirror speeds fromcached hostfile

仓库标识                         仓库名称                                                                         状态

base                             CentOS 6 x86_64 on localserver 172.16.0.1                                         4,184

epel                             Fedora EPEL forCentOS6 x86_64 on local server 172.16.0.1                         12,922

extra                            CentOS 6 x86_64 extras                                                            2,334

repolist: 19,440

列出全部的repo仓库

[root@localhost ~]# yumrepolist all

已加载插件:fastestmirror,refresh-packagekit, security

Loading mirror speeds fromcached hostfile

仓库标识                         仓库名称                                                                   状态

C6.0-base                        CentOS-6.0 - Base                                                         禁用

C6.0-centosplus                  CentOS-6.0 - CentOSPlus                                                    禁用

...

C6.5-extras                      CentOS-6.5 - Extras                                                        禁用

C6.5-updates                     CentOS-6.5 - Updates                                                       禁用

base                             CentOS 6 x86_64 onlocal server 172.16.0.1                                  启用:  4,184

base-debuginfo                   CentOS-6 - Debuginfo                                          禁用

c6-media                         CentOS-6 - Media                                                           禁用

epel                             Fedora EPEL forCentOS6 x86_64 on local server 172.16.0.1                   启用: 12,922

extra                            CentOS 6 x86_64extras                                                     启用:  2,334

fasttrack                        CentOS-6 -fasttrack                                                       禁用

repolist: 19,440

yum缓存管理:

clean:清理缓存

clean[ packages | metadata | expire-cache | rpmdb | plugins | all ]

示例

清空所有的缓存

[root@localhost~]# yum clean all

已加载插件:fastestmirror, refresh-packagekit, security

Cleaningrepos: base epel extra

清理一切

Cleaningup list of fastest mirrors

makecache: 缓存创建

自动连接至每一个可用仓库,下载其无数据,将其创建为缓存;

示例

[root@localhost ~]# yummakecache

已加载插件:fastestmirror,refresh-packagekit, security

Determining fastest mirrors

base                                                                                              |3.2 kB     00:00    

base/group_gz                                                                                    | 216 kB     00:00    

base/filelists_db                                                                                 | 4.3MB     00:00    

base/primary_db                                                                                  | 3.3 MB     00:00    

base/other_db                                                                                    | 1.8MB     00:00    

epel                                                                                             | 3.0 kB     00:00    

epel/filelists_db                                                                                |  10 MB    00:01    

epel/primary_db                                                                                  | 7.2 MB     00:00    

epel/other_db                                                                                    | 4.3 MB     00:01    

extra                                                                                            | 2.9 kB     00:00    

extra/filelists_db                                                                               | 1.7 MB     00:00    

extra/primary_db                                                                                 | 1.1 MB     00:00    

extra/other_db                                                                                   | 965 kB     00:00    

元数据缓存已建立

yum程序包查看:

yumlist [all | glob_exp1] [glob_exp2] [...]

 

yumlist {available|updates|installed|extras|obsoletes} [glob_exp1] [...]

yum list [all | glob_exp1] [glob_exp2][...]

yum list available [glob_exp1] [...]

yum list updates [glob_exp1] [...]

yum list installed [glob_exp1] [...]

yum list extras [glob_exp1] [...]

yumgrouplist [hidden] [groupwildcard] [...]

示例

显示当前系统所有已安装和在仓库中未安装的软件包

# yumlist all

显示与mysql相关的软件包

#yum list *mysql* <--可使用glob通配符 * ?

显示当前系统上已经安装的软件包

#yum list installed

显示当前系统中已安装但在仓库中不提供的包

#yum list extras

列出当前系统可用包组

#yum grouplist

 

yum程序包安装:

yuminstall package1 [package2] [...]

Note:

1. 安装时只需要提供包名;

2.如果某包有在不同仓库中有多个不同版本,默认会安装最新版本;如果要安装指定版本:install PACKAGE-VERSION ...

例如:安装mysql

#yum install mysql -y

重新安装软件包(覆盖安装)

reinstallpackage1 [package2] [...]

例如 :

#yum reinstall mysql -y

程序包升级:

update[package1] [package2] [...]

示例

#yum update mysql php

程序包降级:

downgradepackage1 [package2] [...]

例如

#yum downgrade mysql php -y

检查有哪些升级可用:

check-update

例如

#yum check-update

程序包卸载:

remove| erase package1 [package2] [...]

 

所有依赖于正卸载的程序包的程序包会被一并卸载;

例如

#yum remove mysql php

查询程序包

查询程序的相关简要信息:info PACKAGE ...

[root@localhost~]# yum info mysql

已加载插件:fastestmirror, refresh-packagekit, security

Loadingmirror speeds from cached hostfile

已安装的软件包

Name        : mysql

Arch        : x86_64

Version     : 5.1.73

Release     : 3.el6_5

Size        : 2.4 M

Repo        : installed

Fromrepo   : base

Summary     : MySQL client programs and sharedlibraries

URL         : http://www.mysql.com

License     : GPLv2 with exceptions

Description: MySQL is a multi-user, multi-threaded SQL database server. MySQL is a

            : client/server implementationconsisting of a server daemon (mysqld)

            : and many different clientprograms and libraries. The base package

            : contains the standard MySQLclient programs and generic MySQL files.

在包名和sumary信息中搜索指定的关键字:searchKEYWORD ...

[root@localhost~]# yum search mysql

已加载插件:fastestmirror, refresh-packagekit, security

Loadingmirror speeds from cached hostfile

==================================================N/S Matched: mysql ===================================================

MySQL-python.x86_64: An interface to MySQL

MySQL-zrm.noarch: MySQL backup manager

apr-util-mysql.x86_64: APR utility library MySQL DBD driver

asterisk-mysql.x86_64: Applications for Asterisk that use MySQL

bacula-director-mysql.x86_64: Bacula Director with MySQL database support

bacula-storage-mysql.x86_64: MySQL Bacula storage daemon files

bytefx-data-mysql.x86_64: MySQL database connectivity for Mono

collectd-mysql.x86_64: MySQL module for collectd

dmlite-plugins-mysql.x86_64: MySQL plugin for dmlite

dovecot-mysql.x86_64: MySQL back end for dovecot

dpm-copy-server-mysql.x86_64: DPM copy server with MySQL database back-end

查询指定文件由哪个程序包安装生成:provides|whatprovides /PATH/TO/SOMEFILE

例如

[root@localhost~]# yum provides /etc/fstab

已加载插件:fastestmirror, refresh-packagekit, security

Loadingmirror speeds from cached hostfile

setup-2.8.14-20.el6_4.1.noarch: A set of system configuration and setup files

Repo        : base

匹配来自于:

Filename    : /etc/fstab

 

 

 

setup-2.8.14-20.el6_4.1.noarch: A set of system configuration and setup files

Repo        : installed

匹配来自于:

Other       : 提供依赖满足:/etc/fstab

安装或升级本地的程序包文件

用于安装仓库中并不存在的程序包文件,这些程序包有可能又依赖于仓库中的某些程序包;

安装本地的程序包文件

localinstallrpmfile1 [rpmfile2] [...]

示例

#yum localinstall zsh-4.3.10-7.el6.x86_64.rpm

#yum install  zsh-4.3.10-7.el6.x86_64.rpm

升级本地的程序包文件

示例

localupdaterpmfile1 [rpmfile2] [...]

#yum localupdate zsh-4.3.10-9.el6.x86_64.rpm

包组管理:

列出所有包组:grouplist

显示指定包组详情:groupinfo group1 [...]

示例

[root@localhost~]# yum groupinfo '大系统性能'

已加载插件:fastestmirror, refresh-packagekit, security

设置组进程

Loadingmirror speeds from cached hostfile

 

组:大系统性能

 描述:大系统的性能支持工具

 必要的软件包:

   numactl

   numad

 默认的软件包:

   hwloc

   libcgroup

   libhugetlbfs

   libhugetlbfs-utils

   libtopology

 可选的软件包:

   ksm_preload

   numatop

   tuna

 

安装包组:groupinstall group1 [group2][...]

 

卸载包组:groupremove group1 [group2][...]

 

升级包组:groupupdate group1 [group2][...]

 

在centos 7 上: 可直接用install、remove或update来管理包组:

@GROUP_NAME

示例:

yuminstall @"Server Platform Development"

 

yum命令的可用选项:

-y:自动回答为“yes”

--disablerepo=:临时禁用在配置文件中配置并启用的某repository;

--enablerepo=:临时启用指定的某repo;

--nogpgcheck:禁止做包校验;