Linux程序包管理--rpm和yum的原理和基本用法

Linux中的程序包主要分为两类: 二进制可执行安装包和源代码程序文件包. 本文主要讲解使用rpm程序包管理器和yum管理器前端工具来实现对二进制可执行安装包的安装, 查询, 升级和卸载等相关操作.

Linux中在二进制可执行安装程序包安装上会涉及多个文件的操作, 操作过程就会比较复杂, 为简化该过程就使用程序安装包管理器来管理程序包的安装过程, 大大简化了程序包安装过程.

Linux根据发行版本不同, 使用不同的程序包管理器实现对程序包的管理, 在这里主要介绍两大分支:

debian: 使用dpt管理器, 使用deb作为管理器前端工具, 程序包文件格式为deb

redhat: 使用rpm管理器, 使用yum作为管理器前端工具, 程序包文件格式为rpm

# 注意: deb前端工具和deb格式程序包在具体环境下的区别, rpm管理器和rpm格式程序包同理.

rpm程序包制作和安装过程:

rpm包制作者将软件源码在特定硬件环境和操作系统发行版上进行编译, 将源码文件编译成为二进制可执行程序文件, 并且生成软件本身默认的数据库文件, 其中记录了安装该软件时必备的依赖软件, 将可执行程序文件和数据库文件打包生成rpm格式的安装包

rpm包命名方式

name - VERSION - ARCH . rpm 

VERSION = major . minor . release  与源码包VERSION相同

ARCH = release . [OS] . arch

release是指rpm的release, rpm进行编译释放后的版本

OS指在进行编译时操作系统的类型

arch是指编译时的硬件环境, 一般使用CPU类型指代

rpm使用者安装rpm包时, 主机中的rpm包管理软件(dpt或rpm)会根据软件包里的数据库文件查看依赖软件是否满足:

条件满足时则进行安装, 并将软件信息写入本地rpm管理软件的数据库(/var/lib/rpm目录)中, 方便后续对软件的查询,验证和升级等操作

条件不满足时则无法安装, ==> 需要使用yum来进行安装(稍后进行讨论)

rpm程序包的主要限制

1. 软件安装的环境必须与rpm包制作时的环境相同

2. 需要满足软件之间的依赖性要求

rpm程序包管理器命令rpm使用方法:

通用选项:

-v: 显示安装过程

-h: 以#形式显示安装进度

因为rpm命令使用环境较多, 在不同环境模式下有不同的语法格式

a. 安装模式

语法: rpm {-i|--install} [install-options] PACKAGE_FILE ...

作用: 用于安装程序包

install-options安装选项:

--test: 测试安装,但不真正执行安装过程;dry run模式;

--nodeps:忽略依赖关系;

--replacepkgs: 重新安装;

--nosignature: 不检查来源合法性;

--nodigest:不检查包完整性;

EX: rpm -ivh PACKAGE_FILE 以过程和进度方式显示安装程序包

b. 升级模式

语法: 

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 旧版存在则进行升级; 旧版本不存在则进行安装

rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 只有已安装旧版本情况下才进行对旧版本升作用: 升级程序包

install-options升级选项:

--oldpackage:降级;

--force: 强行升级;

c. 查询模式

语法: rpm {-q|--query} [select-options] [query-options]

作用: 用于显示程序包相关信息, 查询已安装rpm包时不需要使用版本号, 查询未安装rpm包时需要使用版本号

select-options选择选项:

-a: 所有包

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

-p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

query-options查询选项:

--changelog:查询rpm包的changlog

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

-d: 查询程序的文档

-i: information

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

--scripts:程序包自带的脚本片断

-R: 查询指定的程序包所依赖的CAPABILITY;

--provides: 列出指定程序包所提供的CAPABILITY;

d. 卸载模式

语法: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

作用: 用于卸载指定程序包

选项:

--noreps: 忽略依赖关系进行卸载

e. 校验模式

语法: rpm {-V|--verify} [select-options] [verify-options]

作用: 用于验证程序包完整性

校验模式的输出字段意义:

S: 文件的容量大小是否改变

M: 文件的类型或文件rwx属性是否改变

5: MD5指纹码是否改变

D: 设备的主次代码是否改变

L: 链接路径是否改变

U: 文件的属主是否改变

G: 文件的属组是否改变

T: 文件的mtime是否改变

P: 功能是否发生改变

# 使用rpm安装时需要先导入密钥, 通过 rpm --import /PATH/GPGKEY 导入软件公钥, 在通过查看和比对公钥信息来验证程序包的来源合法性

以上是rpm程序包管理相关的原理和基本操作

=============================================================

yum程序包安装原理

yum作为rpm的前端管理工具, 主要实现是在安装程序包时, 通过程序包间的依赖关系, 获取得到该程序包的所有依赖性程序包, 从而实现该程序包的成功安装

# yum通过依赖rpm程序包管理器, 实现了rpm程序包管理器在功能上的扩展, 因此yum是不能脱离rpm而独立运行的

yum功能上的实现原理

yum可以看作是CS架构的软件

Server端先对程序包进行分类后存储到不同repository容器中; 再通过收集到大量的rpm的数据库文件中程序包之间的依赖关系数据, 生成对应的依赖关系和所需文件在本地的存放位置的说明文件(.xml格式), 存放在本地的repodata目录下供Client端取用

Cilent端通过yum命令安装软件时发现缺少某些依赖性程序包, Client会根据本地的配置文件(/etc/repodata.d/SERVER.repo)找到指定的Server端, 从Server端repo目录下获取说明文件xxx.xml后存储在本地/var/cache/yum中方便以后读取, 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置, 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装

