linux中yum provide,linux之yum

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

p_w_picpaths 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工具来管理我软件包了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值