Linux软件包管理—RPM

程序组成部分

  1.     二进制程序  /bin,/sbin
  2.     库          /lib,/usr/lib
  3.     配置文件    /etc
  4.     帮助文件    /usr/share/man

软件包管理器的核心功能

  1. 制作软件包;
  2. 安装、卸载、升级、查询、校验;

不同Linux/Unix系统的安装包管理工具

后端工具:RPM, dpt

Redhat, SUSE: RPM
    Redhat Package Manager
    PRM is Package Manager
    SUSE RPM与RedHat RPM软件包的组织形式有差别,所以同一个RPM不能混用

Debian: dpt
    debian package tool

前端工具:yum, apt-get


yum: Yellowdog Update Modifier

RPM命令

rpm相关命令功能

    rpm:管理软件包

        安装、查询、卸载、升级、校验、数据库的重建、验证数据包等工作;
        并提供追踪文件以便卸载;
        查询(软件包--并提供追踪文件以便卸载,查询(软件包-->安装文件;安装文件-->生成文件等);
        数据库:/var/lib/rpm(哈希树),数据库需要保存完整性,一旦数据库损坏,rpm将无法正常管理对应软件

    rpmbuild:制作软件包

rpm包命名

包组成部分

    主包:
        bind-9.7.1-1.el5.i586.rpm
    子包:
        bind-libs-9.7.1-1.el5.i586.rpm
        bind-utils-9.7.1-1.el5.i586.rpm

包名格式

    name-version-release.arch.rpm
   bind-major.minor.releaseID-release.arch.rpm

  •     主版本号major:重大改进
  •     次版本号minor:某个子功能发生重大变化
  •     发行号releaseID:修正了部分bug,调整了一点功能

rpm命令

1、安装

rpm -i /PATH/TO/PACKAGE_FILE
    -h: 以#显示进度;每个#表示2%;
    -v: 显示详细过程
    -vv: 更详细的过程
    
rpm -ivh /PATH/TO/PACKAGE_FILE
    --nodeps: 忽略依赖关系;
    --replacepkgs: 重新安装,替换原有安装;
    --replacefile:重新安装,替换原有文件;
    --oldpackage:降级安装,用旧版本替换新版本;
    --force: 强行安装,可以实现重装或降级;
    --test:测试安装依赖关系,并不实现真正安装;

2、查询

已安装软件包:
     rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
     rpm -qa : 查询已经安装的所有包
     rpm -qi PACKAGE_NAME: 查询指定包的说明信息;
     rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;
     rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;
     rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;
     rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;
     rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
    四类脚本:
    安装前(preinstall),安装后(postinstall),卸载前(preuninstall),卸载后(postuninstall)   
尚未安装软件包:
    rpm -qpi PACKAGE_NAME: 查询指定包的说明信息;
    rpm -qpl PACKAGE_NAME: 查询指定包安装后生成的文件列表;
    rpm -qpc PACEAGE_NEME:查询指定包安装的配置文件;
    rpm -qpd PACKAGE_NAME: 查询指定包安装的帮助文件;

3、升级

     rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
     rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;
             --oldpackage: 降级

4、卸载

      rpm -e PACKAGE_NAME
          --nodeps   

5、校验

    rpm -V PACKAGE_NAME  校验指定的已安装软件
    rpm -Va 校验系统上所有已安装软件
    rpm -Vp PACKAGE_NAME 校验未安装的软件
    rpm -Vf FILE_NAME 校验该文件
    
    检验结果含义:
    第一段-单个字符:
    S :(file Size differs) 文件的容量大小是否被改变
    M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可运行等参数已被改变
    5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
    D :(Device major/minor number mis-match) 装置的主/次代码已经改变
    L :(readLink(2) path mis-match) Link 路径已被改变
    U :(User ownership differs) 文件的所属人已被改变
    G :(Group ownership differs) 文件的所属群组已被改变
    T :(mTime differs) 文件的创建时间已被改变
    
    第二段-文件类型:
    c :配置文档 (config file)
    d :文件数据/帮助文档 (documentation)
    g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
    l :授权文件 (license file)
    r :readme文件 (read me)      

6、重建数据库

    rpm
        --rebuilddb: 无条件重建数据库;
        --initdb:在没有安装包数据库的前提下,初始化数据库;

7、检验来源合法性,及软件包完整性

     加密类型
         对称:加密解密使用同一个密钥
         公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
     当你要安装一个 RPM 文件时
         1.首先你必须要先安装原厂释出的公钥文件;
         2.实际安装原厂的 RPM 软件时, rpm 命令会去读取 RPM 文件的签名,与本机系统内的签名比对,
      若签名相同则予以安装,若找不到相关的签名时,则给予警告并且停止安装喔。     
  • 查找GPG 金钥文件放置的位置
        locate GPG-KEY
        find /etc -name '*GPG-KEY*'
  • 导入公钥文件:
        rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
        rpm -K /PAPT/TO/PACKAGE_FILE
        rsa, gpg: 验正来源合法性,也即验证签名;可以使用--nosignature,略过此项
        sha1, md5: 验正软件包完整性;可以使用--nodigest,略过此项 
  • 查找安装完成以后的公钥文件(文件名一般包含pubkey)
        rpm -qa | grep pubkey
  • 查看该软件的签名
        rpm -qi gpg-pubkey-e8562897-459f07a4
        # ls /etc/pki/rpm-gpg/
        RPM-GPG-KEY-redhat-release
        /etc/lib/rpm   存放当前安装软件包信息


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值