rpm程序包管理器

linux程序包管理器:

协作用户管理应用程序:安装、升级、查询、校验、卸载等

软件程序包生成过程:

    源代码——》目标二进制格式–》组织成为一个或有限几个包文件

    源代码:程序员写好的纯文本文档格式的代码

    目标二进制:通过编译器编辑成为的二进制代码

程序包管理器:(每一个发行版管理器各有不同)

     debian:程序包以“.deb”为后缀

         dpt/dpkg:管理工具

     redhat:程序包以“ .rpm”为后缀

         rpm:管理工具

     S.u.SE:程序包以“.rpm”为后缀

         rpm:管理工具

源代码命令格式:

    name-VERSION-.tar.gz

        VERSION:major(主)、minor(次)、release(发行号)

        major:重大版本发生改变才会更改此版本号

        minor:某一功能增加或减少会更改

        release:修复bug等一些小的操作


rpm包命令格式:

    name-Version-release.arch.rpm

        VERSION:major(主)、minor(次)、release(发行号)

        major:重大版本发生改变才会更改此版本号

        minor:某一功能增加或减少会更改

        release:修复bug等一些小的操作

        release.arch:rpm包的发行号(包括release.arch)

        arch:表示程序包适合应用在什么平台架构上

         #redis-3.0.2-2.el7.i386.rpm

         redis:名字

         3.0.2:版本号分别一一对应

         2:第二次制作

         el7:rhel7

         i386:适用在架构兼容i386的cpu上

包的依赖关系

        在linux系统中,所有应用程序功能都非常单一,简单(linux哲学思想之一,组合小程序完成复杂任务,除hadoop程序外)所以,一个程序包的运行可能会依赖于气筒程序包功能的存在性,所以,程序包和程序包之间存在依赖关系。

        比如安装A程序包,而A程序包依赖于B程序包的功能,而B程序包又依赖于D程序包,这就叫做依赖关系

自动解决包依赖关系的前端工具

         yum:rpm包管理的前端工具(rhel系列的都用此为前端工具)

         apt-get:deb包管理的前端工具(debain,Ubuntu系列)

         zyyper:suse的rpm包管理前端工具

         dnf:fedora 22以上的系统上的rpm管理前端工具

        

rpm包程序管理器:

        功能:将编译好的应用程序的个组成文件打包成为一个或几个程序包文件,从而更方便的实现程序包的安装,升级,卸载,查询等管理操作

    1.程序包的组成清单(每个包都是独立的各自存在的清单)

        有安装所需的文件清单、安装及卸载时的脚本等。

    2.数据库(公共的存放系统上所有程序包的信息数据库)

        用于存储程序包的名称和版本、依赖关系、功能说明、安装生成的个文件的文件路径及校验码信息

Centos系统上rpm命令管理程序包

        功能:安装、升级、查询、校验、数据库维护等

rpm命令:

rpm [options][Package_file]

     安装:-i  –install

   升级:-U  –update,  -F –freshen

   卸载:-e    –erase

   查询:-q   –query

   校验:-V  –verify

   数据库维护:–rebulidb、–initdb

    通用选项,用于所有功能:

     -v:verbose 详细信息

     -vv:更详细的信息

1.安装:

rpm  {-i|–install} [install-options] Package_file…

在安装时必须使用的选项(i和–install)其中一个,在结合其他安装选项及包文件地址进行安装

    [install – options]安装选线:

    -h:进度条
    --test:测试安装,用于检查安装时所有的依赖关系及错误报告等信息
    --nodeps:忽略依赖关系进行安装,(虽能安装成功,但不一定能运行成功)
    --replacepkgs:覆盖安装,重新安装并覆盖原有文件
    --force:强制安装

注:在安装程序包时常用的组合选项:

  #rpm -ivh  PACKage_file

2.升级(会替换原有的程序包)

     rpm  {-U|–install} [install-options] Package_file…

     rpm  {-F|–install} [install-options] Package_file…

     -U:表示安装和升级,当时用此升级程序时,如果原本程序不存在,则会安装程序包

     -F:表示只升级程序包,如果原程序不存在,则不会进行升级或安装操作)

     常用组合选项:

     rpm -Uvh  Packages_file (会替换原有的文件包)

     rpm -Fvh  Packages_file   

    

       可用于安装选项(如:–test、nodeps、noplacepkgs、–force等)

     –oldpackage:降级安装

     –force:忽略高版本强行降级到旧版本

