我的学习记录--Linux (CentOS) 程序安装包管理,rpm
概述:
因为一个应用程序是由很多文件所组成,所以安装卸载非常复杂,为了让用户更加方便的管理应用程序。所以引入了程序打包管理。主要包括:安装,卸载,升级,查询,检验。
常见的包管理器:
.deb: Debian研发
.rpm: Red Hat研发(Linux上的包管理器公共标准,故我学习的为rpm)
常见的CPU平台:(所以选择应用程序安装的时候,一定选择和自己CPU所匹配的版本)
x86:i386, i486, i586, i686
x86_64: x86_64, amd64
分包机制:
核心包:主包,主要程序。
子包:为程序增加附加功能的包。
程序包获取途径:(务必在正规渠道获得程序包)
1、系统的发行光盘镜像或官方站点(或镜像服务器)
推荐站点:
2、程序包的官方站点
3、可信任的第三方组织
4、程序包搜索引擎
推荐站点:
---------------------------------------------------------
准备实验环境:
1.准备CentOS6.6虚拟机
2.挂载CentOS6.6系统光盘DVD1
rpm命令:
安装:(安装新的程序包)
rpm -i [install-options] PACKAGE_FILE1 ...
-h:hash,以#号来表示安装进度
-v:显示安装过程中的详细信息
-vv:详细
-vvv:更详细
--test:不执行真正的安装过程,而仅报告依赖关系及冲突信息
程序包之间是存在依赖关系的:因为程序包是由众多目的单一的小程序组成,结果导致他们之间存在相关性,所以有时候安装某个程序的时候,它会提示你缺少某些包。如下:
--nodeps:忽略依赖关系(能安装成功,但未必能运行)
--replacepkgs:覆盖安装(重新安装,并覆盖原有文件)
--force:强制安装
升级:(升级已经安装的程序包)
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
-U:升级或安装(若已安装则升级,若未安装则安装)
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-F:仅升级
-v,-h,--test,--nodeps,--force 常用选项用法同上
--oldpackage:降级到旧版本
注意:
1.一定不要对内核执行升级!
2.一般来说升级不会覆盖用户修改过的配置文件,新配置文件名会加后缀(rpmnew)保存
卸载:(移除已经安装的程序包)
rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
rpm -e PACKAGE_NAME... :卸载,简单用法
--nodeps:忽略依赖关系
--test:卸载测试
--allmatches:若一个程序包安装有多个版本,则卸载所有版本
注意:若程序包配置文件曾被修改,卸载时,配置文件不会删除,会加后缀(rpmsave)保存
查询:(查询某包是否安装,以及检查安装的所有包,查看某包信息)
rpm {-q|--query} [select-options] [query-options] PACKAGE_NAME ...
[select-options]:
1.查询某包或某些包是否安装
rpm -q PACKAGE_NAME...
2.查询已经安装的所有包
rpm -qa
3.查询某文件是由哪个包安装生成(如:inittab这个文件则是由initscripts这个包生成)
rpm -qf /PATH/TO/SOMEFILE
4.查询尚未安装的包文件的相关信息
rpm -p (通常组合以下选项使用)
-pqi 未安装包简要信息
-pqc 未安装包生成的配置文件
-pql 未安装包将生成的文件列表
[query-options]:
1.查询某包的简要说明信息
rpm -qi PACKAGE_NAME
2.查询某包安装生成的文件列表
rpm -ql PACKAGE_NAME
3.查询某包安装完成后生成的配置文件
rpm -qc PACKAGE_NAME
4.查询某包安装完成后生成的帮助文件
rpm -qd PACKAGE_NAME
5.查看程序历史版本以及改版的信息
rpm -q --changelog PACKAGE_NAME
6.查询某包提供的capabilities(功能,能力)
rpm -q --provides PACKAGE_NAME
7.查询某包所依赖的capabilities(查询依赖关系)
rpm -q --requires PACKAGE_NAME
8.查询某包安装或卸载时执行的脚本
rpm -q --scripts PACKAGE_NAME
校验:(查询包安装生成的文件是否发生了改变)
rpm {-V|--verify} [select-options] [verify-options]
常见用法:rpm -V PACKAGE_NAME
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
U User ownership differs属主
G Group ownership differs属组
T mTime differs 修改时间
P caPabilities differ
程序包的合法性验证:
来源合法:
由我们信任的制作者提供
依赖于:制作者的数字签名;签名是作者使用自己的私钥加密程序包的特征码进行的;
内容合法:
包未被二次修改;完整性校验成功
依赖于:制作者提供的程序特征码:
验证方式:安装者用通用的特征码提取算法提取程序包的特征码,并与原作者提供的相比较;如果一样则说明内容合法;
验证其光盘中程序包的来源及完整性:
导入公钥:rpm -import /path/to/RPM-GPG-KEY-FILE
验证:rpm {-K|--checksig} PACKAGE FILE
--nosignnature:不检查来源合法性
--nodigest:不检查完整性
rpm管理器数据库:/var/lib/rpm(每安装一个程序,安装信息都会存放在此目录下)
重建数据库:
--initdb:初始化数据库,即数据库完全不存在,可新建之;
--rebuilddb:无论当前数据存在否,都会直接重建此库;
本文出自 “Linux” 博客,请务必保留此出处http://laoliao.blog.51cto.com/10027070/1631414
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。