yum Client 配置文件说明

用户可以在本地系统的/etc/yum.repos.d/目录下编辑配置文件*.repo, 用于指定yum Server, 一个文件中可以指定多个Server通过Repo_ID来进行区别, 因此同一文件中的不同Repo_ID不能重名

[Repo_ID]	    # epo 仓库的唯一标识符,不要在同一文件中有重名IDname=Description	# 用于描述repo的简要信息baseurl=ftp://|http://|file:///PATH/TO/PAKS    # Server端repodata目录所在的具体路径, 支持三种路径格式 ftp, http, file(本地路径): ftp://, http://, file:///enabled={1|0}    # 表示是否启用该repo, 默认为关闭gpgcheck={1|0}	# 表示是否验证 rpm 包的合法性,如果启用必须填写 gpgkey 字段, 默认启用gpgkey=ftp://|http://|file:///PATH/TO/KEY    # gpgkey文件所在的具体路径

yum程序包管理前端工具命令yum使用方法:

yum命令使用环境较多, 在不同环境模式下有不同的语法格式

a. 查询模式语法: 

yum repolist [all|enabled|disabled] 显示本地repo文件中的yum仓库信息

yum list {available|installed|updates} [glob_exp1] [...] 根据状态查询相关程序包

yum info [...]    查看程序包信息

yum provides | whatprovides feature1 [feature2] [...]    查看指定的特性或文件由哪个程序包所提供

yum deplist package1 [package2] [...]    查看指定包所依赖的capabilities

b. 安装模式语法: 

yum install package1 [package2] [...] 安装指定程序包

yum reinstall package1 [package2] [...]  重新安装指定程序包

c. 升级模式语法:

yum check-update    检查可用升级

yum update [package1] [package2] [...] 升级指定程序包

yum downgrade package1 [package2] [...] 降级指定程序包

d. 卸载模式语法:

yum remove | erase package1 [package2] [...]    卸载指定程序包

e. 清理模式语法:

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]    根据条件清理指定数据

f. 包组管理语法

yum grouplist [hidden] [groupwildcard] [...]    列出指定程序安装包组信息

yum groupinfo group1 [...]    查看指定程序安装组信息

yum groupinstall group1 [group2] [...]    安装指定的程序安装包组

yum groupupdate group1 [group2] [...]    升级指定程序安装包组

yum groupremove group1 [group2] [...]    卸载指定程序安装组

以上是yum程序包管理前端工具相关的原理和基本操作

本人水平有限, 如有理解不当的地方, 请大家给予指正, 非常感谢!

时间: 2024-11-16 09:30:52

Linux程序包管理--rpm和yum的原理和基本用法的相关文章

Linux程序包管理rpm与yum

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.  

学习笔记之Linux程序包管理rpm、yum、编译

无论是Windows系统还是Linux系统,我们用户想要在操作系统上获得更多的乐趣还是更多的功能的话,就需要在一个干净的系统上安装各式各样的软件程序,Linux上的是ELF格式的,目前比较常见的程序包管理器如: Redhat软件包管理器---rpm Debian软件包管理器---dpkg 一.1.RPM 安装:rpm {-i|--install} [install-options] PACKAGE_FILE... -v: verbose,详细信息 -vv: 更详细的输出 -h: hashmark

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux 程序包管理 rpm yum dnf

Linux程序包管理: 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验) 目前Linux中最常见有两种常用工具 deb:debian Linux使用 包括ubuntu rpm:Redhat Package Manager ,Centos等在使用 程序包的组成: 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin 库文件: /lib64, /usr/64 配置文件:/etc 帮助文件:manual, info 包管理器: 打包:将源文件,一个一个单一的归档文

程序包管理rpm、yum与简单编译安装程序

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档. ?

程序包管理rpm和yum

Linux程序包管理: API:Application Programming Interface源码包 POSIX:Portable OS 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface二进制包 Windows与Linux不兼容 库级别的虚拟化: Linux: WINE ELF Windows: Cywin exe,msl 系统级开发 : 性能要求高 C/C++/

程序包管理RPM、YUM及源代码编译

一.YUM YUM: Yellowdog Update Modifier.YUM是通过分析RPM的标题相关数据后,根据软件的相关性制作出的软件安装时属性依赖的解决方案,其可以自动处理软件之间的依赖问题,以尽量方便用户解决软件在安装.删除或升级的问题. YUM分为YUM客户端和YUM服务器,而我们经常使用到的就是客户端. 客户端的配置文件分两种: /etc/yum.config:为所有的仓库提供公共的配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置 我们在安装软件时通常使

Linux程序包管理--源码编译的原理和基本方法

Linux中使用rpm格式的程序文件包来安装是比较方便的方法, 但是有一部分程序文件包没有rpm包格式, 这时就需要用户自己手工编译源码包来进行安装. 文本主要讲解源码编译的原理和基本操作过程. 源码包命名方式 name - VERSION . tar . gz 其中: VERSION = major . minor . release major表示主版本号, 经过比较大的改进 minor表示次版本号, 改进比较小 release表示对一些bug进行修复 源码包编译过程 源码包是指经过程序员编

linux程序包管理 rpm yum 编译

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE] 安装:-i, --install 升级:-U, --update, -F, --freshen 卸载:-e, --erase 查询:-q, --query 校验:-V, --verify 数据库维护:--builddb, --initdb 安装:rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm  -ivh  PACKAGE_FILE ... GENERAL