admin管理员组文章数量:1566678
软件包管理
知识点
- 使用RPM和YUM安装、卸载升级和删除包
- 建立yum仓库及客户端配置文件
- 源码编译安装
1. 包管理简介
过去,许多 Linux 程序以源代码的形式发行,用户把源代码构建为所需的程序或程序集;源代码还附带必需的手册页、配置文件等等。现在,大多数 Linux 发行商使用称为包 的预构建的程序或程序集,包便于在发行版上安装。
1.1 包的安装方式
- 二进制安装
- rpm包管理(RPM Package Manager)
- yum管理(Yellowdog Update Modifier)
- 源码编译
- 编译安装
1.2软件运行
ABI :应用程序要在某程序上 运行,应用程序必须满足此操作系统的接口,这个接口就是ABI接口。Win和Linux不兼容。
- Windows:PE(Portable Executable)接口
- LINUX:ELF(Executable and Linkable Format)
API 应用程序开发接口,调用库文件
-
POSIX:(Portable Operating System Interface of UNIX)IEEE在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称
###1.3程序编译
程序源代码→预处理→编译→汇编→链接 -
预处理:将源代码简单处理,例如宏定义、#include文件包含、条件编译、特殊符号
-
编译:由编译器将c源代码转变成汇编代码
-
汇编:由汇编器将汇编代码转变成目标代码
-
链接:由链接器将代码在执行过程用到的其他目标代码和库文件链接成为一个可执行程序也就是目标程序。
链接处理分类
链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动态链接
-
静态链接
1、把程序对应的依赖库复制一份到包
2、libxxx.a
3、嵌入程序包
4、升级难,需重新编译
5、占用较多空间,迁移容易 -
动态链接
1、只把依赖加做一个动态链接
2、libxxx.so
3、连接指向,包只记录依赖对象的名字及少量登记信息
4、占用较少空间,升级方便
1.4 包管理器
- 二进制应用程序的组成部分
二进制文件、库文件、配置文件、帮助文件 - 程序包管理器种类
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
2. rpm
原名Redhat Package Manager ,推广后改名为 RPM Package Manager
-
包管理器功能
将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作 -
包文件组成(每个包独有)
- RPM包内的文件
- RPM的元数据,如名称,版本,依赖性,描述等
- 安装或卸载时运行的脚本
-
数据库(公共):/var/lib/rpm
初始数据库,每个包解压后的初始状态如属性、大小、权限等,以后可以比较初始安装与目前状态的比较,做安全检查。- 程序包名称及版本 ,属性,大小,权限等
- 依赖关系
- 功能说明
- 包安装后生产的各文件路径及校验码信息
-
管理程序包的方式:
使用包管理器:rpm,前提是要有rpm包,安装卸载等
使用前端工具:yum,dnf -
程序包的来源
- 系统发版的光盘或官方的服务器
CentOS镜像
https://www.centos.ort/download.
http://mirrors.aliyun
http://mirrors.sohu
http://mirrors.163 - 项目官方站点
- 第三方组织
Fedora-EPEL:(Extra Packages for Enterprise Linux)红帽组织的第三方相对比较稳定的包 - 自己制作
注意:第三方建议要检查其合法性、开源合法性,程序包的完整性
- 系统发版的光盘或官方的服务器
2.1 包命名
-
源代码命名
name-VERSION.tar.gz|bz2|xz
例如:linux-4.18.5.tar.xz- VERSION(版本号):major.minor.release
- major(主版本号):重要变更或升级
- minor(次版本号):对系统有优化,不多,
- release(最次版本号):修复BUG
- VERSION(版本号):major.minor.release
-
rpm包命名方式:
name-VERSION-release.arch.rpm
例:bash-4.2.46-19.el7.x86_64.rpm- name
软件名:bash
版本号:4.2.46(主、次、最次) - VERSION-release
编译的版本号:19编译19次
el7代表:红帽rhel版本号 - arch
cpu架构:x86_64 noarch(通用的架构)
- name
-
包分类
- Application-VERSION-ARCH.rpm:主包
- Application-devel-VERSION-ARCH.rpm开发子包。软件过于复杂,都放在一起用起来太臃肿,会分成主包、子包(如手册、开发、工具包等)
- Application-utils-VERSION-ARCH.rpm其他子包
- Application-libs-VERSION-ARCH.rpm其他子包
-
包依赖性
- 包之间可能存在依赖关系,甚至循环依赖
- 解决依赖包管理工具
- yum: rpm包管理器的前端工具
- apt-get: deb包管理器前端工具
- zypper: suse上的rpm前端管理工具
- dnf:(yum的升级版)Fedora 18+ rpm包管理器前端管理工具
3. rpm命令
CentOS系统上使用rpm命令管理程序包,这里将其选项大致分三组:
- 用于查询和检查包
- 用于安装、升级和卸载包
- 用于执行其他功能如校验、数据库维护
这里重点学习前两组命令选项
3.1 安装
软件包安装时往往还需要各种依赖包,rpm命令安装某个软件时,它是知道需要依赖哪些包的,只是并不会帮助我们解决依赖问题,需要我们自己来一个个获取依赖包,知道满足安装条件。这个问题后续的yum工具可以解决,这里先来了解rpm的用法。
-
格式
rpm {-ivh} [install-options] PACKAGE_FILE… -
选项
-i:–install安装
-v:查看更详细的安装信息
-vv:比v更详细的信息
-h:以#显示程序包管理执行进度 -
[install-options]
–test:测试安装,但不真正执行安装,即dry run模式
–nodeps:忽略依赖关系,强行安装,但是不能用
–replacepkgs:适用于原来的文件遭到破坏,重新安装覆盖
–force:与–replacepkgs作用相同
–replacefiles:例如安装同一个程序2个版本时,
版权声明:本文标题:Linux学习15-软件包管理rpm、yum及源码编译安装 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727548434a1120362.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论