码迷,mamicode.com
首页 > 系统相关 > 详细

谢烟客---------Linux之程序包管理基础知识

时间:2017-08-14 22:19:15      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:linux

内核不提供特定的功能:功能由程序提供


程序的格式,ABI

  Windows:EXE

  Linux:ELF


程序编译的过程:

  源程序 --> 编译 --> 汇编代码 --> 汇编 --> 二进制程序 --> 链接

  

编译的分类:

  静态编译: 将程序运行时依赖的库编译进程序

  动态编译:编译后需要链接库,在程序运行时,依据链接找到共享的库


程序跨平台运行

1、库虚拟化,虚拟出对应平台的库和ABI;程序运行在库之上

   1)、Linux上运行WINE程序,即可虚拟出Linux程序运行所依赖的库和ABI。Windows程序即可跨平台运行。

   2)、Windows上运行Cywins程序,即可虚拟出Windows程序运行所依赖的库和ABI。Linux程序即可跨平台运行。

   3)、不稳定


2、java虚拟机:不用考虑依赖的库和ABI(Sun,C语言研发,开发环境JDK,运行环境JVM,javac编译器,java环境内存监视器);程序运行在JVM之上

  用C写的程序,调用C库,源代码级别兼容,可在任意平台编译出对应平台的JAVA,JDK,JVM

  1)、在JKD中开发的java程序,无论在什么平台,不再考虑系统级别的库,只需要JVM即可运行。

  2)、稳定    


  Andoriod = Linux + busybox + JVM


写程序面向的对象

  1)应用级: JAVA语言(JDK),go,python(统一的接口,稳定,简洁),php,perl(灵活)

  2)系统级: Syscall,Libcall

  3) 硬件规格: 二进制、微码编程、高级语言


程序的组成及功用

   二进制格式程序、库、配置文件、帮助手册

     配置文件:启用或关闭某些功能特性

     库:提供二次开发接口

     帮助手册:命令的使用手册

     

     程序: /bin,/sbin,/usr/sbin,/usr/bin

    库:/lib,/lib64,/usr/lib,/usr/lib64

     配置文件:/etc

     帮助手册: /usr/share/man


程序包管理器

功能:将程序各组成部分打包成一个整体,从而方便:安装、查询、卸载、校验、升级。


程序包管理器的分类

技术分享

红帽

     1)源代码包的命令:name-version.tar.gz

        version:major.minor.release

    major:  主干分支:功能特大变化

    minor:  添加分支,修改功能

    release: 修复一个BUG

     2)rpm包命名

       源代码: name-version-release(rpm包).操作系统平台.src.rpm

       二进制: name-version-release.操作系统平台.CPU平台.rpm

   

             操作系统平台: el5,el6,el7,...

             CPU平台:x86:i386,i486 ,i586 ,i686适用更新的平台,向下兼容

                               x86_64/x64/amd64:第一颗32bit平台或x86平台的64bitCPU是AMD研发的。注重技术的平台叫amd64


        

   3)包的拆分: 不同的用户用到rpm包的功能范围都不相同,对于只用少部分功能的用户,安装整个rpm包,浪费空间,又没有什么用处。就有需求将功能拆分:主干包和支包

        主干包: 包的主要功能: name-version-release.操作系统平台.CPU平台.rpm

        支包/支包/分包: 包的附加功能: name-devel-version-release.操作系统平台.CPU平台.rpm

        

   4) 包间的依赖关系:安装程序包时,必须先安装主干包,而后才能安装支包。

            

前端管理工具

   将远端或本地的某个仓库中的程序包的依赖关系抽取出来,放到本地的元数据目录路径中,每次安装时,通过校验码与,仓库中的程序包的校验码比对,如果没有变化,分析本地程序包的依赖关系。如果变化了,重新获取对应仓库中的程序包的依赖关系。

        

1、获取rpm包的途径

1、系统发行光盘
清华大学: mirror.tuna.tsinghua.edu.cn
华中科技大学: mirrors.hust.edu.cn
mirrors.aliyun.com
mirrors.sohu.com
mirrors.163.com
2、项目官方站点
3、第三方组织
优先:Fedora-EPEL http://download.fedoraproject.org/pub/epel/
搜索引擎:
http://pkgs.org
http://rpmfind.org

4、自己制作
1)获取官方源码
2)编写sparc文件

2、rpm命令的使用

   1)安装

   2)查询

   3)卸载

   4)校验:来源合法性,完整性

   5)升级

   6)数据库


来源合法性:程序包制作者是我们认可的第三方组织(由对方的公钥验证)

完整性:未经制作者,向程序包中额外添加的其他内容


补充:

  1、查看程序所依赖的库文件

ldd  FILE...

使用示例

1、获取命令的路径
[root@izpo45bh60h6bsz ~]# which --skip-alias ls
/usr/sbin/ls

2、获取命令依赖的共享库文件
[root@izpo45bh60h6bsz ~]# ldd   /bin/ls
	linux-vdso.so.1 =>  (0x00007ffd021f3000)  ## 库的入口
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f614409b000)
        依赖的共享库       库名    (16进制表示库装载在当前内存的哪个地址空间中    )

  2、显示或配置系统内存中装载的库,库映射关系路径

 ldconfig [选项...]
 -p, --print-cache          打印缓冲区
 
 1、设定库的映射
 ldconfig FILE
 2、配置文件
 /etc/ld.so.conf.d/*.conf
 /etc/ld.so.conf
 3、生成缓存的文件路径
 /etc/ld.so.cache


本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1956235

谢烟客---------Linux之程序包管理基础知识

标签:linux

原文地址:http://sonlich.blog.51cto.com/12825953/1956235

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!