RPM, Redhat Package Manager
程序包管理器功能: 编译好的应用程序的个组成文件,打包成一个或几个程序包文件,从而更方便快捷地实现程序包的安装、升级、卸载的管理操作。
rpm 包命名格式:
name-VERSION-release.arch.rpm
VERSION: major.minor.release
release.arch: rpm 包的发行号
archetecture:i386,x64,ppc,noarch
例如:redis-3.0.2.1-centos7.x64.rpm
自动解决依赖关系:
- yum:rhel 系列系统上 rpm 包管理器的前端工具
- apt-get(apt-cache):deb 包管理器的前端工具
- zypper:suse 的 rmp 包管理器的前端工具
rpm [OPTIONS] [PACKAGE_FILE]
安装:-I,--install
升级:-U,--update,-F,--freshen
卸载:-e,--erase
查询:-q,--query
校验:-V,---verify
数据库维护:--builddb,--initdb
general options:
-v:verbose,详细信息
-vv:更详细的信息
安装 install
rpm {-i|–install} [install-options] PACKAGE_FILE … (man 文档 29% 左右位置)
~]# rpm -ivh PACKAGE_FILE...
[install-options]:
-h:hash marks 输出进度条,每个#表示 2% 的进度
--test:测试安装,检查并报告依赖关系及冲突消息
--nodeps:忽略依赖关系,不建议使用
--replacepkgs:重新安装
升级/更新 update/freshen
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
-U 意为升级或安装
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
-F 只升级不安装
--oldpackage:降级
--force:强制升级
卸载 erase
rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–test] PACKAGE_NAME …
--allmatches:卸载所有匹配到指定名称的程序包各版本
--nodeps:忽略依赖关系
--test:测试卸载,dry run 模式
查询 query
rpm 在查询时是在 /var/lib/rpm/ 目录下的数据库文件中。
rpm {-q|–query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装
-a,-all:查询所有已经安装的包;可配合 grep 使用
-f FILE:查询指定的文件由哪个程序包安装生成
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作,查看 rpm 文件内容
--whatprovides CAPABLITY:查询指定的 CAPABILITY 由哪个程序包提供
--whatrequires CAPABILITY:查询指定的 CAPABILITY 被哪个包所依赖
[query-options]
--changelog:查询 rpm 包的 changelog
-l,--list:程序包安装生成的所有文件的列表
-i,--info:程序包相关的信息
-c,--configfiles:查询指定的程序包的配置文件
-d,--docfiles:查询指定的程序包提供的帮助文档
--provides:列出指定的程序包提供的所有 capability
--scripts:查看程序包自带的脚本片断
练习:查找系统中以 a 开头的软件
~]# rpm -qa | grep “^a” | wc -l
校验 verify
通过对比 /var/lib/rpm 目录下的数据库文件,找出目前环境下安装的软件。
rpm {-V|–verify} [select-options] [verify-options]
-V PACKAGE_NAME:若该软件被改动过,则会列出来
-Va:查询系统上所有被改动过的文件
-Vf:某个文件是否被改动过
例如:首先我们修改/etc/crontab 文件,新增一行 # new line. 保存并退出,而后执行命令
rpm -Vf /etc/crontab
# 输出如下
S.5....T. c /etc/crontab
解释说明:中间的 c 代表 configuration,以为配置文件。前面字符意为:
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
获取并导入信任的制作者的秘钥:对于 CentOS 发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum,Yellowdog Update Modifier
yum [options] [command] [package …]
先介绍 yum 的命令行选项:
-y:自动回答都为 yes
-q:静默模式
查询
search:搜寻某个软件名称或者是符合描述的字符串
list :列出目前 yum 所管理的所有的软件名称与版本,类似 rpm -qa
info :同上,不过有点类似 rpm -qai 的执行结果
provides:从文件去搜寻软件,类似 rpm -qf 的功能,即查看指定的特性是由哪个程序包提供
安装升级、移除
yum install package1 [package2] […]
yum update package1 [package2] […]
yum remove | erase package1 [package2] […]
yum 的软件群组功能
yum [群组功能] [软件群组]
选项与参数:
grouplist :列出所有可使用的“软件群组组”,例如 Development Tools
groupinfo :后面接 group_name,则可了解该 group 内含的所有软件名
groupinstall:安装一整组的软件群组
groupremove :移除某个软件群组