1.rpm的功能
rpm :程序包管理器
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便的实现程序包的安装、升级、卸载、查询等操作。
源代码-->目标二进制格式-->组织成为一个或有限几个“包”文件
1.程序包的组成清单(每个程序包都单独实现)
文件清单
安装或卸载时运行的脚本
2.数据库(公共)
程序包的名称和版本
依赖关系:
功能说明
安装生成的各文件的文件路径及校验码信息
...
2.rpm的命名格式
name-VERSION-release.arch.rpm
name:软件包名称。
version:带有主、次和修订的软件包版本。
release: rpm包的发行号
arch:硬件平台。硬件平台包括了:i586、i686、x86_64、ppc、sparc、alpha...
例: zenity-3.8.0-4.el7.x86_64.rpm
zenity: 软件名称
3.8.0: 软件版本
4.e17: 发行号和适用于centos7
x86_64: 适用于x86_64的硬件平台
3.rpm命令用法
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
安装: -i,--install
升级: -U,--update,-F,--freshen
卸载: -e,--erase
查询: -q,--query
校验: -V,--verify
数据库维护:--builddb,--initdb
GENERAL OPTIONS:
-v:verbose,详细信息
-vv:更详细的输出
(1)安装
rpm {-i|--install} [install-options] PACKAGE_FILE ...
[install-options]:
-h :hash marks输出进度条;每个#表示%2的进度
--test :测试安装,检查并报告依赖关系及冲突消息等
--nodeps :忽略依赖关系,不建议使用
--replacepkgs :重新安装
--nosignature :不检查包签名信息,不检查来源合法性
--nodigest :不检查包完整性信息
例:
注意:rpm可以自带脚本
分为四类:--noscripts(不运行脚本)
preinstall:安装过程开始之前运行的脚本,%pre ,--nopre
postinstall:安装过程完成之后运行的脚本,%post ,--nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun ,--nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun
(2)升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
[install-options]
-U :升级或安装
-F :升级
--oldpackage :降级
--force :强制升级
例:
注意:
a. 不要对内核做升级操作,Linux支持多内核版本并存,因此,直接安装新版本内核
b. 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供
(3)卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
--allmatches :卸载所有匹配指定名称的程序包的所有版本
--nodeps :忽略依赖关系
--test :测试卸载,dry run模式
例:
(4)查询
rpm {-q|--query} [select-options] [query-options]
-q 查询指定的程序包是否已经安装,会显示详细信息
[select-options]
PACKAGE_NAME :查询指定的程序包是否已经安装,及其版本
-a,--all :查询所有已经安装过的包
-f FILE,--file :查询指定的文件由那个程序包安装生成
-p, --package : 用于实现对未安装的程序包执行查询操作
--whatprovides CAPABILITY :查询指定CAPABILITY由那个程序包提供
--whatrequires CAPABILITY :查询指定的CAPABILITY被那个包所依赖
[query-options]
--changelog :查询rpm包的changelog
-l, --list :程序包安装生成了哪些文件列表
-i, --info :程序包相关的信息,版本号、大小、所属的包组等...
-c, --configfiles :查询指定的程序提供的配置文件
-d, --docfiles :查询指定的程序包提供的文档
--provides:列出指定的程序包提供的所有的CAPABILITY(功能)
-R, --requires :查询指定程序包的依赖关系
--scripts :查看程序包自带的脚本片断
例:
(5)校验:
rpm {-V|--verify} [select-options] [verify-options]
例:
对于linux来讲,没有消息就是最好的消息。
如果出现消息请参考:
S file Size differs -->文件大小发生改变
M Mode differs (includes permissions and file type)-->权限改变
5 digest (formerly MD5 sum) differs --> 完整性发生改变
D Device major/minor number mismatch --> 主次设备号不匹配
L readLink(2) path mismatch --> readLink路径不匹配
U User ownership differs --> 属主改变
G Group ownership differs --> 属组改变
T mTime differs --> 时间戳改变
P caPabilities differ -->功能不同
注意:
a.安装此组织签名的程序时,会自动执行验证
b.手动验证:rpm -K PACKAGE_FILE
(6)数据库重建
rpm {--initdb|--rebuilddb}[--dbpath DIRECTORY][--root DIRECTORY]
--initdb :初始化数据库,当前无任何数据库可初始化创建一个新的,当前有时不执行任何操作
--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建
rpm管理器数据库路径/var/lib/rpm/
一般查询操作都是通过此处的数据库进行
4.rpm包的获取方式
(1)系统发行版的光盘或官方的文件服务器(或镜像站点)
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2)项目的官方站点
(3)第三方组织
EPEL:
搜索引擎:
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
(4)自己动手,丰衣足食
转载于:https://blog.51cto.com/ch666/1752103