您的位置:首页 > 运维架构 > Linux

linux之yum

2013-10-30 21:44 330 查看
链接一篇关于yum的文章:http://bbs.chinaunix.net/thread-4061323-2-1.html
1、yum的工作原理
yum是rpm的一个前端工具,分为服务器端与客户端,客户端有yum的配置文件,通过配置文件的设定去联系yum仓库,但先去取得yum仓库的元数据,而不是直接云取rpm包。其中元数据中的信息是指一些放在仓库中的各个rpm包之间的依赖关系、各个rpm包中的文件列表等信息。yum仓库可在本地,也可在远端的一个服务器上,主要是ftp和http文件服务器。当客户端第一次运行yum命令时,会去联系yum的仓库中的元数据,把这些元数据下载到yum客户端,以便加速访问。
服务器端的配置:服务器端先在计划一个目录用来做我们的yum仓库,把所有的rpm包都放进这个目录后,通过createrepo这个命令来生成元数据文件目录repodata,这样一个yum仓库就创建完成。
客户端配置:主配置文件是/etc/yum.conf,这个文件配置了yum的一些全局参数。怎样来配置一个自定义的yum客户端呢?在/etc/yum.reps.d下自己创建以repo结尾的文件,定义好相应的参数即可!
2、yum常用命令
命令格式:yum [options] [command] [package ...]

yum list {all|installed|available} [package ...]:后边跟上指定的package包名,包名支持文件名通配符
all:显示yum仓库中所有的安装包

installed:只显示系统已安装的包

available:显示yum仓库中搜索到的rpm包,在系统中没有安装且可安装的包,

例:yum list all bind*
显示yum仓库中所以以bind开头相关的包

yum repolist:显示系统可用的yum仓库有哪些
yum repolist [all|enabled|disabled]
all:显示系统中所有yum仓库的id

enabled:显示系统中已启用的仓库id

disabled:显示系统中已禁用的仓库id

yum info PACKAGE:显示指定软件包的信息,没有安装的软件包也可以查询,因为是直接从仓库查询
yum grouplist:显示所有的包组信息
yum groupupdate group1 [group2] [...]:更新一组包
yum groupremove group1 [group2] [...]:卸载一组包
yum groupinstall "Development tools" "Desktop Platform Development" "Server Platform Development":安装三个开发包组,这是rhel6上的
yum groupinstall "Development Tools" "Development Libraries":安装开发包组,这是rhel5上的
yum groupinfo "group_name":显示指定包组的详细信息
yum clean [ packages | headers | metadata | dbcache | all ]:管理本地缓存的命令
packages:清空指定包

headers:清空头部信息

metadata:只清空元数据

dbcache:清空数据库缓存

all:全部清理

yum makecache:手动建立缓存
yum -y install package_name ...:安装软件包,可指定多个。这里的y是yum的一个选项,在安装包时自动回答yes,自动安装
yum -y reinstall package_name ...:重新安装软件包
yum upadte package_name:把软件包更新到仓库中最新的版本

yum update-to package_name.version:把软件包更新到仓库中指定的版本
yum check-update:显示可更新的包

yum remove package_name:卸载安装包,依赖此卸载包的其他安装包也一并被卸载
yum provides|whatprovide feature1 [feature2] [...]:查询文件是由哪个包安装生成的
例如:yum provides /etc/fstab:查询fstab这个档案是由哪个包安装后生成的
yum --nogpgcheck localinstall rpmfile1 [rpmfile2] [...]:安装本地的rpm包,不从yum仓库来安装。在rhel6上直接用install来安装本地rpm包,用此命令的优点在于当安装的rpm包依赖另外的包时会直接去仓库下载安装。"--nogpgcheck"不检查rpm包的合法性,因为用yum安装本地的包时会去检查包的合法性的。
yum localupdate rpmfile1 [rpmfile2] [...]:更新rpm包,但rpm包是本地的包
3、yum服务器端配置
把光盘当作一个yum仓库

