码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 程序包管理 rpm yum dnf

时间:2015-09-15 20:13:20      阅读:465      评论:0      收藏:0      [点我收藏+]

标签:rpm yum

Linux程序包管理:

  • 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验)

  • 目前Linux中最常见有两种常用工具

    • deb:debian Linux使用 包括ubuntu

    • rpm:Redhat Package Manager ,Centos等在使用

  • 程序包的组成:

    • 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin

    • 库文件: /lib64, /usr/64

    • 配置文件:/etc

    • 帮助文件:manual, info

  • 包管理器:

    • 打包:将源文件,一个一个单一的归档文件中

    • 安装:将文件释放到相应路径下

    • 卸载:收集所有相关文件删除

    • 升级:更新相关文件

    • 查询:查询程序包相关信息

    • 校验:程序包的来源合法性,完整性


rpm包:

  • rpm打包:打包rpmbuild工具 基于specs文件按照各种规则完成打包。

  • 分包机制:一个程序包含各种功能,其中可能只有几种功能常用,几种功能偶尔用,几种功能很少用,将程序功能分开打包,分为核心包和支包。

    • 核心包:software-Version

    • 支包:software-devel-Version

  • rpm包命名机制:

    • name-Version-Release.ARCH.rpm

      5个字段

      name:包名

      Version:版本信息

         major.minor    主版本号.次版本号

      Release:发布版本次数

      ARCH:适合的硬件平台 i386, i586, i686, x86_64

包与包之间:有可能存在依赖关系    例如安装A之前需要先安装B,安装B之前需要先安装C等等。rpm数据库:/var/lib/rpm

    记录包名,安装生成文件,校验信息,依赖关系等等。

如何获取rpm包

  • 发行版提供的程序包,在光盘中一般在Packages目录中

  • fedora-EPEL ,组织收入rpm包,正式,权威,安全

  • 项目的官方站点, 比如tomcat,SVN官方站点

  • 搜索引擎:第三方提供,注意安全问题

    http://rpmfind.net

    http://rpm.pbone.net

    http://pkgs.org


rpm命令实现程序包管理

  • 安装

    •  rpm {-i|--install} [install-options] PACKAGE_FILE ...

           -i :install

           -v:查看详细的安装信息;-vv,-vvv更加详细的安装信息

           -h:显示安装进度

    • install-options
         [--allfiles] [--badreloc] [--excludepath OLDPATH]
         [--excludedocs] [--force] [-h,--hash]
         [--ignoresize] [--ignorearch] [--ignoreos]
         [--includedocs] [--justdb] [--nocollections]
         [--nodeps] [--nodigest] [--nosignature]
         [--noorder] [--noscripts] [--notriggers]
         [--oldpackage] [--percent] [--prefix NEWPATH]
         [--relocate OLDPATH=NEWPATH]
         [--replacefiles] [--replacepkgs]
         [--test]

      --nodeps:忽略依赖关系,强制安装

      --replacefiles:当某程序已经安装了,使用该命令直接覆盖安装

      --replacepkgs:重新安装某个软件

      --test:测试软件是否可以安装到系统中

 示例:


升级:

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

       -Uvh:如果安装过旧版本程序包,则更新至新版本;如果没有,则直接安装

       -Fvh:如果安装过旧版本程序包,则更新至新版本;如果没有,则不安装

    此处选择[install-options] 同安装时的选项

        --oldpackage:对程序进行降级安装

查询

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

    -qa:查询本机已经安装的所有软件

    -q :只查询指定软件是否安装

    -qi : 查询指定软件的详细信息,开发商,版本等

    -ql:查询软件安装生成的所有文件列表

    -qc:查询指定程序包安装生成的配置文件

    -q --scripts:查询程序包相关的脚步

            preinstall:安装前脚本

            postinstal:安装后脚本

            preuninstall:卸载前脚本

            postuninstall:卸载后脚本

      -qp[icdl] :查询未安装软件的信息,参数作用和上面一样

示例:

  

卸载

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

校验

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

      -V:后面加软件名,若该软件中文件被修改了,就会被列出

      -Va:列出系统上所有被改动过的文件

      -Vf:勒出某个文件是否被改动过

      S file Size differs 文件大小被修改
      M Mode differs 权限和文件类型被修改
      5 digest (formerly MD5 sum) differs MD5内容发生变化
      D Device major/minor number mismatch 设备的主/次代码已经改变
      L readLink(2) path mismatch Link路径发生变化
      U User ownership differs 文件属主被修改
      G Group ownership differs 文件属组被修改
      T mTime differs 文件创建时间被修改
      P caPabilities differ 依赖关系发生改变

    示例:

  • 包校验

来源合法性校验:非对称加密 (公钥)

完整性验证:单向加密

#该路径下存放了密钥 公钥文件
[root@localhost Packages]# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-CentOS-Testing-7

       导入密钥命令:

            rpm --import  /path/to/Key_file

        手动校验:

            rpm -K /path/to/rpm_file








   



Linux 程序包管理 rpm yum dnf

标签:rpm yum

原文地址:http://rogerwang.blog.51cto.com/5326353/1695066

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!