构建本地Yum源服务器
YUM概述
YUM是YUP工具的改进版,YUM主要用于自动升级,安装/移除RPM软件包,它能够自动查找并解决RPM包之间的依赖关系,而无需管理员逐个,手工的去安装每一个RPM包,使管理员知啊维护大量的Linux主机时更加轻松自如。
要成功使用YUM工具更新系统和软件,需要有一个包含各种RPM软件包的repository(软件仓库),提供软件仓库的服务器习惯称为“源”服务器。软件仓库可以基于HTTP,FTP协议或者本地文件目录提供服务,并收集目录中所有的RPM包的header(头部)信息组成repodata(仓库数据),以供YUM客户端工具查询分析。
构建本地YUM源服务器
通过从DVD光盘,YUM客户端缓存目录(/var/cache/yum/)以及Internet下载等途径获取需要的RPM包,可以组建基于本地文件系统的RPM软件包仓库。
主要步骤推荐:
本例中使用CentOS6.2安装光盘中的软件包组成软件仓库,并结合VSFTPD服务,提供基于FTP方式的简易YUM源。
一.安装vsftpd,createrepo软件包
(createrepo)工具主要用于收集目录中RPM包文件的头信息,以创建repodata软件仓库数据(经gzip压缩的xml文件)。
挂载CentOS6.2光盘到/mnt目录中
[root@11gR2-t2 ~]# mount /dev/cdrom /mnt/ |
切换到光盘中的“Packages/”目录中
[root@11gR2-t2 ~]# cd /mnt/Packages/
安装vsftpd和createrepo软件包
[root@11gR2-t2 Packages]# rpm -ivh vsftpd-2.2.2-6.el6_0.1.x86_64.rpm [root@11gR2-t2 Packages]# rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm [root@11gR2-t2 Packages]# rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm [root@11gR2-t2 Packages]# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm |
安装后进行查看验证
[root@11gR2-t2 Packages]# rpm -q vsftpd createrepo vsftpd-2.2.2-6.el6_0.1.x86_64 createrepo-0.9.8-4.el6.noarch |
二.准备软件库目录
新建目录
[root@11gR2-t2 Packages]# mkdir -p/var/ftp/pub/CentOS-6.2
将光盘中的内容拷贝到新建的rhel5目录中
[root@11gR2-t2 Packages]# cp -prf /mnt/*/var/ftp/pub/CentOS-6.2
切换到rhel5目录中进行查看主要的目录结构
[root@11gR2-t2 CentOS-6.2]# ll | grep ^d drwxr-xr-x. 3 root root 4096 Dec 11 07:38 EFI drwxr-xr-x. 3 root root 4096 Dec 11 07:38 images drwxr-xr-x. 2 root root 4096 Dec 11 07:36 isolinux drwx------. 2 root root 110592 Mar 22 18:20 Packages |
三.创建repository仓库信息文件
在各个软件包目录中分别执行createrepo命令,生成当前目录下的repodata数据。使用“-g”选项可以指定用于创建组信息的xml文件模板。
[root@11gR2-t2 repodata]# cd /mnt/repodata/ [root@11gR2-t2 repodata]# ll *comps.xml -rw-r--r--. 1 root root 1101220 Dec 16 10:46 3a27232698a261aa4022fd270797a3006aa8b8a346cbd6a31fae1466c724d098-c6-x86_64-comps.xml [root@11gR2-t2 repodata]# createrepo -g /mnt/repodata/3a27232698a261aa4022fd270797a3006aa8b8a346cbd6a31fae1466c724d098-c6-x86_64-comps.xml /var/ftp/pub/CentOS-6.2/ |
清除旧的数据文件
yum-arch -l/var/ftp/pub/CentOS-6.2/
四.配置启动vsftpd服务。
[root@11gR2-t2~]# service vsftpd restart
Shutting downvsftpd: [FAILED]
Startingvsftpd for vsftpd: [ OK ]
注意:关闭防火墙和selinux
五.设置YUM源位置。
[root@11gR2-t2~]# cd /etc/yum.repos.d/
新建配置文件,名称自定义
[root@11gR2-t2yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak
[root@11gR2-t2yum.repos.d]# vim CentOS-Base.repo
编写以下代码:
enabled=1 表示启用该目录
gpgcheck=0 表示不检查gpg key
baseurl=ftp:// 路径视本机情况而定
# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # #
[base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os baseurl=ftp://172.16.30.135/pub/CentOS-6.2 gpgcheck=0 gpgkey=ftp://172.16.30.135/pub/CentOS-6.2/Packages
#released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates baseurl=ftp://172.16.30.135/pub/CentOS-6.2 gpgcheck=0 gpgkey=ftp://172.16.30.135/pub/CentOS-6.2/Packages
#additional packages that may be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras baseurl=ftp://172.16.30.135/pub/CentOS-6.2 gpgcheck=0 gpgkey=ftp://172.16.30.135/pub/CentOS-6.2/Packages
#additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus baseurl=ftp://172.16.30.135/pub/CentOS-6.2 gpgcheck=0 enabled=0 gpgkey=ftp://172.16.30.135/pub/CentOS-6.2/Packages
#contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib baseurl=ftp://172.16.30.135/pub/CentOS-6.2 gpgcheck=0 enabled=0 gpgkey=ftp://172.16.30.135/pub/CentOS-6.2/Packages |
注意:因为是centos系统,不能通过认证,要修改如下配置
[root@11gR2-t2oinstall]# vim /etc/yum.conf
gpgcheck=0
六.使用yum命令
1.列出所有可更新的软件清单
命令:yum check-update
2.安装所有更新软件
命令:yum update
3.仅安装指定的软件
命令:yum install <package_name>
4.仅更新指定的软件
命令:yum update <package_name>
5.列出所有可安裝的软件清单
命令:yum list
用YUM安装删除软件
装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。
安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。
1.用YUM安装软件包
命令:yum install <package_name>
2.用YUM删除软件包
命令:yum remove <package_name>
用YUM查询软件信息
我 们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于 是我们可能得到gaim,kopete等等,并从中选择。
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。
1.使用YUM查找软件包
命令:yum search <keyword>
2.列出所有可安装的软件包
命令:yum list
3.列出所有可更新的软件包
命令:yum list updates
4.列出所有已安装的软件包
命令:yum list installed
5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras
6.列出所指定的软件包
命令:yum list <package_name>
7.使用YUM获取软件包信息
命令:yum info <package_name>
8.列出所有软件包的信息
命令:yum info
9.列出所有可更新的软件包信息
命令:yum info updates
10.列出所有已安裝的软件包信息
命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras
12.列出软件包提供哪些文件
命令:yum provides <package_name>
清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一 股脑儿端
1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages
2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers
3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders
4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yumclean oldheaders)