1.1 语法:

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

1.2 描述:

yum 是一个交互式的,基于rpm包的管理工具。它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

1.3 选项

-h:显示帮助信息;

-y:对所有的提问都回答“yes“。 常用

-c:指定配置文件;

-q:安静模式;

-v:详细模式;

-d:设置调试等级(0-10);

-e:设置错误等级(0-10);

-R:设置yum处理一个命令的最大等待时间;

-C:完全从缓存中运行,而不去下载或者更新任何头文件。 

1.4 命令:

install用来安装最新版本的软件包或组,并且会自动安装所需的依赖软件包。

update:如果没有指定软件包名称,则会升级已经安装的所有软件到最新版本。如果指定了软件包,则只升级指定的软件包。

update-to:类似于update命令,但需要指定升级后的版本号。

check-update:用于检查软件包可用的最新版本。如果不指定软件包,则列出所有本地以及安装的软件可用升级版本。

upgrade:类似于update,当yum.conf文件中的obsoletes=1时,update和upgrade参数意思相同。当然,从本质上讲,update,是修补bug,或功能少量增加。而upgrade一般是是大的版本不同。改变比较大。要搞清楚其中不同。

upgrade-to:类似于update-to。

distribution-synchronization or distro-sync:把本地的软件版本变成和yum源上最新的版本一直。可能升级也可能降级。关键看你本地已安装软件版本和yum源上版本。最软件包组不生效。

remove or erase:删除指定的软件包。已经依赖当前软件的其他软件。

list:用来显示软件包的各种信息。内容简单了点。想要复杂内容,查看后面的list命令的选项。

# yum list iftop

iftop.x86_64                                1.0-0.14.pre4.el6                                @epel

info显示软件包各种信息。常用

provides or whatprovides :该命令输出内容包含在info命令中。

search:强大的命令,用于在yum源中搜索目标软件包。使用频率更高

clean:清楚缓存。还有特定的选项。查看后面的《CLEAN OPTIONS》部分

makecache: 下载header和元数据到本地。下次安装软件时,就会搜索本地的元数据。默认缓存时间是6小时,即6h。

#yum makeache

Loaded plugins: fastestmirror

Determining fastest mirrors

epel/metalink

* elrepo: mirrors.tuna.tsinghua.edu.cn

* epel: mirrors.ustc.edu.cn

base

base/group_gz

base/filelists_db

base/other_db

epel

epel/filelists_db

epel/updateinfo

epel/primary_db

epel/other_db

Metadata Cache Created

groupinstall:安装软件包组。

groupupdate:更新软件包组。

grouplist: 显示所有的可用软件包组。

groupremove: 删除软件包组。

groupinfo:显示软件包组信息。

shell :把安装命令放到文件中。通过shell命令调用该文件。

resolvedep:显示指定软件包的依赖。但好像不全。只能显示一个依赖软件包。

localinstall:用于安装本地的一组rpm文件。如果需要,会调用仓库依赖关键库。前提是你要把相关rpm文件都下载好,否则无法安装。

localupdate:用于升级本地rpm文件。

reinstall:先检查指定软件包的完整性。如果发生问题才重新安装

downgrade:降级

deplist:显示软件包依赖关系,比resolvedep详细多了。

repolist:显示所有的yum源:

# yum repolist

repo id               repo name                                                             status

base                  CentOS-6 - Base - 163.com                                              6,706

elrepo                ELRepo.org Community Enterprise Linux Repository - el6                   263

epel                  Extra Packages for Enterprise Linux 6 - x86_64                        12,327

extras                CentOS-6 - Extras - 163.com                                               64

updates               CentOS-6 - Updates - 163.com                                             270

LIST OPTIONS (较少使用)

yum list all:列出所有可用的软件包。等同于yum list available

yum list updates:列出所有可以升级的软件。

yum list installed: 列出所有已经安装的软件。好用,常用。

yum list extras:系统上的已经安装的软件包,其不在所有仓库中列表。很少用。

yum list obsoletes :

yum list recent:显示最近被加入到仓库中的软件列表。

CLEAN OPTIONS(较少使用)

yum clean expire-cache

yum clean packages

yum clean headers   #执行yum makecache会缓存headers。

yum clean metadata #执行yum makecache会缓存metadata

yum clean dbcache

yum clean rpmdb

yum clean plugins

yum clean all

2、yum配置文件

# cat /etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever #yum下载的RPM包的缓存目录

keepcache=1 #缓存是否保存,1保存,0不保存。

debuglevel=2 #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。

logfile=/var/log/yum.log #yum的日志文件所在的位置

exactarch=1  #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。

obsoletes=1  #当等于1时,参数update和upgrade意思相同。默认是1.

