zoukankan      html  css  js  c++  java
  • Linux程序包管理

    Linux程序包管理

      API:Application Program Interface(应用编程接口)

      ABI:Application Binary Interface(应用二进制接口)

        Unix-like,

          ELF

        windows

          exe,msi

        库级别的虚拟化:

          Linux:WinE

          windows:Cywin

    系统级开发:

      C/C++:httpd、vsftpd、nginx

      go

    应用级开发:

      Java/python/perl/ruby/php:

        java:hadoop、hbase,(运行Java程序依赖于jvm虚拟机)

        python:OpenStack,(pvm)

        perl:(perl解释器)

        ruby:(ruby解释器)

        php:(php解释器)

    C/C++程序格式:

      源代码:文本格式的程序代码

        编译开发环境:编译器、头文件、开发库

      二进制格式:文本格式的程序代码 --> 编译器 --> 二进制格式(二进制程序、库文件、配置文件、帮助文件)

    Java/python程序格式:

      源代码:编译成能够在其虚拟机(jvm/pvm)运行的格式

        开发环境:编译器、开发库

      二进制:

    项目构建工具:

      c/c++:make

      java:maven

    程序包管理器:

      源代码 --> 目标二进制格式 --> 组织成为一个或有限几个“包”文件

        安装、升级、卸载、查询、校验

      程序包管理器:

        Debian:dpt,dpkg,“.deb”

        redhat:Redhat package manager(红帽管理工具),rpm,“.rpm”;rpm is package manager;

        S.U.S.E:rpm,“.rpm”

        Gentoo:ports

        ArchLinux:

      源代码:name-VERSION.tar.gz

        VERSION:major,minor.release

      rmp包命名格式:

        name-VERSION-release.arch.rmp

        VERSION:major.minor.release

        release.arch:rpm包的发行号

          release.os:2.el7.i386.rpm

          archetecture:i386,x64(amd64),ppc,noarch

        redis-3.0.2.targz --> redis-3.0.2-1.centos7.x64.rpm

      拆包:主包和支包

        主包:name-VERSION-release.arch.rpm

        支包:name-function-VERSION-release.arch.rpm

          function:devel,utils,libs,......

      

      依赖关系:

        X,Y,Z

          X --> Y,Z

        前段工具:自动解决依赖关系

          yum:rhel系列系统上rpm包管理器的前段工具

          apt-get(apt-cache):deb包管理器的前段工具

          zyyper:suse的rpm管理器前段工具

          dnf:Fedora 22+系统上rpm包管理工具

      程序包管理器:

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

        1、程序包的组成清单(每个程序包都单独实现):

          文件清单

          安装或卸载时运行的脚本

        2、数据库(公共)

          程序包的名称和版本

          依赖关系

          功能说明

          安装生成的各文件的文件路径及校验码信息

          等等等

          

          /var/lib/rpm  #rmp数据库

      获取程序包的途径:

        (1)系统发行版的光盘或官方的文件服务器(或镜像站点):

          http://mirrors.aliyun.com

          http://mirrors.sohu.com

          http://mirrors.163.com

        (2)项目的官方站点

        (3)第三方组织:

          (a) EPEL:

          (b) 搜索引擎

            http://rpmfind.net

              rpm.pbone.net

              pkgs.org

        (4)自己动手,丰衣足食

        建议:检查其合法性

          来源合法性

          程序包的完整性

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

        安装、升级、卸载、查询和校验、数据库维护

        rpm命令:rpm [OPTIONS] [PACKAGE_FILE]

          安装  :-i,--install

          升级 :-U,--update

          卸载 :-e,--erase

          查询 :-q,--query

          校验 :-v,--verify

          数据库维护:--builddb,--initdb

      安装:

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

          rpm -ivh PACKAGE_FILE ...

          GENERAL OPTIONS:通用选项

            -v:verbose,详细信息

            -vv:更详细的输出

          [install-options]:

            -h:hash marks输出进度条;每个#表示2%的进度

            --test:测试安装,检查并报告依赖关系及冲突消息等

            --nodeps:忽略依赖关系;不建议

            --replacepkgs:重新安装

            注意:rpm可以自带脚本

              四类:--noscripts

                preinstall:安装过程开始之前运行的脚本,%pre,--nopre

                postinstall:安装过程完成之后运行的脚本,%post,--nopost

                preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,--noperun

                postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun

            --nosignature:不检查包签名信息,不检查来源合法性;
            --nodigest:不检查包完整性信息;

      升级:

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

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

          -U:升级或升级;

          -F:升级

          rpm -Uvh PACKAGE_FILE ...

          rpm -Fvh PACKAGE_FILE ...

            --oldpackage:降级;

            --force:强制升级

          注意:(1)不要对内核升级操作;Linux支持多内核并存,因此,直接安装新版本内核即可

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

      卸载:

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

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

        --nodeps:忽略依赖关系

        --test:测试卸载,dry run模式

      查询:

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

        [select-options]

          PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本

          -q,--all:查询所有已经安装过的包

          -f FILE:查询指定的文件由哪个程序包安装生成

          

          -p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作

          --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供

          --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

        

         [query-options]

          --changelog:查询rpm包的changelog

          -l,--list:列出一个包生成了哪些文件

          -i,--info:程序包相关的信息,版本号、大小、所属的包组

          -c,--configfiles:查询指定的程序包提供的配置文件

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

          --provides:列出指定的程序包提供的所有CAPABILITY

          -R, --requires:查询指定的程序包的依赖关系

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

        用法:rpm -qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE

          -qpi PACKAGE_FILE , -qpl PACKAGE_FILE,-qpc PACKAGE_FILE,...

      校验:

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

        

        S file Size differs
        M Mode differs (includes permissions and file type)
        5 digest (formerly MD5 sum) differs
        D Device major/minor number mismatch
        L readLink(2) path mismatch
        U User ownership differs
        G Group ownership differs
        T mTime differs
        P caPabilities differ

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

        来源合法性验证:

          数字签名:

        完整性验证:

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

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

        验证:

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

          (2)手动验证:rpm -K PACKAGE_FILE

      数据库重建:

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

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

        获取帮助:

          Centos 7:man rpmdb

          Centos 6:man rpm

          rpm {--initdb|--rebuilddb}

            --initdb:初始化数据库,当前无任何数据库时可初始化创建一个新的,当前有时不执行任何操作

            --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建

    博客作业:rpm包管理功能全解

  • 相关阅读:
    【Prince2科普】Prince2的七大原则(6)
    6.08 PMO的生存挑战-这些企业的痛你遇到了吗?
    【Prince2科普】Prince2的七大原则(5)
    【Prince2科普】Prince2的七大原则(4)
    【Prince2科普】Prince2的七大原则(3)
    【Prince2科普】Prince2的七大原则(2)
    项目管理三大认证体系,该选择谁?
    事件委托
    关于js中pushstate popstate
    js中标签的获取
  • 原文地址:https://www.cnblogs.com/self-discipline-xxc/p/10415612.html
Copyright © 2011-2022 走看看