Linux软件包管理之yum

2.1 yum介绍

yum命令是在FedoraRedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

2.2 yum命令格式

yum [options]COMMAND

2.3 yum命令常用选项

-h:显示帮助信息;

-y:对所有的提问都回答“yes”;

-c:指定配置文件;

-q:安静模式;

-v:详细模式;

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

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

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

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

2.4 yum命令常用command

install:安装rpm软件包;

update:更新rpm软件包;

check-update:检查是否有可用的更新rpm软件包;

remove:删除指定的rpm软件包;

list:显示软件包的信息;

   all:列出所有已安装或者未安装的,可安装的

   installed:列出已安装的

   available:列出可用的尚未安装的包

search:检查软件包的信息;

info:显示指定的rpm软件包的描述信息和概要信息;

clean [all|pakages|metadata|expire-cache|rpmdb|plugins]:清理yum过期的缓存; 

resolvedep:显示rpm软件包的依赖关系;

localinstall:安装本地的rpm软件包;

localupdate:显示本地rpm软件包进行更新;

deplist:显示rpm软件包的所有依赖关系。
reinstall:重新安装软件包

groupinstall "group_name":安装指定的包组

groupremove "group_name":卸载指定包组

groupinfo:查看包组的信息,yum groupinfo "package_group_name"

grouplist:列出所有包组

--nogpgcheck:手动禁止检查来源及完整性

#yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm--nogpgcheck

2.5 yum客户端

yum客户端使用过程:

    1.配置文件,指定各可用的yum仓库

    2.缓存元数据,yum会到各可用的yum仓库获取元数据,并缓存到本地

    3.分析元数据;根据具体的操作请求完成元数据分析。可能包括检查依赖关系

    4.执行具体操作

客户端配置文件指定对应服务器的访问方式:

  ftp    ftp://server/path/to/repo

  http   http://server/path/to/repo

  nfs    nfs:///server/nfs_path

  file    file:///path/to/repository

 

2.6 配置yum仓库

#要使用yum应用程序,首先得配置可用的yum仓库,保存在配置文件中。

#yum仓库相关配置文件如下:

 /etc/yum.conf

 /etc/yum.repos.d/*.repo

配置文件格式:由两段组成

      [main]:主配置段

      [repo]:仓库配置段

配置repo:

[repoID]

name=string  描述信息

baseurl=仓库的访问路径,repodata目录所在的路径

enabled={1|0},1启动,0禁用

gpgcheck={1|0},是否检查包来源合法性

gpgkey=公钥文件(可以在本地也可以在服务器端路径)

cost=定义此仓库的开销,默认为1000

2.7 自定义一个本地yum仓库,并安装httpd服务

#使用Centos6.6系统光盘中的rpm包作为yum仓库演示

[root@moban ~]# mount /dev/cdrom /media/
mount: block device /dev/sr0 iswrite-protected, mounting read-only[root@moban ~]# ls /media/
CentOS_BuildTag  Packages                   RPM-GPG-KEY-CentOS-Security-6 isolinux
EFI              RELEASE-NOTES-en-US.html    RPM-GPG-KEY-CentOS-Testing-6   repodata
EULA             RPM-GPG-KEY-CentOS-6        TRANS.TBL
GPL              RPM-GPG-KEY-CentOS-Debug-6  p_w_picpaths

   

#创建名为Centos6.6.repo文件

[root@moban yum.repos.d]# catCentos6.6.repo
[base]
name=Centos 6.6 x86_64 release
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///media/RPM-GPG-KEY-CentOS-6

#查看可用的repo,能否看到自定义ID名为baserepo

[root@moban yum.repos.d]# yum repolist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, security
Loading mirror speeds from cachedhostfile
base                                                                                   | 4.0 kB     00:00 ...
repo id                                    reponame                                                    status
base                              Centos 6.6 x86_64release                   6518
repolist: 6518

#安装httpd服务

[root@moban yum.repos.d]# yum -y installhttpd
[root@moban yum.repos.d]# rpm -q httpd
httpd-2.2.15-39.el6.centos.x86_64

2.8 createrepo命令

#自建yum仓库需要创建repodata,需要使用createrepo命令创建repodata 

createrepo命令:用于创建repodata

命令用法:

     createrepo  /path/to/filedirctory

2.9自建一个基于httpdyum仓库

1.准备文件服务器:这里使用httpd服务为例,请事先确保已经安装httpd程序

[root@moban yum.repos.d]# yum -yinstall httpd

2./var/www/html/目录下创建一个目录来保存准备制作成为yum仓库的所有rpm包。

[root@moban yum.repos.d]# mount/dev/cdrom /media/

#创建用于保存rpm包的目录

[root@moban ~]# mkdir/var/www/html/local_repo

#为了演示从系统镜像中拷贝出一部分rpm包作为演示使用

[root@moban ~]# cp/media/Packages/mysql*.rpm /var/www/html/local_repo
[root@moban ~]# ls/var/www/html/local_repo
mysql-5.1.73-3.el6_5.x86_64.rpm                  mysql-devel-5.1.73-3.el6_5.x86_64.rpm
mysql-bench-5.1.73-3.el6_5.x86_64.rpm             mysql-libs-5.1.73-3.el6_5.i686.rpm
mysql-connector-java-5.1.17-6.el6.noarch.rpm      mysql-libs-5.1.73-3.el6_5.x86_64.rpm
mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm  mysql-server-5.1.73-3.el6_5.x86_64.rpm
mysql-devel-5.1.73-3.el6_5.i686.rpm              mysql-test-5.1.73-3.el6_5.x86_64.rpm

3.创建repodata

#创建完成会在/var/www/html/local_repo/目录下生成一个repodata目录

[root@moban ~]# createrepo/var/www/html/local_repo/
Spawning worker 0 with 10 pkgs
Workers Finished
Gathering worker resultsSaving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@moban ~]# ls /var/www/html/local_repo/
mysql-5.1.73-3.el6_5.x86_64.rpm                  mysql-libs-5.1.73-3.el6_5.i686.rpm
mysql-bench-5.1.73-3.el6_5.x86_64.rpm            mysql-libs-5.1.73-3.el6_5.x86_64.rpm
mysql-connector-java-5.1.17-6.el6.noarch.rpm      mysql-server-5.1.73-3.el6_5.x86_64.rpm
mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm  mysql-test-5.1.73-3.el6_5.x86_64.rpm
mysql-devel-5.1.73-3.el6_5.i686.rpm               repodata
mysql-devel-5.1.73-3.el6_5.x86_64.rpm

4.启动http服务

[root@moban ~]# /etc/init.d/httpd start

5.配置使用自建的yum仓库

[root@moban ~]# cd /etc/yum.repos.d/
[root@moban yum.repos.d]# catCentos6.6-local.repo
[base-ebrun]
name=Centos 6.6 x86_64 release local
baseurl=http://192.168.0.131/local_repo
enabled=1
gpgcheck=0

6.显示可用的repo

[root@moban ~]# yum repolist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, security
Loading mirror speeds from cachedhostfile
repo id                                   reponame                                                     status
base-ebrun                                Centos 6.6x86_64 release local                                10
repolist: 10

7.安装mysql测试

[root@moban ~]# rpm -q mysql
package mysql is not installed
[root@moban ~]# yum -y install mysql
[root@moban ~]# rpm -q mysql       
mysql-5.1.73-3.el6_5.x86_64