注意:   

(1)不要对内核做升级操作;linux支持多内核版本并存,因此,直接安装新版本内核

(2)如果某源程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.remnew)  

 

3.卸载: 

注意:卸载时、查询时都是package name,安装和升级都是package file

        rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …

    –allmatches :卸载所有匹配指定名称的程序包的各版本

    –nodeps :忽略依赖关系

    –test:测试卸载(会显示依赖关系等信息,但不真正卸载)


4.查询:(有两类选项)***非常重要***

    rpm {-q|–query} [select-options] [query-options]

第一类:select-options:选择选项

    查询时直接给定包名

        #rpm -q package_name  //查询指定的程序包是否安装及其版本

    -a:查询所有已安装上的所有包

        #rpm -qa pachage_name   //可使用正则表达式进行匹配

    -f:查询某文件是由哪个程序包安装生成:

        #rpm -qf /path/to/somefile

    -p:查询的未安装的程序包执行查询操作,(配合选项进行查看):

        # rpm -qpi package_file    //查询指定的程序包的详细信息

    –whatprovides CAPABILITY(能力):查询指定的能力由哪个程序包提供:

        #rpm -q whatprovides bash //查询bash能力是由谁(那个程序包)提供的

        #rpm -q –whatprovides “config(bash)”//查询bash

    –whatrequires CAPAbILITY (能力):查询指定的能力被哪个包所依赖

        #rpm -q –whatrequires bash //查询指定的bash能力被那些个包所依赖

第二类query-options: 

    –changelog :查询rpm包的changelog(包改变日志);(rpm包的,而非源码包的)

        #rpm -q –changelog PACKAGE name 

    -l  :查询某包安装生成的文件列表

        #rpm -ql P—name

    -i : 查询程序包的相关信息(如:版本号,大小、所属的包组等)

        #rpm -qi P-name

    -c (configfles):查询指定的程序包提供的配置文件;

        #rpm -qc bash(P-name)

    -d(docfiles):查询指定的程序包提供的文档

        #rpm -qd bash (P-name)

    –provides :列出指定的程序包提供的所有能力(CAPBILITY)

        #rpm -q –provides bash(P-name)//查看bash提供能力

        #rpm -q –whatprovides bash

    -R:查询指定程序包所依赖的各种资源

        #rpm -q -R bash

    –scripts:查看程序包自带的脚本片段

        #rpm -q –scripts bash

用法:

   – qi PACkAGE,-qf FILE,-qc PACkAGE ,-ql PAckage,-qd PACKAGE

   -qpi PACKAGE_file, -qpl PACKAGE_file ,-qpc PACHAGE_file


