我的学习记录--Linux (CentOS) 程序安装包管理,rpm

概述:

    因为一个应用程序是由很多文件所组成,所以安装卸载非常复杂,为了让用户更加方便的管理应用程序。所以引入了程序打包管理。主要包括:安装,卸载,升级,查询,检验。


常见的包管理器:

.deb: Debian研发

.rpm: Red Hat研发(Linux上的包管理器公共标准,故我学习的为rpm)


常见的CPU平台:(所以选择应用程序安装的时候,一定选择和自己CPU所匹配的版本)

x86:i386, i486, i586, i686

x86_64: x86_64, amd64


分包机制:

核心包:主包,主要程序。

子包:为程序增加附加功能的包。


程序包获取途径:(务必在正规渠道获得程序包)

1、系统的发行光盘镜像或官方站点(或镜像服务器)

    推荐站点:

        http://mirrors.sohu.com

        http://mirros.163.com

        http://mirros.aliyun.com

2、程序包的官方站点

3、可信任的第三方组织

4、程序包搜索引擎

    推荐站点:

        http://rpmfind.net

        http://rpm.pbone.net

---------------------------------------------------------

准备实验环境:

    1.准备CentOS6.6虚拟机

    2.挂载CentOS6.6系统光盘DVD1

    技术分享


rpm命令:


安装:(安装新的程序包)

    rpm -i [install-options] PACKAGE_FILE1 ...      

            -h:hash,以#号来表示安装进度

    -v:显示安装过程中的详细信息

-vv:详细

-vvv:更详细

            --test:不执行真正的安装过程,而仅报告依赖关系及冲突信息

     技术分享

    程序包之间是存在依赖关系的:因为程序包是由众多目的单一的小程序组成,结果导致他们之间存在相关性,所以有时候安装某个程序的时候,它会提示你缺少某些包。如下:

    技术分享

            --nodeps:忽略依赖关系(能安装成功,但未必能运行)

            --replacepkgs:覆盖安装(重新安装,并覆盖原有文件)

            --force:强制安装

升级:(升级已经安装的程序包)

    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

        -U:升级或安装(若已安装则升级,若未安装则安装)

    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

        -F:仅升级

        -v,-h,--test,--nodeps,--force 常用选项用法同上

        --oldpackage:降级到旧版本

    注意:

        1.一定不要对内核执行升级!

        2.一般来说升级不会覆盖用户修改过的配置文件,新配置文件名会加后缀(rpmnew)保存


卸载:(移除已经安装的程序包)

    rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...

        rpm -e PACKAGE_NAME... :卸载,简单用法

        --nodeps:忽略依赖关系

        --test:卸载测试

        --allmatches:若一个程序包安装有多个版本,则卸载所有版本

    注意:若程序包配置文件曾被修改,卸载时,配置文件不会删除,会加后缀(rpmsave)保存


查询:(查询某包是否安装,以及检查安装的所有包,查看某包信息)

    rpm {-q|--query} [select-options] [query-options] PACKAGE_NAME ...

        [select-options]:

            1.查询某包或某些包是否安装

                rpm -q PACKAGE_NAME...

                

            2.查询已经安装的所有包

                rpm -qa

            3.查询某文件是由哪个包安装生成(如:inittab这个文件则是由initscripts这个包生成)

                rpm -qf /PATH/TO/SOMEFILE

                技术分享

            4.查询尚未安装的包文件的相关信息

                rpm -p (通常组合以下选项使用)

                    -pqi 未安装包简要信息

                    -pqc 未安装包生成的配置文件

                    -pql 未安装包将生成的文件列表

        [query-options]:

            1.查询某包的简要说明信息

                rpm -qi PACKAGE_NAME

            2.查询某包安装生成的文件列表

                rpm -ql PACKAGE_NAME

            3.查询某包安装完成后生成的配置文件

                rpm -qc PACKAGE_NAME

            4.查询某包安装完成后生成的帮助文件

                rpm -qd PACKAGE_NAME

            5.查看程序历史版本以及改版的信息

                rpm -q --changelog PACKAGE_NAME

            6.查询某包提供的capabilities(功能,能力)

                rpm -q --provides PACKAGE_NAME

            7.查询某包所依赖的capabilities(查询依赖关系)

                rpm -q --requires PACKAGE_NAME

            8.查询某包安装或卸载时执行的脚本

                rpm -q --scripts PACKAGE_NAME


校验:(查询包安装生成的文件是否发生了改变)

        rpm {-V|--verify} [select-options] [verify-options]

        

    常见用法:rpm -V PACKAGE_NAME

        S file Size differs  文件大小改变

        M Mode differs (includes permissions and file type) 权限改变

5 digest (formerly MD5 sum) differs 内容改变

D Device major/minor number mismatch 主次设备号改变

L readLink(2) path mismatch

U User ownership differs属主

G Group ownership differs属组

T mTime differs 修改时间

P caPabilities differ

             技术分享


程序包的合法性验证:

      来源合法:

  由我们信任的制作者提供

  依赖于:制作者的数字签名;签名是作者使用自己的私钥加密程序包的特征码进行的;

      内容合法:

  包未被二次修改;完整性校验成功

  依赖于:制作者提供的程序特征码:

  验证方式:安装者用通用的特征码提取算法提取程序包的特征码,并与原作者提供的相比较;如果一样则说明内容合法;

      验证其光盘中程序包的来源及完整性:

    导入公钥:rpm -import /path/to/RPM-GPG-KEY-FILE

            验证:rpm {-K|--checksig} PACKAGE FILE

            技术分享

            --nosignnature:不检查来源合法性

    --nodigest:不检查完整性

rpm管理器数据库:/var/lib/rpm(每安装一个程序,安装信息都会存放在此目录下)

      重建数据库:

            --initdb:初始化数据库,即数据库完全不存在,可新建之;

    --rebuilddb:无论当前数据存在否,都会直接重建此库;


本文出自 “Linux” 博客,请务必保留此出处http://laoliao.blog.51cto.com/10027070/1631415

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。