YUM简介 1、yum的优势
虽然rpm命令是一个功能强大的软件包管理工具,rpm命令有两个缺点,一是需要下载适合你的升级软件包;二是检测到软件包的依赖关系时,只能手工配置。而yum可以自动解决软件包间的依赖关系,并且可以通过网络安装和升级软件包。
一个软件包需要一个或多个库,那么这个(些)库就是这个包的依赖。要正常安装软件包,首先要满足它的依赖关系,一个RPM包的依赖信息存放在这个RPM包中。yum使用软件包中的依赖关系信息,保证这个软件包在安装前,首先满足相应的条件,然后自动安装软件包。如果发生冲突,yum会自动放弃安装,不对系统做任何修改。
yum的优势:自动下载、自动检测、自动安装、自动配置、自动删除。
2、yum的产生
在RedHatEnterpriseLinux(RHEL从5.O版开始采用yum)、CentOS和Fedora等发行版中,采用了一种叫做yum的软件包管理工具。yum(Yellow dog Updater Modified)用python语言写成。yum的宗旨是收集rpm软件包的相关信息,检查依赖关系,自动地升级、 安装、删除rpm软件包。
yum的关键之处是要有可靠的repository(仓库),repository管理一部分甚至一个Linux发行版的应用程序的依赖关系,根据计算出来的依赖关系进行相关软件包的升级、安装、删除等操作,解决了Linux用户一直头痛的依赖关系问题。 repository可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header。header包括了rpm包的各种信息,包括描述、功能、提供的文件、依赖性等。正是收集了这些header并加以分析,才能自动地完成升级、安装软件包等任务。
3、命令详解
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
案例一 网络YUM的配置
网络yum服务器的配置
[root@localhost ~]# rpm -qa yum |grep yum
yum-3.2.22-20.el5 //查询yum是否安装
如果没有安装需要自己手动安装
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom //挂载光盘
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost ~]# cd /mnt/cdrom/Server/ //切换目录
[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm //安装ftp服务器
warning: vsftpd-2.0.5-16.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:vsftpd ########################################### [100%]
[root@localhost Server]# cd ../
[root@localhost cdrom]# cd /var/ftp/pub
[root@localhost pub]# cp -r /mnt/cdrom/. ./ //将cdrom下文件拷贝到ftp主目录下
[root@localhost pub]# cd
[root@localhost ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@localhost ~]# ll /var/ftp/pub |grep "^d" //查找ftp目录下目录文件
dr-xr-xr-x 3 root root 4096 Aug 11 10:06 Cluster
dr-xr-xr-x 3 root root 4096 Aug 11 10:06 ClusterStorage
dr-xr-xr-x 3 root root 159744 Aug 11 10:09 Server
dr-xr-xr-x 3 root root 4096 Aug 11 10:09 VT
dr-xr-xr-x 4 root root 4096 Aug 11 10:09 images
dr-xr-xr-x 2 root root 4096 Aug 11 10:09 isolinux
安装生成RPM包依赖关系及分组信息的工具
[root@localhost Server]# pwd
/var/ftp/pub/Server
[root@localhost Server]# rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
warning: createrepo-0.4.11-3.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:createrepo ########################################### [100%]
[root@localhost Server]# createrepo -g ./repodata/comps-rhel5-server-core.xml ./ //生成RPM依赖关系。-g参数主要是生成依赖关系和更新分组文件信息
2292/2292 - system-config-soundcard-2.0.6-1.el5.noarch.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
如果Server目录下出现新的包,使用这个命令重新生成rpm依赖关系。否则不能使用新的包安装。
root@localhost Server]# service vsftpd restart //重启ftp服务
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
客户端配置
没有配置yum前
[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
1 [rhel-server] //光盘server 目录
2 name=Red Hat Enterprise Linux server //说明是server 目录
3 baseurl=ftp://192.168.145.100/pub/Server //网络yum 源
4 enabled=1 //是否启用yum 仓库
5 gpgcheck=1 //是否做签名检测
6 gpgkey=ftp://192.168.145.100/pub/RPM-GPG-KEY-redhat-release //检测时候钥匙文件存放目录
7
可以使用yum
本地yum的配置
当网络中linux主机较少时,只需配置本地yum即可使用yum仓库安装软件包
[root@localhost ~]# rpm -qa yum |grep yum
yum-3.2.22-20.el5 //查询yum是否安装
如果没有安装需要自己手动安装
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom //挂载光盘
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
1 [rhel-server] //光盘server 目录
2 name=Red Hat Enterprise Linux server //说明是server 目录
3 baseurl=file:///mnt/cdrom/Server //本地yum 源
4 enabled=1 //是否启用yum 仓库
5 gpgcheck=1 //是否做签名检测
6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release //检测时候钥匙文件存放目录
7
[root@localhost ~]# yum install httpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i386 0:2.2.3-31.el5 set to be updated
rhel-server/filelists | 2.3 MB 00:00
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================
Package Arch Version Repository Size
==================================================================================================
Installing:
httpd i386 2.2.3-31.el5 rhel-server 1.2 M
Transaction Summary
==================================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 1.2 M
Is this ok [y/N]: y
Downloading Packages:
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 37017186
rhel-server/gpgkey | 1.1 kB 00:00
Importing GPG key 0x37017186 "Red Hat, Inc. (release key) <[email protected]>" from /mnt/cdrom/RPM-GPG-KEY-redhat-release
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : httpd 1/1
Installed:
httpd.i386 0:2.2.3-31.el5
Complete!
[root@localhost ~]#
当需要配置群集,虚拟,存储时。可采用上述步骤配置 cluster、vt、clusterstorage仓库。目录对应正确。
包依赖关系发生变化时必须重新生成rpm包依赖关系。