5.校验:“V”

    查看程序包安装之后有没有被更改过

      可指定只检查指定

      # rpm -V zsh

      #rpm -V –nofiles bash

    用rpm -V P-name  查看出来的结果显示

   [root@CentOs6 mnt]# rpm -V tree
   [root@CentOs6 mnt]# rpm -Va
    S.5....T.  c /etc/bashrc
    S.5....T.  c /etc/profile   
     //如果对应的有显示下面的选项,则改包发生了对应的改变,根据数据来进行查找(数据库地址/var/lib/rpm)

       S:文件大小发生改变 (file Size differs)

       M:文件权限和类型发生改变(Mode differs (includes permissions and file type)

       5:文件内容发生改变MD5这一种指纹的内容已经不同(digest (formerly MD5 sum) differs)   

       D:设备的主次号发生改变( Device major/minor number mismatch)

       L:link路径已经被改变(readLink(2) path mismatch)

       U:文件的属主已被改变(User ownership differs)

       G:文件的属组已被改变 (Group ownership differs)

       T:文件的时间戳(创建时间)发生改变 (mTime differs)

       P:文件所提供的能力发生改变 ( caPabilities differ)

包合法性验证和完整性验证:

        在软件安装之前我们最好是要对即将安装的软件进行合法验证,这样可以检查出软件是否来源合法,内容合法等,在一定程度上避免不必要的安全因素导致的不安全事件

来源和法性:

        由我们信任的制作者提供的依赖于制作者的数字签名,签名是作者使用自己的私钥加密程序包的特性码进行的。

内容合法性:

        包未被二次修改;完整性校验成功,依赖于制作者提供的程序特征码

验证方式:

        安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的特征码相比较

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

    先导入合法的KEY文件:#rpm-import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-(6/7)

列如:#rpm-import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-6 //获取程序包的秘钥

验证:rpm -K Package_file 用光盘中的key与程序包奥的秘钥相对比

      –nosignature:不检查来源合法性

     –nodigest:不检查完整性

获取并导入信任的包制作者的秘钥:

对于Centos发行版来说:rpm-import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-(6/7)

验证:

 (1)安装此组织签名的程序时,会自动执行验证

(2)手动验证:rpm -K Package-FILE

来源合法性验证:

数字签名:用自己的私钥去加密对应数据的特征码,这样来源合法性和数据完整性得到验证

制作者:

     1.使用单向加密法提取包的特征码

     2.用自己的私钥去加密特征码,然后附加在文件后面

使用者:

     拿到包之后,要检验包的来源合法性,拿到制作者的公钥。然后解密特征码,如果能解密则通过。这样包的来源合法性和数据完整性得到验证

6.数据库重建

rpm管理器数据路径:/var/lib/rpm

查询操作:通过此处的数据库进行,

数据库操作查询:

   Centos6:man rpm

   Centos7:man rpmdb

rpm {–initdb} –rebuliddb

       –initdb:初始化数据库,当前完全没有数据库存在时,可自动创建一个新的,如果有则不创建。

       –rebuliddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建,(无论当前数据库存在与否,都会直接重建此库;构建的数据库存放在/var/lib/rpm中)

原创文章,作者:Lii,如若转载,请注明出处:http://www.178linux.com/37553

(0)
LiiLii
上一篇 2016-08-19 11:50
下一篇 2016-08-19 11:50

相关推荐

  • N28-第二周博客作业

    常用通配符
    *:表示任意长度的任意字符;

    ?:表示任意的单个字符;

    []:表示在指定范围内的单个字符:[a-z];

    [^]:脱字符,是取反的意思,即在指定范围以外的任意字符,如 [^0-9]表示除数字以外的一切字符。

    [:digit:] 表示所有的数字,相当于0-9

    [:lower:] 表示所有的小写字母

    [:upper:] 表示所有的大写字母

    [:alpha:] 表示所有的字母,

    [:alnum:] 相当于[0-9a-z]

    [:space:] 相当于空白字符

    [:punct:] 表示所有的标点符号

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

    3、请使用命令行展开功能来完成以下练习:

    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │?? └── grub
    ├── dev
    ├── etc
    │?? ├── rc.d
    │?? │?? └── init.d
    │?? └── sysconfig
    │?? └── network-scripts
    ├── lib
    │?? └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │?? └── local
    │?? ├── bin
    │?? └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    Linux干货 2017-12-11
  • bash基础 if elif 多条件判断 for循环

    bash基础 if elif 多条件判断 for循环

    Linux干货 2017-10-31
  • corosync + pacemaker搭建高可用mysql

    一、实验图     二、环境准备  1)确保时间同步 [root@SQL1 ~]# crontab -e  */5 * * * * /usr/sbin/ntpdate 172.16.2.15 [root@SQL2 ~]#…

    Linux干货 2015-06-30
  • 任务计划配置

             任务计划:         linux任务计划,周期任务执行         未来的某个时间点执行一次任务:at,batc…

    Linux干货 2016-09-12
  • wed服务基础·httpd基础配置详解

    一、 Web Service基础: service:计算机后台提供的功能或计算机可以提供的某一种功能 Web Service本质:通过网络调用其它网站的资源 根据来源的不同,分为两种服务: 本地服务:使用同一台机器提供的服务,不需要网络 网络服务:使用另一台机器提供的服务,需要网络   IANA互联网地址授权机构(Internet Assigned…

    2017-06-09
  • MariaDB之MHA配置

    工作拓扑 一、MHA简明:     MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了    automating master failover 功能。MHA在监控到master节点故障时,会提升其中    拥有最新数据的…

    2017-01-01