rpm软件包管理器和yum软件包管理器是我们在对于软件包相关操作时经常使用的管理软件,yum属于软件包管理器的前端工具,而rpm属于软件包管理器的后端工具,前端工具是依赖于后端工具。要想解决对软件包管理先从后端工具开始,了解后端工具的劣势。下面我们将从几个部分了解软件包管理器。
第一部分:
1) 软件包管理器功能:
A
、把二进制程序、库文件、配置文件、帮助文件打包成一个文件;
B
、生成软件包数据库并追踪所安装的每一个文件;
2) 软件包管理器的核心功能:
A
、制作软件包;
B
、安装、卸载、升级、查询、校验;
第二部分:
1) 什么是RPM
RPM是一个开放的软件包管理器,最初的全称是
Redhat Package Manager,它工作于Red Hat Linux以及其它Linux系统,成为了Linux中公认的软件包管理标准。
2)RPM的功能
安装、查询、卸载、升级、校验、数据库的重建、验证数据包等工作;
3) RPM的命名格式
name-version-release.arch.rpm
例:bind-主版本号.次版本号.修正号-发行号.arch.rpm
bind:软件包包名
主版本号:软件内容发生重大改进会修改主版本号
次版本号:软件内容的某个子功能发生重大变化会修改次版本号
发行号:修正了部分bug,调整了一点功能会修改发行号
arch:表示为arch平台架构
rpm:软件包扩展名
4) rpm命令功能使用举例
A、安装
安装之前进入ftp服务器中,下载所需要的软件包到本地,下面是如何下载到本地具体操作
rpm -i /PATH/TO/PACKAGE_FILE
短选项:
-h:会以#显示进度,每个#表示安装进度为2%
-v:显示详细信息
-vv:显示更详细信息
rpm –ivh /PATH/TO/PACKAGE_FILE【各种短选项可以相互结合使用】
长选项:
--nodeps:忽略依赖关系
--replacepkgs:重新安装,替换原有安装
--force:强行安装,可以实现重新或降级安装
--test:仅测试软件包,不会进行安装
B、查询
rpm –q PACKAGE_NAME:查看指定的包是否已安装
rpm -qa:查询已经安装的所有包
rpm -qi PACKAGE_NAME:查询指定包的说明信息;
rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件列表;
rpm -qc PACKAGE_NAME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本;
rpm -qf /path/to/somefile:查询指定的文件是由哪个rpm包安装生成的;
如果某个rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl /PATH/TO/PACKAGE_FILE
C、升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级,否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级,否则,退出
--oldpackage:降级,经常与-Uvh、-Fvh一起使用
D、卸载
rpm -e PACKAGE_NAME
没有信息提示,表示卸载完成
E、校验【查看文件是否被非法改变过】
rpm -V PACKAGE_NAME
如果校验一切正常,将没有输出,反之则输出不一致结果,格式为:
######## 文件名【每一个#代表一个字符】
字段1有8个字符组成,每个字符指明该文件与RPM数据库中一致或不一致的地方,单个点(.)说明没有异常,具体含义如下:
5-校验和
S-文件大小
L-符合连接
T-文件修改时间
D-设备
U-用户
G-组
M-文件模式
?-文件不可读
F、重建数据库
rpm
--rebuilddb:重建数据库【无论有没有,一定会重新建立】
--initdb:初始化数据库【没有才建立,有就不用建立】
G、检验来源合法性,及软件包完整性;
实现检验过程:rpm包后跟128位的md5
码
à使用私钥进行加密
à然后使用公钥进行解密
à再对rpm进行加解密
à把rpm解密的密码与公钥解密比对是否一致
若比对不一致时,导入密钥文件:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
使用该命令检验软件包文件:rpm -K /PAPT/TO/PACKAGE_FILE
第三部分:
1)为什么使用yum软件包管理器
rpm包的安装有一个很大的缺点就是
文件的关联性太大,有时候装一个软件要安装很多其它的软件包,很麻烦,所以为此RedHat开发了yum安装方法,可以彻底解决关联性的问题。
2)什么是yum
yum是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐的一次次下载、安装。yum是基于yum数据库,它所支持的文件服务有三种,可以使用ftp、web,还可以使用本地文件file。yum实际是存储rpm包的仓库,它有一个缓存,缓存yum仓库中的元数据文件。
3)yum仓库中的元数据文件:
A、primary.xml.gz的功能:
当前仓库所有RPM包的列表:
还包含依赖关系
每一个RPM安装生成的文件列表
B、filelists.xml.gz的功能:
当前仓库内所有RPM包的所有文件列表;
C、other.xml.gz的功能:
额外信息,比如:RPM包的修改日志
D、repomd.xml的功能:
记录的是上面三个文件的时间戳和校验和
E、comps*.xml:RPM包分组信息,分组信息要自己定义
5) 如何为yum定义repo文件
[Repo_ID]:仓库ID;标识符
name=Description【描述符】
baseurl=仓库具体的所在路径
ftp://【这两个//表示转义符】
http://【这两个//表示转义符】
file:///【后一个/表示本地路径的根】
enabled={1|0},默认为1【表示当前仓库是否被使用】
gpgcheck={1|0},【是否以gpg格式来验证数据的完整性】如果为1时,必须指定gpgkey=file的具体路径
gpgkey=【表示gpg具体的指定路径】这个路径可能在ftp、web上,也可能在本地路径上,要指定清楚
6) yum所支持的命令类型
格式:yum [options] [command] [package...]
-y:自动回答为yes
--nogpgcheck:不做gpg检查
A、list:表示列表【下面选项支持glob通配符】
all:默认为all,所有列表
available:可用的,仓库中有但尚未安装的
installed:已经安装的
updates:可用的升级
B、clean:清理缓存
packages:清理rpm包
metadata:元数据文件
dbcache:备缓存
all:清理所有
C、repolist:显示repo列表及其简要信息
all:表示所有的repo列表
enabled:显示启用的repo列表
disabled:显示禁用的repo列表
D、install:安装
格式:yum install PACKAGE_NAME【也可安装多个,使用install后跟软件包名】
localinstall:本地安装,在本地安装时后跟软件包
E、reinstall:重新安装
F、update:升级
G、update_to:升级为指定版本,如果不指定则默认为update命令
H、remove|erase:卸载
I、info相当于rpm -qi
J、provides|whatprovides相当于rpm -qf:查看指定的文件或特性是由哪个包安装生成的;
与组相关:
grouplist:列出group所有组
groupinfo:显示组的详细信息,后跟组名时使用“”
groupinstall:安装组,可以同时安装多个组,之间不能有空格,同时组名用“”引起来
groupupdate:组更新
groupremove:组卸载
本文出自 “奋斗的小鸟” 博客,谢绝转载!