• 软件包管理


    1、软件运行环境

      软件运行和编译

        ABI:Applicationn Binary Interface 应用二进制接口,调用内核功能

          windows与linux 不兼容

            ELF:Executable and Linkable Format ------linux接口

            PE :Portable Executable ------windows接口

          库级别的虚拟化:

            linux:wine

            windows:cygwin

        API:Application programming interface 应用程序接口,调用ku

          POSIX:Portable OS

        程序源代码 ---> 预处理 ----> 编译 ----> 汇编 ---> 链接

          静态编译:   .a

          动态编译:   .so

      静态链接 和 动态链接:

        链接主要作用是吧哥哥模块之间相互引用的部分处理好,能够正确的衔接,分为静态链接和动态链接。

        静态链接:

          把程序对应的依赖库复制一份到包

          libxxx.a

          嵌入程序包

          升级难,需要重新编译

          占用较多空间,迁移容易

        动态链接:

          只把依赖加做一个动态链接

          libxxx.so

          连接指向

          占用空间少,升级方便

        

     2、包管理器:

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

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

      程序包管理器:

        debian:deb文件,dpkg包管理器

        redhat: rpm文件,rpm包管理器

        rpm:redhat package manager  /   RPM package manager

    3、包命名:

      源代码:name-version。tar.gz| bz2 | xz

           version:  major.minor.release

      rpm包命名:

        name-version-release.arch.rpm

          version:  major.minor.release

          release: release.os

        常见的arch:

          x86 : i386 i486 i586 i686

          X86_64 :x64,  x86_64 amd64

        跟平台无关:noarch

    4、包命名和工具

      包:分类和拆包

        application-version-arch.rpm :主包

        application-devel-version-arch.rpm 开发子包

            utils   工具包

            libs    库包

      包之间:可能存在依赖关系,甚至循环依赖

      解决依赖包管理工具‘

        yum: rpm 包管理器的前端工具

        apt-get:deb包管理器前端工具

        zypper: suse上的rpm前端管理工具

        dnf:Fedora 18 + rpm包管理器前端管理工具  

    5、库文件:

      查看二进制程序所以来的库文件:

        ldd /PATH/TO/BINARY_FILE

      管理及查看本机装在的库文件:

        ldconfig 加载库文件

        /sbin/ldconfig -p :显示本机已经缓存的所有可用库文件名及文件路径映射关系

        配置文件: /etc/ld.so.conf    /etc/ld.so.conf.d/*.conf

        缓存文件:/etc/ld.so.cache

    5、包管理器

      程序包管理器:

        功能:将编译号的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装,卸载,查询,升级和校验等管理操作。

      包文件组成(每个包独有)

        rpm 包内的文件

        rpm的元数据,如名称,版本,依赖性,描述等

        安装或卸载时运行的脚本

      数据库(公共):/var/lib/rpm

        程序包名称及版本

        依赖关系

        功能说明

        包安装后生成的格纹见路劲及校验码信息。

    6、程序包的来源

      管理程序包的方式

        使用包管理器:rpm

        使用前端工具:yum,dnf

      获取程序包的途径:

        系统发版的光盘或官方的服务器

        项目官方站点

        第三方组织:

          fedora-epel

        自己制作

    7、rpm包管理:

       centos系统上使用rpm命令管理程序包

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

      安装:rpm -ivh  PACKAGE   

            h:显示进度

          --test:测试安装,不是真正安装

          --nodeps:忽略依赖性

      升级:rpm -U  [ install-options ] PACKAGE

         rpm -F   [ install-options ] PACKAGE

            upgrade:安装有旧版程序包,则 “升级”, 不存在,就安装

            freshen:有旧版本,就升级,没有就不执行

            rpm -Uvh  /   rpm  -Fvh   

            --force:强制安装

        注意

            1、不要对内核做升级操作,内核支持多把版本共存,直接安装新版本内核就行。

            2、如果源程序包的配置文件安装后被修改过,升级时 ,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而 把新版本的文件重命名后保留(name.rpmnew

        

      包查询:

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

          select-options:

            -a:所有包

            -f:查看制定的文件由哪个程序包安装生成

            -p rpmfile :针对尚未安装的程序包文件做查询操作

          query-options:

            -c:查询程序的配置文件

            -d:查询程序的文档

            -i:信息

            -l:查看制定的程序包安装后生成的所有文件。

      包卸载:rpm -e

      包校验:rpm -V

      rpm数据库:

        数据库重建:/var/lib/rpm

         rpm --initdb | --rebuilddb

          initdb:初始化,如果事先不存在数据库,则新建,否则不执行

          rebuilddb:重建已安装的包头的数据库索引目录  

    8、yum

      centos:yum, dnf

      YUM:rpm的前端程序,可以解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代品

        yum repository: yum repo,存储了众多的rpm包,以及包的相关的元数据文件,放在特定的repodata下

          文件服务器:http://  https:// file:/// ftp://    

                

       yum源:

          阿里云repo文件:

             http://mirrors.aliyun.com/repo/ 

          CentOS系统的yum源

            阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/

            清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/

          EPEL的yum源:

            阿里云:https://mirrors.aliyun.com/epel/$releasever/x86_64 

      升级:yum update,

      降级:yum downgrade

      检查可用升级:yum check-update

      卸载:yum remove

      查看程序包:yum info

      查看指定的特性是由那些程序包所提供:yum provides

      清理本地缓存:yum  clean   

          /var/cache/yum/$basearch/$releasever

      构建缓存:

        yum makecache

      包组管理:

        yum groupinstall   group1.。。。。

          groupupdate

          grouplist

          groupremove

          groupinfo

    编译安装后的配置:

      1、二进制程序目录导入至PATH环境变量中,

          编译/etc/profile.d/NAME.sh

            export PATH=/PATH/TO/BIN:$PATH

      2、导入库文件路径:

          编辑/etc/ld.so.conf.d/NAME.conf

            添加新的库文件所在目录至此文件中

          让系统重新生成缓存

            ldocnfig

      3、导入头文件

          基于链接的方式的实现

            ln -sv

      4、导入帮助手册

          编辑/etc/man_db.conf文件

              添加一个MANPATH

  • 相关阅读:
    Java垃圾回收
    Android Starting Window(Preview Window)
    JVM虚拟机结构
    表驱动法 -《代码大全》读书笔记
    快速Android开发系列网络篇之Retrofit
    快速Android开发系列网络篇之Volley
    快速Android开发系列网络篇之Android-Async-Http
    清除Android工程中没用到的资源
    快速Android开发系列通信篇之EventBus
    Android点击列表后弹出输入框,所点击项自动滚动到输入框上方
  • 原文地址:https://www.cnblogs.com/JerryZao/p/10589995.html
Copyright © 2020-2023  润新知