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

    API:Application Programming Interface
        POSIX:Portable OS


    程序源代码-->预处理--> 编译-->汇编-->链接
      静态编译:
      共享编译:.so
    ABI:Application Binary Interface
      Windows与Linux不兼容
      库级别的虚拟化:
        Linux:WiNE
        Windows:Cywin
    系统级开发
      C++
    应用级开发
      java
      Python
      php

    二进制应用程序的组成部分:

      二进制文件,库文件,配置文件,帮助文件

    程序包管理器

      debian:deb, dpt

      redhat:rpm, rpm
        rpm:Redhat Package Manager
          RPM is Package Manager
    Gentoo
    Archlinux
    I
    源代码:name-VERSION. tar. gz
      VERSION:major minor. release
    rpm包命名方式:
      name -VERSION-ARCH.rpm

      VERSION:major,minor.release

      ARCH:release.os.arch

    testapp:拆包

      testapp-VERSION-ARCH.RPM主包

      testapp-devel-VERSION-ARCH.RPM支包

      testapp-testing-VERSION-ARCH.RPM

    包之间存在依赖关系

    查看二进制程序所依赖的库文件:
      ldd /PATH/T0/BINARY FILE
    管理及查看本机装载的库文件:
      ldconfig
        /sbin/ldconfig -p:显示本机已经缓存的所有可用库文件名及文件路径映射关系:

      配置文件为:/etc/1d.so. conf, /etc/ld. so. conf .d/* . conf
      缓存文件:/etc/ld. so. cache
    程序包管理:
      功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作:

    1、程序的组成组成清单(每个包独有)
      文件清单
      安装或卸载时运行的脚本
    2、数据库(公共)
      程序包名称及版本
      依赖关系:
      功能说明:
      安装生成的各文件的文件路径及校验码信息:

    管理程序包的方式:
      使用包管理器:rpm
      使用前端工具:yum, dnf
    获取程序包的途径:
      (1)系统发版的光盘或官方的服务器:
        CentOS镜像:
        http://mirrors . aliyun. com
        http://mirrors . sohu. com
        http://mirrors .163. com
      (2)项目官方站点
      (3)第三方组织:
        Fedora-EPEL I
        搜素引擎:
        http://pkgs .org
        http://rpmf ind . net
        http://rpm. pbone . net

      (4)自己制作

    Cent0S系统上rpm命令管理程序包:
      安装、卸载、升级、查询、校验、数据库维护
    安装:
      rpm {-1|--instal1} 【install-options】 PACKAGE FILE
        -V:verbose
        -VV :
        -h:以#显示程序包管理执行进度:每个#表示2%的进度
        rpm -ivh PACKAGE FILE
          【install-opt ions 】
          --test:测试安装,但不真正执行安装过程:dry run模式:
          --nodeps:忽略依赖关系:

          --replacepkgs:重新安装:
          --nosignature:不检查来源合法性:
          --nodigest:不检查包完整性:
          --noscipts:不执行程序包脚本片断:
            %pre:安装前脚本:-- nopre
            %post:安装后脚本:-- nopost
            %preun:卸载前脚本:--nopreun
            %postun:卸载后脚本:.--nopostun

    升级:
      rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
      rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
        upgrage:安装有旧版程序包,则“升级”:如果不存在旧版程序包,则“安装”;
        freeshen:安装有旧版程序包,则“升级”:如果不存在旧版程序包,则不执行升级操作:

        rpm -Uvh PACKAGE FILE
        rpm -Fvh PACKAGE FILE ...
          --oldpackage:降级;
          --force:强行升级;

    注意:(1)不要对内核做升级操作:Linux支持多内核版本并存,因此,对直接安装新版本内核:
       (2)如果原程序包的配置文件安装后曾被修改,长级时,新版本的提供的同一个配置文件并不会直接厦盖老版本的配置文件,而把新版本的文件重命名(FILENAME . rpmnew)后保留;

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

        [select-options]
          -a所有包
          -f:查看指定的文件由哪个程字包安装生成
          -p package_filename:针对尚未安装的程序包做查询操作
          --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供:
          --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖:

        [query-options]
          --changelog 查询rpm包的changlog
          -c:查询程序的配置文件
          -d:查询程序的文档
          -i:information
          -1:查看指定的程序包安装后生成的所有文件:
          --scripts:程序包自带的脚本片断
          -R:查询指定的程序包所依赖的CAPABILITM
          --provides;列出指定程序包所提供的CAPABILITM

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

    校验
      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

    导入所需要公钥:
       rpm -- import /PATH/FROM/GPG PUBKEY-FILE
        CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-Cent0S-7
    数据库重建:
      rpm {--initdb| -- rebui lddb}
        initdb:初始化
          如果事先不存在数据库,则新建之:香则,不执行任何操作:
        rebuilddb:重建
          无论当前存在与否,直接重新创建数据库:

    linux 程序包管理(2)

    linux 程序包管理(2)
    yum repository:yum repo
    存储了众多rpm包,以及包的相关元数据文件(放置于特定目录下:repodata);
    文件服务器:
    ftp://
    http://
    nfs://
    file://
    yum客户端:
    配置文件:
    /etc/yum.conf:为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置信息
    仓库的定义

    [repository] OPTIONS
    [repositoryid]
    name=Some name for this repository
    baseurl=url://server1/path/to/repository/
    enbled=(1|0):启用或不启用此仓库
    gpgcheck:检验包的完整性
    gpgkey=URL

    yum [options] [command] [package ...]

    command is one of:
    * install package1 [package2] [...]--->安装程序包
    * update [package1] [package2] [...]--->升级指定程序包
    * update-to [package1] [package2] [...]
    * update-minimal [package1] [package2] [...]
    * check-update--->检查可用升级
    * upgrade [package1] [package2] [...]
    * upgrade-to [package1] [package2] [...]
    * distribution-synchronization [package1] [package2] [...]
    * remove | erase package1 [package2] [...]卸载程序包
    * autoremove [package1] [...]
    * list [...]显示程序包
    yum list [all | glob_exp1] [glob_exp2]
    yum list {available|instal1ed|updates} [glob_exp1]
    * info [...]--->查看程序包的简要信息
    * provides | whatprovides feature1 [feature2] [...]--->查看指定特性(可以是某个文件)是由哪个程序包提供的
    * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] --->清理缓存
    * makecache [fast]--->构建缓存
    * groups [...]---->包组管理
    group install
    group update
    group list
    group remove
    * search string1 [string2] [...]--->根据string搜索程序包
    * shell [filename]
    * resolvedep dep1 [dep2] [...]
    (maintained for legacy reasons only - use repoquery or yum provides)
    * localinstall rpmfile1 [rpmfile2] [...]--->用yum来安装本地rpm包,而且还解决依赖问题
    (maintained for legacy reasons only - use install)
    * localupdate rpmfile1 [rpmfile2] [...]
    (maintained for legacy reasons only - use update)
    * reinstall package1 [package2] [...]
    * downgrade package1 [package2] [...]--->降级程序包
    * deplist package1 [package2] [...]--->查看指定包所依赖的capabilities。
    * repolist [all|enabled|disabled]--->显示仓库列表
    * repoinfo [all|enabled|disabled]
    * repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-distribution-synchronization> [package2] [...]
    * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
    * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]--->查看yum事务历史

    * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running-kernel]
    * fssnapshot [summary | list | have-space | create | delete]
    * fs [filters | refilter | refilter-cleanup | du]
    * check
    * help [command]

  • 相关阅读:
    iOS Runtime 实践(1)
    支付宝接口使用文档说明 支付宝异步通知
    ASP.NET中数据棒图,饼图,柱状图的实现
    ASP.NET运行机制之一般处理程序(ashx)
    ASP.NET的一套笔试题
    ASP.NET页面优化性能提升方法记录
    ASP.NET 大文件上传的简单处理
    ASP.NET输出PNG图片时出现GDI+一般性错误的解决方法
    您可能不知道的ASP.Net小技巧
    cache应用(asp.net 2.0 SQL数据缓存依赖 [SqlCacheDependency ] )
  • 原文地址:https://www.cnblogs.com/baomaggie/p/11125078.html
Copyright © 2011-2022 走看看