[root@zcj cdrom]# mount
/dev/sda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda5 on /home type ext3 (rw)
/dev/sda2 on /var type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/hdc on /media/cdrom type iso9660 (ro)  \\光盘挂载点
[root@zcj cdrom]# pwd
/media/cdrom
[root@zcj cdrom]# ls
CentOS                 RELEASE-NOTES-de          RELEASE-NOTES-fr          RELEASE-NOTES-ro
CentOS_BuildTag        RELEASE-NOTES-de.html     RELEASE-NOTES-fr.html     RELEASE-NOTES-ro.html
EULA                   RELEASE-NOTES-en          RELEASE-NOTES-ja          repodata
GPL                    RELEASE-NOTES-en.html     RELEASE-NOTES-ja.html     RPM-GPG-KEY-beta
images                 RELEASE-NOTES-en_US       RELEASE-NOTES-nl          RPM-GPG-KEY-CentOS-5
isolinux               RELEASE-NOTES-en_US.html  RELEASE-NOTES-nl.html     TRANS.TBL
RELEASE-NOTES-cs       RELEASE-NOTES-es          RELEASE-NOTES-pt_BR
RELEASE-NOTES-cs.html  RELEASE-NOTES-es.html     RELEASE-NOTES-pt_BR.html
光盘目录中有"repodata"这个目录,这个目录就是放元数据的目录,把这个目录所在目录当成一个yum仓库的地址。且这个目录下有RPM-GPG-KEY-CentOS-5签名文件,所以在系统上配置好yum源后就可以把光盘当作一个yum仓库了。
[root@zcj yum.repos.d]# pwd
/etc/yum.repos.d
[root@zcj yum.repos.d]# vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=file:///media/cdrom/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 \\系统中也有这个签名文件


[root@zcj yum.repos.d]# yum clean all
[root@zcj yum.repos.d]# yum makecache
[root@zcj yum.repos.d]# yum repolist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
repo id                                        repo name                                               status
base                                           CentOS-5 - Base                                         3663
repolist: 3663
自己收集的rpm包作为一个yum

以在rhel6.4_x64上安装httpd为例,首先在系统上安装好开发包组,再用“yum install httpd”得知安装httpd时要安装两个依赖的包,去mirror.sohu.com上下载这几个对应的安装包上传到系统的"/repository"这个目录。有了仓库目录,那创建好包的元文件即可,就是生成repodata这个元数据目录就行。创建元数据的命令是createrepo,但这个命令系统上默认没有安装,用yum安装即可。
[root@localhost httpd]# pwd
/repository/httpd
[root@localhost httpd]# ls
apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm  httpd-2.2.15-26.el6.centos.x86_64.rpm  httpd-tools-2.2.15-26.el6.centos.x86_64.rpm
[root@localhost httpd]# createrepo /repository/httpd/
Spawning worker 0 with 3 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost httpd]# ls
apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm  httpd-tools-2.2.15-26.el6.centos.x86_64.rpm
httpd-2.2.15-26.el6.centos.x86_64.rpm     repodata
现在有了yum仓库,再配置好yum客户端工具即可。

[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# vim rhel-source.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/6/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
enabled=0
[basesohu]
name=mirror.sohu.com
baseurl=http://mirror.sohu.com/centos/6/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.sohu.com/centos/RPM-GPG-KEY-CentOS-6
enabled=0
[httpd_test]
name=httpd test
baseurl=file:///repository/httpd/    \\指向自定义目录
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
httpd_test                                 | 2.9 kB     00:00 ...
repo id                       repo name                     status
httpd_test                    httpd test                    3
repolist: 3
[root@localhost yum.repos.d]# yum -y install httpd
如此这样,httpd就通过本地"/repository/httpd"仓库被安装上了。

把mirror.sohu.com作为yum仓库
在把mirror.sohu.com作为系统的yum仓库前先认识两个yum中的变量,第一个是"releasever"这个变量会识别到我们的当前系统是redhat5,还是rehat6,centos的系统也同样能识别,这个变量只取后边的“5”或者“6”这个数字;第二个变量是“basearch”,这个变量会识别系统的平台是“i386”的,还是“x86_64”的平台。注意:i486、i686这些都统称为i386。有了像“mirror.sohu.com”这样公开的yum仓库,那我们安装redhat的系统后就可以把yum仓库指定sohu的站点,这样就可以使用yum工具来安装软件包了。
这里以rhel6.4为例,把rhel6.4的yum仓库配置成centos和sohu的yum仓库:
[root@localhost yum.repos.d]# uname -r
2.6.32-358.el6.x86_64
[root@localhost yum.repos.d]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# vi rhel-source.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/6/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
[basesohu]
name=mirror.sohu.com
baseurl=http://mirror.sohu.com/centos/6/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.sohu.com/centos/RPM-GPG-KEY-CentOS-6
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id            repo name                       status
base               CentOS-6Server - Base           6,381 \\这里的“6Server”显示不正常,经测试rhel6.4不支持"$releasever"变量
basesohu           mirror.sohu.com                 6,381
repolist: 12,762
经测试,对于变量“$releasever”这个变量,在rhel6.4_x86_64上不支持,所以在baseurl中直接把“$releasever”直接用数字"6"来替换了,因为系统是rhel6。配置好后,清除原有的cache,再建立新的cache,把相应的元数据下载到本地cache中。
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
如此,就可以愉快的使用yum工具来管理我软件包了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux yum