简介

软件包管理器的核心功能:

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

市面上常见的软件包管理工具:

1. Redhat, SUSE: `RPM`
    - 由 RedHat 公司所研发开始名为(RedHat Package Manager),后因被纳为标准包管理器,后改名为(RPM is Package Manager)包括 Fedora, CentOS, SUSE 等等,其前端工具有yum
2. Debian: `dpt`
    - 由 Debian Linux 社群所开发出来的, 只要是衍生版 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包括B2D, Ubuntu 等等,其前端工具有apt-get
  • 前端工具:yum, apt-get
  • 后端工具:RPM, dpt

    rpm功能:
    安装
    查询
    卸载
    升级
    校验
    数据库的重建
    验正数据包


rpm命名格式:

  1. 包组成部分
    • 主包:
      • 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
  2. 包名格式:
    • name-version-release.arch.rpm
    • bind-major.minor.release-release.arch.rpm

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

rpm命令说明

1. 安装

rpm -i /PATH/TO/PACKAGE_FILE
    -h: 以#显示进度;每个#表示2%; 
    -v: 显示详细过程
    -vv: 更详细的过程
#常用安装选项:
rpm -ivh /PATH/TO/PACKAGE_FILE
    --nodeps: 忽略依赖关系;
    --replacepkgs: 重新安装,替换原有安装;
    --force: 强行安装,可以实现重装或降级;

2、 查询

rpm -q PACKAGE_NAME #查询指定的包是否已经安装
rpm -qa #查询已经安装的所有包
rpm -qi PACKAGE_NAME #查询指定包的说明信息;
rpm -ql PACKAGE_NAME #查询指定包安装后生成的文件列表;
rpm -qc PACEAGE_NEME #查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME #查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME #查询指定包中包含的脚本
rpm -qf /path/to/somefile #查询指定的文件是由哪个rpm包安装生成的;

#如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl 

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

6、重建数据库

rpm 
    --rebuilddb: 重建数据库,一定会重新建立;
    --initdb:初始化数据库,没有才建立,有就不用建立;

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

加密类型:
对称:加密解密使用同一个密钥
公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
单向

包完整性:通过单向加密机制(md5|sha1)
来源合法性:通过公钥加密机制(RSA)

命令: gpg(加密工具), pgp(加密规范)   gpg使用pgp加密规范

检查顺序:

    1、导入制作者的公钥,CentOS发行版的公钥在iso文件中; 
    2、导入密钥命令:rpm --import /path/to/gpg-key-file
    3、检查: rpm -K /path/to/package_file
            rpm --checksig /path/to/package_file
                --nosignature: 不检查来源合法性
                --nodigest: 不检查完整性,只检查来源合法性。