简介


       在企业信息化应用环境中,安全性不仅取决于硬件防护设备、系统加固、漏洞扫与评估、服务器几种监控、访问控制等基础设施,如何减少鼓掌中断时间、提高存储及备份的完善性也是确保企业信息安全的重要措施。


 

      通过源代码编译的方式来安装程序在灵活性、可定制性方面具有无可比拟的优势,但也正因为这种例外特性给管理员带来了额外的维护开销,当需要在大规模的服务器群应用时存在一定的局限性。

      在RHEL6系统中构建并使用软件仓库,实现基于网络的软件包安装、更新、卸载的规范化管理。

一、部署YUM软件仓库


       YUM的前身是YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由TSS公司(Terra Soft Solutions,INC.)使用Python语言开发而成,后来由杜克大学的Linux开发队伍进行改进,命名为YUM(Yellow dog Updater,Modified)。

         要成功使用YUM机制来更新系统和软件,需要有一个包含各种rpm安装包文件的软件仓库(Repository),提供软件仓库的服务器也称为“源”服务器,在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件了。


 

1、准备安装源(服务器端)




       YUM软件仓库通过借助于HTTP或者FTP协议来进行发布,这样 可以面向网络中所有客户机提供软件源服务。为了便于客户机查询软件包、获取依赖关系等信息,在软件仓库中需要提供仓库数据(Repodata),其中收集了目录下所有RPM包的头部信息。


 

①安装并启用vsftpd服务


[root@localhost ~]# rpm -ivh /media/Packages/vsftpd-2.2.2-6.el6_0.1.i686.rpm

 
    
   
[root@localhost ~]# chkconfig vsftpd on

 
    
   
[root@localhost ~]# service vsftpd start

 
    
  


 
   
  
②准备软件仓库目录

 
   
  


 
   
  
[root@localhost ~]# mkdir /var/ftp/rhel6

 
    
   
[root@localhost ~]# cp -rfp /media/* /var/ftp/rhel6/

 
    
   
[root@localhost ~]# cd /var/ftp/rhel6/Packages/

 
    
   
[root@localhost Packages]# createrepo -g /media/repodata/repomd.xml ./

                                                                                    // 以现有的repodata目录为样板


 

2、配置软件仓库位置(客户机端)




       在客户机上需要指定至少一个可用的软件仓库,然后才能使用yum工具来下载、安装软件包。yum工具使用的软件仓库信息存放在/etc/yum.repos.d/目录下扩展名为.repo的文件中。


 

[root@localhost ~]# vi /etc/yum.repos.d/rhel6.repo
[Packages]                                                                            //仓库类别
name=Red Hat Enterprise Linux                                          //仓库名称
baseurl=ftp://192.168.1.180/rhel6/Packages                         //URL访问路径
enabled=1                                                                             //启用此软件仓库
gpgcheck=0                                                                          //不验证软件包的签名

        

     上述操作中,文件rhel6.repo需要手动创建,/etc/yum.repos.d/目录下若有其他末用的*.repo文件建议将其删除,配置"enabled=1"为默认项,可以省略;"gpgcheck"和"gpgkey"两行配置用来检查软件包是否为Red Hat发布,若无此要求则可以省略。

        

     作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库,例如,将RHEL6光盘挂在到/media目录以后,可以参考一下操作来进行配置。当然,这种方式仅限于在本机使用。

[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[local]
name=Red Enterprise Linux
baseurl=file:///media/Server
enabled=1
gpgcheck=0


 

二、使用yum工具管理软件包


1、查询软件包


       yum工具的常见查询操作包括获取软件包安装,查询软件包的描述信息,搜索指定的软件包,分别可结合子命令list、info、search来实现。


 

yum list ————查询软件包列表     


         直接执行“yum list”命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用的软件包列表。其中子命令list表示列表查看。

[root@localhost ~]# yum list

若执行“yum list installed”则表示只列出系统中已安装的软件包,执行“yum list available” 则表示只列出软件仓库中可用(尚未安装)的软件包,执行“yum list updates”则表示只列出可以升级版本的软件包。


 

yum info ————查询软件包的描述信息


       当前要查看某个软件包的描述信息时,可以执行“yum info软件包名”,其中子命令info表示获取信息。例如,以下操作可以查看软件包httpd的信息

[root@localhost /]# yum info httpd
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
Installed Packages
Name        : httpd
Arch        : i686
Version     : 2.2.15
Release     : 9.el6
Size        : 2.8 M
Repo        : installed
From repo   : local
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.


 

yum search————查新指定的软件包


       当需要根据某个关键词来查找相关的软件包时,可以执行“yum search关键词”,默认仅根据软件包名称和描述信息进行搜索;若执行“yum search all关键词”,可以扩大搜索范围。例如,以下操作将搜索软件仓库并列出与”httpd“相关的软件包。

[root@localhost /]# yum search all httpd
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
============================================================================ Matched: httpd ============================================================================
httpd-devel.i686 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.i686 : Tools for use with the Apache HTTP Server
httpd.i686 : Apache HTTP Server
mod_dav_svn.i686 : Apache httpd module for Subversion server
mod_dnssd.i686 : An Apache HTTPD module which adds Zeroconf support
mod_ssl.i686 : SSL/TLS module for the Apache HTTP Server


 

2、安装、升级、卸载软件包


       使用yum工具安装、升级软件包、分别通过子命令install、update来完成、操作对象为指定的软件包名(可以有多个),执行操作时会自动检查并解决软件包之间的依赖关系,期间会提示用户按y键确认安装或升级操作,若希望自动确认为y,可以在yum命令后添加“-y”选项,例如,一下操作将从软件仓库下载并安装autofs软件包,并自动解决其依赖关系(安装必须的hesiod等软件包)。

[root@localhost ~]# yum -y install autofs
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package autofs.i686 1:5.0.5-31.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================
 Package                        Arch                                Version                                        Repository                               Size
=================================================================================
Installing:
 autofs                             i686                                1:5.0.5-31.el6                                 Packages                                464 k
Transaction Summary
=================================================================================
Install       1 Package(s)
Total download size: 464 k
Installed size: 2.9 M
Downloading Packages:
autofs-5.0.5-31.el6.i686.rpm                                                                                                                     | 464 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing 1:autofs-5.0.5-31.el6.i686                                                                                                                           1/1 
duration: 246(ms)
Installed products updated.
Installed:
  autofs.i686 1:5.0.5-31.el6                                                                                                                                            
Complete!


 

使用yum工具卸载软件包时,通过子命令remove来完成,卸载操作通过软件仓库也可以完成。例如,以下操作将卸载libX11软件包,并自动解决其依赖关系(卸载依存的cairo、fprintd等软件包)。

[root@localhost ~]# yum -y remove libX11


 

三、经验总结


      通过查询操作“yum grouplist”,“yum groupinfo分组名称”可以获得YUM仓库中的软件分组信息。例如,执行“yum groupinfo Desktop”命令后将列出软件分组Desktop所包括的软件包等信息。


 

       使用yum工具管理软件包时,结合子命令groupinstall、groupdate、groupremove、可以针对软件分组进行安装、升级、卸载操作。例如,执行“yum -y groupremove Destop”命令,则会删除整个Desktop分组所包含的软件包。