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

相关推荐

  • grep与正则表达式

    1.什么是grep grep(Golobal Regular Expression print)是Linux系统中一个强大的文本搜索工具,也是俗称的搜索三兄弟之一,grep的最大意义就是搜索文本,把匹配的行打印到屏幕上,但不影响原文件的内容;在搜索文本的过程中,可以利用到“正则表达式”来定以自己的搜索匹配模式。 Unix的grep家族包括了grep、egre…

    Linux干货 2015-10-08
  • Linux中软链接和硬链接的区别

    Linux中软链接和硬链接的区别 链接文件:   Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。 Inode 文件除了纯数据本身之外,还必须包含有对这些纯数据的管理信息 文件名; 访问权限; 文件的属主以; 该文件的数据所对应的磁盘数据块; 文件的时间戳; …

    Linux干货 2016-10-20
  • 第1周-1:计算机的组成及其功能以及部分常见Linux发行版简介

    一、计算机的组成及其功能: 计算机主要由硬件部分和软件部分组成。 1、硬件部分 (1)中央处理器 由控制器和运算器两大部分组成,是计算机的大脑,硬件部分里最关键的部分。决定着整个计算机系统的性能。 控制器负责协调计算机硬件的其他部分同步工作,对其他的硬件进行发号施令。是计算机系统的司令。控制器从存储器中读取指令,分析指令的含义,要完成什么操作,需要什么数据,…

    Linux干货 2016-11-01
  • man 命令简单介绍

    man n command man手册页分为下面几个部分: 1 普通命令2 内核提供的系统调用3 库调用4 设备文件5 文件格式规范6 游戏7 杂项8 系统管理命令

    Linux干货 2018-03-03
  • heartbeat实现高可用集群(1)

    环境 node1 192.168.1.35 node2 192.168.1.36 fip 192.168.1.80 daemon httpd nfs 192.168.1.15 配置HA集群的前提 1.节点时间必须同步,使用ntp协议实现 2.节点间需要通过主机互相通信,必须解析主机名至IP地址 a.建议名称解析功能能使用hosts文件实现 b.通信中使用的名…

    Linux干货 2017-11-03
  • linux基础命令1

    内容包含:文件管理、重定向和管道、用户组和权限管理、文本处理工具

    Linux干货 2017-11-19