谢烟客---------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、获取命令的路径
[[email protected] ~]# which --skip-alias ls
/usr/sbin/ls

2、获取命令依赖的共享库文件
[[email protected] ~]# 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
时间: 2024-08-02 11:03:42

谢烟客---------Linux之程序包管理基础知识的相关文章

谢烟客---------Linux之程序包管理yum使用和编译安装

yum命令及仓库创建与配置 YUM 原理 安装.卸载.查询.升级.检查,本地缓存.重装.降级.历史.获取帮助 仓库 变量.事务.URL.开销.镜像.元数据存储方式及组成 createrepo作用.命令.lftp命令 编译安装  目的 原理 开发工具及开发环境 编译后的处理 获取程序包源代码的途径 YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户命

谢烟客---------Linux之程序包管理rpm使用

在CentOS系统上用rpm管理程序包,实现安装.卸载.查询.校验.升级.数据库维护 -ivh --replacepkgs -e -U 安装或升级 -F 仅安装 rpm -V file.rpm 校验程序包安装后是否发生改变 rpm --import GPG_FILE 将要安装某仓库的程序包,为了实现校验,必须事先导入GPG公钥 S:Size,5:MD5,T:Timestamp,U:user,G:Group /var/lib/rpm rpm程序的状态信息 如果元数据损坏: --rebuildb 直

linux之程序包管理器(rpm)

linux下的程序包可支持多种工具编写的,如C.C++.PERL等. 但是这种高级语言编写出来的代码是我们人能看懂的,但是计算机是看不懂的,那么计算机怎么执行,怎么了解人要它做什么呢? 这就需要我们做一些转换了,把人能读懂的语言让机器也能识别,这个过程就是由编译器完成的,通常是吧代码语言转换成二进制语言. 过程:预处理.编译.汇编.链接 一个程序的运行大部分时间是离不开库的. 什么是库呢?库也是一种程序,只不过与其他程序不同,库没有执行入口,不能独立运行,只能被其他独立运行的程序调用的时候才能执

linux的程序包管理-rpm

我们知道,程序就是指令加上数据的集合或者称为算法加上数据结构的集合.应用程序以源代码和二进制的形式存在:源代码是包含了整个应用程序的编程语言的所有代码的文本文件:二进制则是将源代码经过一系列的转换操作之后得到的可以直接执行的文件.    使用源代码安装应用程序的步骤为:预处理(预处理器) --> 编译(编译器) --> 字节码 --> 汇编(汇编器) --> 链接(链接器) --> 可以直接执行的二进制程序文件.当我们使用源代码安装应用程序时,不同操作系统的相同操作安装出来的

Linux中程序包管理

u    无论我们使用哪种操作系统,仅使用操作系统自带的程序包一般都满足不了我们的使用需求,所以我们都需要安装程序.这篇博文我们来讲解一下在Linux操作系统中我们该如何安装程序. 本篇文章会涉及rpm管理程序包.yum管理程序包.yum仓库的指定.自己编译源码安装程序.简要介绍一下该如何自己建立一个yum仓库给其他主机提供程序包. 一.rpm管理程序包 (1)如何获取安装包 1)系统发行版的光盘或者官方的文件服务器(或者镜像站点): http://mirrors.aliyun.com/ htt

Linux系统程序包管理

Linux程序包管理 API:Application Program Interface ABI:Application Binary INnterface Unix-like,系统上的二级制格式的应用程序文件格式为 ELF Windows系统的二级制格式的应用程序文件格式为: exe,msi 库级别的虚拟化: Linux:WinE,可以实现在Linux系统上运行Windows的二进制可执行程序 Windows:Cywin,可以实现在Windows系统上运行Linux的位二进制可执行程序 各种编

Linux下程序包管理工具RPM

实验环境: CentOS release 6.6 (Final)  一台 IP地址:172.16.249.230 RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在CentOS .Redhat.Fedora .SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用: 一.RPM程序包管理的用途: 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件:

Linux的程序包管理器(上)——rpm详解

在使用Linux操作系统的过程中,我们需要的一些服务(例如Nginx)并没有提供,需要用户自行安装相应的程序包,才能使用相应的服务.本文以CentOS6.6为例,分三小节为读者朋友们尽可能详细的讲解rpm.yum以及程序包的编译安装三种程序包的管理方法. rpm rpm包管理工具是Red Hat公司贡献的一款rpm程序包管理器,在RHEL.CentOS.Fedora.SUSE等主流发行版本中,被广泛使用. rpm包管理工具可用于安装,升级,卸载,重新安装程序:也可以用于查询当前系统上安装了哪些程

linux下程序包管理

我是一个老实人从来不说实话,我是一个好人从来不说真话,学习linux有段时间了,太高深的东西还不懂,就写一下最近学习的程序包管理吧. 大家都知道在我们学习linux主要是搞运维的,那么我们每天上班的时候就避免不了跟程序包打交道,你不信啊?反正我上班的时候领导总是在我不经意的抬头瞬间给我抛一个媚眼,我立马就领悟了领导的意思,有活要干了,最好不是服务器挂了老天保佑. 有时候我们需要在系统上安装某个软件或者服务(就是程序包),可能需要现在本地磁盘上查一下有没有这些程序包,有的话我们可以直接使用rpm