RedHat系列软件包管理(上)

--二进制软件包管理

Linux的学习思想:Linux相对与Windows来非常透明,因此,无论是系统,还是软件。。。都会有本身自带,或者是Man给提供的非常详细的说明,帮助文档,我们要利用好这些文档,只要英文足够好,不需要任何教科书,任何教学视频,你都可以学好Linux!

 

一、RPM包管理

       Linux软件包命名形式

       sudo-1.7.2p1-5.el5.i386.rpm

       其中包括软件名(sudo),版本号(1.7.2pl),发行号(5.el5),和硬件平台(i386)

 

    (1)卸载软件包

       rpm -e name       // 如果其它软件包有依赖关系,卸载时会 产生提示信息

       rpm -e –nodeps name  // 添加—nodeps,可强行卸载;但是不建议这样卸载

   

    (2)安装软件包:sudo

rpm -ivh 软件包【如:sudo-1.7.2p1-5.el5.i386.rpm】

v:  表示显示详细信息,可选

h:表示显示安装进度,可选

      

       1、 挂载光盘:【最佳实践:将光盘,U盘等挂载到/mnt目录下】

           mkdir /mnt/cdrom

           mount /dev/cdrom /mnt/cdrom

           【现在打开/mnt/cdrom就相当与访问光盘内容】

           【光盘中所有的二进制软件全部保存在CentOS目录下。】

      

       2、 查询是否存在:ls | grep sudo

 

       3、 安装: rpm -ivh  sudo-1.7.2p1-5.el5.i386.rpm

 

       4、 查看是否已安装:rpm -q sudo

 

       5、 rpm -qa | grep samba // 查询所有与samba有关的软件包

           【-qa表示查询安装了的所有的软件包】

    其他安装选项

       --excludedocs 不按装软件的文档

       --prefix=PATH     将软件包安装到由PATH指定的路径下

       如:rpm -ivh –prefix=/usr/local sudo-1.7.2p1-5.el5.i386.rpm

       【但是:大部分的rpm包都不允许改变安装路径】

       --test        只是进行测试,而不进行真正安装

       【比如获取依赖关系,该软件包是否已经安装】

 

    特殊情况:

       A.覆盖安装   

       --replacepkgs 覆盖软件安装包

      

       B.安装冲突

       如果要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:

        rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm

       conflicts with file from bark-3.2-1l

       sudo-1.7.2p1-5.el5.i386.rpm cannot be installed

       使用—replacefiles忽略改出错信息,覆盖安装

 

       C.未解决依赖关系

       该软件包可能依赖于其它软件包,在安装了特定的软件包之后才能安装该软件包。

       rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm

       failed dependencies:

       sudo is needed by bark-3.2-1l

       使用--nodeps 选项,可以强制安装此软件包,十有八九运行不了。

 

    (3)升级

       rpm -Uvh sudo-1.8.0p1-5.el5.i386.rpm

 

    (4)查询【重要】

       -a 查询所有已安装的软件包.

       -f 查询文件所属软件包

       -p 查询软件包

       -q 查询软件包是否安装

       -i 显示软件包信息

       -l 显示软件包中的文件列表

       -d 显示被标注为文档的文件列表

       -c 显示被标注为配置文件的文件列表

    实例:

       1、查询文件/命令隶属的软件包

           rpm -qf /etc/services

           rpm -qf /bin/ls

       2、查询软件包信息

           rpm -qi samba //查询一个已经安装的软件包

           rpm -qip samba..  //可以查询还没有安装的rpm包,不过要写全称!

       3、查询安装包的安装文件,及安装文件所在位置

           rpm -ql sudo

           rpm -qlp sudo...  //没有安装,全称!

       4、查询软件包帮助文档及所在位置

           rpm -qd sudo

           rpm -qdp sudo //没有安装,全称!

       5、查询软件包配置文件及所在位置

           rpm -qc

           rpm -qcp      //同上

    RPM综合运用实例

 

       一、vncserver是干什么用的???

           rpm -qf vncserver

       然后   rpm -qi vnc-server...得知仔细信息

       二、查询vim的标准注释

       查询系统中是否已经安装某个安装包用:rpm -qa | grep vim

       而不是直接用:              rpm -a vim

       查询示例文档:rpm -qa vim | grep example

 

    (5)校验  可用于帮助我们判断软件包是否出现问题,以及出现的问题在哪里

    【rpm在安装一个软件到系统中时,会自动生成一个rpm库,校验时,会和这个库比对】

       rpm -V name       正常情况下不会有任何提示,他的任何文件都没与更改

 

【md5sum:通过md5算法对文件生成唯一的校验值,只要文件的内容不变,则校验值就不会变】

【对该文件内容做任何一个微小的改变,他的校验值都会改变】

      

        5 文件的md5校验值

        S 文件大小

        L 链接文件

        T 文件的创建或最后修改时间

        D 设备文件

        U 文件的用户

        G 文件的用户组

        M 文件的权限

 

    (6)重要文件修复

    比如/etc/inittab文件被删除,可以将该文件从原始的安装光盘中提取出来

       首先: 定位该文件隶属于哪个软件包

           rpm -qf /etc/inittab

       然后: 解压所有文件到当前目录【不推荐】

       # rpm2cpio initscripts-8.45.30-2.el5.centos.i386.rpm | cpio -idv

           解压指定文件到当前目录【推荐】

       # rpm2cpio /mnt/cdrom/initscripts-8.45.30-2.el5.centos.i386.rpm |     cpio -idv ./etc/inittab

        【注意:./etc/inittab    只允许提取到当前目录下】

【在Linux Server系统的管理上,我们更倾向与稳定,而不是最新版】

 

二、YUM软件包管理【简单、智能】

    应用YUM的好处

    (1)自动解决软件安装包依赖关系

    (2)方便软件包的升级

    (3)可信任,官方软件包

 

       1、安装

           yum install sudo

       2、检测升级

           yum check-update sudo

           yum check-update  // 检测所有的软件包的升级

       3、升级【比较重要,常用的软件包要经常升级一下】

           yum update sudo

       4、查询软件包信息

           yum list   //会列出软件源上的所有软件包

       【最佳实践:yum list | less     yum list | grep samba】

       5、查询软件包信息

           yum info sudo

       6、卸载软件包

           yum remove sudo

       7、查看帮助信息

           yum -help  或者   man yum

       【最佳实践:yum -help | less】