软件包管理

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

 

posted @ 2019-03-24 19:58  JerryZao  阅读(215)  评论(0编辑  收藏  举报