做为系统管理员可能会面对的任务:

    1.自动批量安装操作系统

    2.完成系统的本地化 (配置现成的发行版或者软件包,以求符合自己的需要,本地安全规定、文       件存放和网络拓扑的需要,这个过程称为“本地化”)

    3.给系统打补丁且保持系统的更新   

    4.管理附加的软件包   


程序管理器的功能: 

    将编译好的应用程序的各组成文件打包成一个或多个包文件,从而更方便的实现程序包的安装,升级,查询和卸载等管理操作.

    1.程序包的组成清单

        文件清单

        安装或卸载时运行的脚本

    2.公共的数据库  /var/lib/rpm  

        程序包的名称和版本; 依赖关系 ;功能说明;安装生成的各文件的文件路径及校验码信息;等等 

我们要考虑的问题: 1 .普通用户在安装软件时有那些方面的限制?

                  

    RPM 全称是Red Hat Package Manager 由红帽公司开发的.RPM类型所含有的套件是经过编译后的二进制文件,所以可以直接安装在客户端系统上,RedHat,Fedora、SUSE等使用的RPM。另一款.deb是是Debian 和Ubuntu使用的程序管理系统         

   RPM和.deb这两种打包系统现在都是两层的全能配置管理工具.下面一层是安装、卸载和查询软件包的工具:rpm 和 dpkg .在这些命令之上是知道如何在internet上找软件包、分析软件包间依赖关系、以及升级系统上所有软件包的系统,这个层次上有配合RPM系统运行的yum,还有源自.deb的APT. APT目前也可以支持RPM系统。

         

我们来了解下下面一层rpm 的用法:

在本地直接安装程序包:  

 rpm -ivh packagename.rpm 

        -i : 安装程序包 install的意思

        -v : 显示更详细的安装过程

        -vv: 更详细的输出

        -h : 安装进度


当安装多个程序包的时候,程序包名用空格隔开即可

    rpm -ivh packagename1.rpm packagename2.rpm packagename3.rpm


使用网络安装程序包时,把网络路径补全

    rpm -ivh http: //website.name/path/packagename.rpm


我们可以在安装之前先测试一下是否程序包是否可以安装到系统上

    rpm -ivh packagename.rpm --test   只测试当安装

                             --replacepkgs  重新安装某个已经安装过的套件

                             --nomd5  不检测RPM文件的MD5信息.   

升级安装过的程序包有两种方法:

    -Uvh  U 指update先检测系统有没有安装程序包,如果没有,就新安装程序;如果有,就安装高版本程序包。

    -Fvh  先检测系统有没有安装程序包,如果没有,就不更新程序包;如果有,就更新程序包。

          当我们重新安装一个linux系统时,可以使用-Fvh 参数来对系统上已经安装的程序更新至最           新的版本。

    注意:不要对Linux内核进行升级操作,会出现很多未知的问题,linux支持多个内核共存,只需要安装新内核就可以了.


RPM的查询操作

    查询操作参数都带 -q  例

    rpm  -q packagename.rpm : 查询后面套件名称是否安装

         -qa : 列出所有已安装的套件名称

         -qi : 列出该套件的详细信息

         -ql : 列出该套件的所有文件和目录

         -qc : 列出该套件的所有配置文件

         -qd : 列出套件的帮助文件

         -qR : 列出与套件有关的依赖套件所有文件 

         -qf : 由后面接的文件名称,找出该文件属于哪一个已安装的套件。

                查询某个RPM文件内含有的信息     

        -qp[icdlR] :p后面接的所有参数以上面说明为准,但用途仅在于找出某个RPM文件内的                         信息,而非已安装的套件信息,这一点请注意

  例如: #rpm -qa | grep ^c     显示已经安装过的套件中,以c打头的套件.


        #rpm -qi bash  查看bash程序包的相关说明

        # rpm -qf yum.conf   查看yum.conf属于那个程序套件

              yum-3.2.29-69.el6.centos.noarch        

        #rpm -qpR yum-3.2.29-69.el6.centos.noarch 安装前查看yum套件的需求文件.

        #rpm -ivh yum-3.2.29-69.el6.centos.noarch --replacepkgs 当套件有损坏时,可以重               新安装一次套件

        #rpm -qf yum.iconf   当误删掉一个文件时,它的名字依然在/var/lib/rpm 的数据库中               存在,如果不知道它属于哪个套件,依然可以用这个指令


卸载和重装数据库

    #rpm -e rouout      卸载rouout软件套件. = --erase 

    #rpm --rebuilddb 重建数据库   


 linux的各个发行版本都维护着自己的软件库,这些软件库和发行版选择的软件管理系统携手工作。软件包管理系统的默认配置能指向一个或者几个由发行商控制的知名Web或FTP服务器。

    yum的介绍:yellowdog Updater Modified是基于RPM的元软件管理器。  

    yum是rpm的前端管理工具,而因为yum自身的问题,dnf会是yum的升级版。yum是一个c/s架构的软件,分为服务端和客户端。 yum repo 仓库里存放里众多的rpm包,以及包的元数据数据,放置在特定目录repodata。 

  yum客户端的配置文件有/etc/yum.conf ,它为yum的主配置文件,为yum仓库提供了公共配置或yum配置。

另一个是被yum.conf文件里指向的/etc/yum.repos.d/*.repo为yum仓库指向提供配置,里面每一个以.repo 线束的文件都可配置一个仓库指向(如果不是以.repo结尾将不视做仓库文件),一个yum是可以指向多个仓库的,可以对多个仓库配置开销值,让yum优先选择开销小的仓库同类同版本的rpm包。

  

仓库文件的格式:  

  Example: [repositoryid]

              name=Some name for this repository

              baseurl=url://path/to/repository/


yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。

概括了部分常用的命令包括:

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