• 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:rpm, ".rpm"; redhat package manager/rpm is package manager
    • S.u.S.E:rpm,".rpm"; 文件路径与组织格式与redhat的rpm不兼容
    • Gentoo:ports
    • ArchLinux:

    源代码:name-Version.tar.gz

    • Version: major.minor.release

    rpm包命名格式:name-Version-release.os.arch.rpm

    • Version:源代码版本
    • release:rpm包的发行号
    • os:操作系统,如centos7;不一定有,有时候省略
    • arch:架构,如:i386,x64(amd64),ppc,noarch

    拆包:主包和支包(不是官方叫法,自己叫的)

    • 主包:name-Version-release.arch.rpm
    • 支包:name-function-Version-release.arch.rpm
      • function:devel,utils,libs...

     依赖关系:

    • 前端工具:自动解决依赖关系
      • yum:rhel系列系统上rpm包管理器的前端工具
      • apt-get(apt-cache):deb包管理器的前端工具
      • zypper:suse的rpm包管理器的前端工具
      • dnf:Fedora 22+系统上rpm包管理器的前端工具

    程序包管理器

    • 功能:将编译好的应用程序的各个组成文件打包成一个或几个程序包文件,从而更方便的实现程序包的安装、升级、卸载和查询等管理操作
    • 程序包的组成清单(每个程序包都单独实现)
      • 文件清单
      • 安装或卸载时运行的脚本
    • 数据库(公共)
      • 程序包的名称和版本
      • 依赖关系
      • 功能说明
      • 安装生成的各文件的文件路径及校验码信息
      • 等等等

    获取程序包的途径

    • 系统发行版的光盘或官方的文件服务器(或镜像站点)
      • http://mirrors.aliyun.com
      • http://mirrors.sohu.com
      • http://mirrors.163.com
    • 项目的官方站点
    • 第三方组织
      • EPEL
      • 搜索引擎
        • http://pkgs.org
        • http://rpmfind.net
        • http://rpm.pbone.net
      • 自己动手制作
      • 建议:检查合法性和完整性
        • 来源合法性
        • 程序包的完整性

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

    • 安装、升级、卸载、查询和校验、数据库维护
    • rpm [OPTIONS] [PACKAGE_FILE]
      • 安装:-i,--install
      • 升级:-U,--upgrade;-F,--freshen
      • 卸载:-e,--erase
      • 查询:-q,--query
      • 校验:-V,--verify
      • 数据库维护:--builddb,--initdb
    • 安装:rpm {-i | --install} [general-options] [install-options] PACKAGE_FILES...
      • 常用:rpm -ivh PACKAGE_FILE...
      • general-options:
        • -v:verbose,输出详细信息
        • -vv:更详细的输出
      • install-options:
        • -h:hash marks输出进度条;每个#表示2%的进度
        • --test:测试安装,检查并报告依赖关系及冲突消息等
        • --nodeps:忽略依赖关系,不建议
        • --replacepkgs:重新安装
        • 注意,rpm可以自带脚本;脚本分为四类:
          • preinstall:安装过程开始之前运行的脚本,%pre;--nopre
          • postinstall:安装过程完成之后运行的脚本,%post;--nopost
          • preuninstall:卸载过程真正开始执行之前运行的脚本,%preun;--nopreun
          • postuninstall:卸载过程完成之后运行的脚本,%postun;--nopostun
          • --noscript都不执行
        • --nosignature:不检查包签名信息,即不检查来源合法性
        • --nodigest:不检查包完整性信息,即不检查md5信息
  • 相关阅读:
    转 闭包简单理解
    mac 利用 sshpass 自动登录
    阮一峰 IaaS,PaaS,SaaS 的区别
    YMP运行初始化步骤
    强烈推荐 在线接口文档管理工具 小幺鸡 小团队可以省掉测试了
    springboot JSP 404
    并发测试 JavaDemo
    JS刷新当前页面的几种方法总结
    jquery checkbox勾选/取消勾选只能操作一次的诡异问题
    微信网页 第三方登录原理详解(转)
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7901169.html
Copyright © 2020-2023  润新知