gpgcheck=1 #是否检查GPG(GNU Private Guard),一种密钥方式签名。

plugins=1 #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。

installonly_limit=5 #允许保留多少个内核包。

exclude=selinux*         #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release

#还有一个我找了很久的东西,其实默认配置文件中就有的,只是被注释了。

metadata_expire=90m #当执行yum makecache后,产生的metadata cache多久会失效,过期。h表示小时,m表示分钟。默认是6h。never表示永不过期。

关于yum.conf配置文件的详细帮助,查看man yum.conf手册。

3、yum源文件repo说明:

[base] #仓库id(repositoryid),必须是唯一的。

name=CentOS-$releasever - Base - 163.com   #仓库的名字,描述仓库作用。

baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/

#baseurl 必须一个目录,是yum仓库repodata目录,即按照repodata格式要求存放各种文件。协议支持多种:http://, ftp:// or file://。 也可以指定多个basesurl。比如:

baseurl=url://server1/path/to/repository/

                     url://server2/path/to/repository/

                     url://server3/path/to/repository/

#mirrorlist=http://mirrors.elrepo.org/mirrors-elrepo.el6

#mirrorlist url指向一个文件,其中包含所有的baseurl地址。该选项可以baseurl替代。只要把其中所有内容都放到baseurl选项中即可。另外,还有一个metalink选项,类似于mirrolist。启用metalink,就会禁用mirroslist选项。

enabled=1 #yum根据此标识判断是否启用该仓库

gpgcheck=1 #是否对所下载的软件进行GPG签名检查。可以选择关闭。不影响使用。

repo_gpgcheck=0  #是否对这个仓库的repodata数据做GPG签名检查。默认不设置。

gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

#gpgkey用于该仓库的GPG key文件。和gpgcheck选项配合使用,如果设置为1,则会调用当前选项的url。可以指定多个url。

4、yum公共源

用于php的rpm安装

rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm

社区企业Linux仓库

rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

查看官网,可以看到更多其他yum源:

http://elrepo.org/tiki/tiki-index.php

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

rpm -Uhv 

https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm

163镜像源:

官方网站查看:http://mirrors.163.com/.help/centos.html

操作:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

cd /etc/yum.repos.d/

Centos 6:

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

最好下载最新版本。因为yum源会定期更新。看说明是每4小时更新一次。

Centos 7:

wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

Centos 5:

http://mirrors.163.com/.help/CentOS5-Base-163.repo

运行以下命令生成缓存

#yum clean all #yum makecache

4、创建本地yum源

目标:

把ES6.3的光盘中的Packages RPM包当做yum本地安装源。RPM包放到/var/ftp/pub中。

步骤:

1.首先挂着光盘:

#mount -iso9660 /dev/cdrom /mnt/cdrom

2.安装ftp服务

#cd /mnt/cdrom/Packages

#rpm -ivh vsftpd        

#service vsftpd start

3.把光盘的Packages文件夹中的RPM包都拷贝到/var/ftp/pub中。

#cp -rv /mnt/cdrom/Packages  /var/ftp/pub

 备注:此时,Packages文件夹被拷贝到/var/ftp/pub下了。-rv参数的意思是把文件夹拷贝到目标目录中,并显示拷贝过程。

4.安装Createrepo程序

     #cd /mnt/cdrom/Packages

#rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

  #rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

  #rpm -ivh createrepo-0.9.8-5.el6.noarch.rpm

5. 拷贝光盘上的comps-rhel6-Server.xml文件到/var/ftp/pub/Packages

# cp /mnt/cdrom/Server/repodata/c27858b7430afeb372d0dd50d8a56fd46b47bc81bb9580c2bb91ab697e40592e-comps-rhel6-Server.xml  /var/ftp/pub/Packages

6. 使用Createrepo程序更新c27858b7430afeb372d0dd50d8a56fd46b47bc81bb9580c2bb91ab697e40592e-comps-rhel6-Server.xml。这个文件中存储的是所有RPM包的索引,执行完成后,将在Packages中新生成repodata文件夹。用于存储索引。

#cd /var/ftp/pub/Packages

#createrepo -g c27858b7430afeb372d0dd50d8a56fd46b47bc81bb9580c2bb91ab697e40592e-comps-rhel6-Server.xml /var/ftp/pub/Packages

7. 修改yum文件,调用本地源

#cd /etc/yum.repos.d

#cp rehl-source.repo   rehl-source.repo.bak  

#vi rehl-source.repo 

   编辑该文件:

   [Packages]                                                            

name=Red Hat Enterprise Linux $releasever - $basearch - Source

baseurl=file:///var/ftp/pub/Packages/                              

enabled=1                                                                      

gpgcheck=0                                                                  

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release