【Linux】【Services】【Package】Basic

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,   (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
        rpm包命名格式:
            name-VERSION-release.arch.rpm
                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
                    Y --> A, B, C
                    C --> Y
                     
            前端工具:自动解决依赖关系;
                yum:rhel系列系统上rpm包管理器的前端工具;
                apt-get (apt-cache):deb包管理器的前端工具;
                zypper:suse的rpm管理器前端工具;
                dnf:Fedora 22+系统上rpm包管理器的前端工具;
                 
        程序包管理器:
            功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作;
             
            1、程序包的组成清单(每个程序包都单独实现);
                文件清单
                安装或卸载时运行的脚本
            2、数据库(公共)
                程序包的名称和版本;
                依赖关系;
                功能说明;
                安装生成的各文件的文件路径及校验码信息;
                等等等
                 
                /var/lib/rpm/
                 
    获取程序包的途径:
        (1) 系统发行版的光盘或官方的文件服务器(或镜像站点):
            http://mirrors.aliyun.com,
            http://mirrors.sohu.com,
            http://mirrors.163.com
        (2) 项目的官方站点
        (3) 第三方组织:
            (a) EPEL
            (b) 搜索引擎
                http://pkgs.org
                http://rpmfind.net
                http://rpm.pbone.net
        (4) 自动动手,丰衣足食
         
        建议:检查其合法性
            来源合法性;
            程序包的完整性
原文地址:https://www.cnblogs.com/demonzk/p/6296977.html