1、软件包分类:

源码包

            包括【脚本安装包】

    ——二进制包

            包括【RPM包、系统默认包】

    特点:

    源码包:用c语言或者时c++语言写的内核但是安装的时候会报错的可能性大,所以用二进制包【经过编译之后的.rpm格 式  ==Windows的.exe】可以更快安装,目录在cent os的Packages文件下,脚本安装包时install.sh使用界面安装,源码包必须手动安装。

    源码包优点

        1、开源,如果有足够的能力,可以修改源代码

        2、可以自由的选取系统所需要的功能

        3、软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高

        4、卸载方便,不产生垃圾文件

    源码包缺点

        1、安装过程中步骤较多,尤其安装较大的软件集合时,容易出现拼写错误

        2、编译过程时间较长,安装比二进制安装时间长

        3、因为是编译安装,安装过程中一旦报错新手很难解决问题

    二进制包优点

        1、RPM包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

        2、安装速度比源码包安装快得多

    二进制包缺点:

        1、经过编译,不再可以看到源码

        2、功能依赖不如源码包灵活

        3、容易产生依赖性

2、RPM包命名原则

    httpd-2.2.15-15.e16.centos.1.i686.rpm

        httpd——软件包名

        2.2.15——软件版本

        15——软件发布的次数

        e16.centos——适合的Linux平台

        i686——适合的硬件平台

        rpm——rpm包扩展名

    注释:

在Linux系统中,只有rpm有扩展名,给管理员看的,更加清晰该文件时安装包。

Noarch代表可以在任何硬件平台上安装。

区分包名和包全名【因为有的命令只能跟包名,有的命令只能跟包全名】

3、RPM包依赖性

树形依赖:a——>b——>c

环形依赖:a——>b——>c——>a

模块依赖:模块依赖查询网站:www.rpmfind.net

注释

树形依赖:装软件包a会跟自己要b,装b会跟自己要c,这个时候就只能先装c,再装b,再装a;

卸载的时候就要先卸载a,再卸载b,再卸载c。

环形依赖:将软件包abc用同一条命令同时装就可以

Linux软件包管理-RPM命令管理_安装包

4、rpm命令管理-安装升级和卸载

包全名:操作的时没有安装的软件包时,使用包全名。而且要注意路径,用于软件包安装。

包名:操作已经安装的软件包时,使用包名。时搜索/var/lib/rpm/中的数据库,用于软件包升级和卸载。

rpm -ivh 包全名

    选项:

     -i(install)安装

    -v (verbose)显示详细信息

    -h (hash)显示进度

    --nodeps    不检测依赖性

示例:安装 mysql-connector-odbc-5.1.br1144-7.e16.i686.rpm包,出现的error是包的依赖性,

So.2表示的是库依赖的包 不是单独存在的,在一个rpm包里边的子文件,那么需要把这个rpm包先进行安装,这个rpm包的查找方法是在 ​​www.rpmfind.net​​中搜索这个包名,此为模块依赖。

Linux软件包管理-RPM命令管理_包名_02

5、rpm命令管理-RPM包升级

rpm -Uvh 包全名

选项:

    -U (upgrade) 升级

6、rpm命令管理-RPM包卸载

rpm -e 包名

选项:

    -e (erase)卸载

    --nodeps     不检查依赖性

7、rpm命令管理-查询

    1、查询是否安装

    【root@localhost~】#rpm -q 包名

    #查询包是否安装

    选项:

        -q (query)查询

    【root@localhost~】#rpm -qa

    选项:

        -a (all)所有

Linux软件包管理-RPM命令管理_包名_03

    2、查询软件包详细信息

    【root@localhost~】#rpm -qi 包名

    选项:

        -i     查询软件信息(information)

        -p    查询未安装包信息(package)

    3、查询包中文件安装位置

    【root@localhost~】#rpm -ql 包名

    选项:

        -l     列表(list)

        -p    查询未安装包信息(package)

    4、查询系统文件属于那个RPM包

    【root@localhost~】#rpm -qf 系统文件名

    选项:

    -f    查询系统文件属于那个软件包(file)

    示例:

Linux软件包管理-RPM命令管理_rpm包_04

    5、查询包的依赖性

    【root@localhost~】#rpm -qR 包名

    选项:

        -R     查询软件包的依赖性(requires)

        -p    查询未安装包信息(package)

示例:

Linux软件包管理-RPM命令管理_rpm包_05

8、rpm命令管理-校验和文件提取

    1、rpm包校验

    【root@localhost~】#rpm -V 已安装包名

    选项:

        -V 校验指定RPM包中的文件(verify)

        ------------以校验的方式查看系统中的文件是否被人修改

Linux软件包管理-RPM命令管理_包名_06

验证内容中的8个信息的具体内容如下:

    S —— 文件的大小是否被改变

    M —— 文件的类型或文件的权限(rwx)是否被改变

    5 —— 文件的MD5加密校验和是否改变(可以看成文件内容是否改变)

    D —— 设备的中,从代码是否改变

     L —— 文件路径是否改变

    U —— 文件的属主(所有者)是否改变

    G —— 文件的属组是否改变

    T —— 文件的修改时间是否改变

文件类型

    c —— 配置文件(config file)

    d —— 普通文档(documentation)

    g ——"鬼"文件(ghost file)很少见,就是该文件不应该被这个RPM包所包含

    l —— 授权文件(license file)

    r —— 描述文件 (read me)

2、RPM包中文件提取

    【root@localhost~】# rpm2cpio 包全名 |\

        cpio -idv .文件绝对路径

        rpm2cpio

        #将rpm包转换为cpio格式的指令

        cpio

        #是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

注释:误删操作后从rpm包中提取进行安装覆盖

    【root@localhost~】#cpio 选项 <【文件|设备】

      选项:

        -i:copy-in 模式,还原

        -d: 还原时自动新建目录

        -v:显示还原过程

    【root@localhost~】#rpm -qf /bin/ls

      #查询ls命令属于哪一个软件包

    【root@localhost~】#mv /bin/ls/tmp/

      #造成ls命令误删假象

    【root@localhost~】#rpm2cpio /mnt/cdrom/Packages/croertils-8.4-19.e16.i686.rpm | cpio -idv ./bin/ls

     #提取RPM包中ls命令到当前目录的/bin/ls下

    【root@localhost~】#cp/root/bin/ls /bin/

      #把ls命令复制到/bin/目录下,修复文件丢失

    

Linux软件包管理-RPM命令管理_rpm包_07