软件包管理器其本身也是一个软件,其核心功能是:制作、安装、卸载、升级、查询、校验软件包等;
在红帽中使用RMP软件包管理器,以及更加高端的YUM软件包管理器,本文就详细介绍一下这两个软件包管理器的用法。
1、rpm命令的使用:
Rpm本身也是一个软件包,其背后有一个庞大的数据库:/var/lib/rpm
Rpm的主要功能有安装、查询、卸载、升级、校验、数据库的重建、验证数据包等;
安装软件包的原则:
1)、软件包本身是合法的;
2)、软件包是完整的
2、rpm命名
1)、包的组成成分:
主包:
bind-9.7.1-1.e15.i586.epm
子包:
bind-libs-9.7.1-1.e15.i586.epm
其中bind-libs叫做包名
2)、包名格式:
name-version- release.arch.rpm
bind-major.minor.release-release.arch.rpm
包名 主版本号 次版本号 发行号
主版本号:重大改变
次版本号:某个子功能发生重大变化
发行号:修正了部分bug,调整了一点功能
bind-9.7.1.tar.gz 原版本号
3、rpm的安装
rpm -i /PATH/TO/PACKAGE_FILE
-h:以#显示进度,每个#表示2%;
-v:显示详细过程
-vv:显示更详细过程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps:忽略依赖关系
--replacepkgs:重新安装,替换原有安装:
--replacefiles:替换文件
--force:强行安装,可以实现重装或降级;
4、rpm的查询
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 查询包安装后生成文件列表
5、rpm升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:
如果装有老版本的,则升级,否则,就安装
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:
如果装有老版本的,则升级,否则,退出
--oldpackage:降级
6、rpm卸载
rpm -e PACKAGE_NAME
如果某软件包被其他包所依赖是不允许卸载的。
-nodeps 卸载后没有信息
7、rpm校验
rpm -V PACKAGE_NAME
8、重建数据库
rpm
--rebuilddb:重建数据库,一定会重新建立;
--initdb:初始化数据库,没有才建立,有就不用建立
9、检验来源合法性,及软件包完整性;
加密类型:
对称:加密解密使用同一个密钥
公钥:一堆密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去
单向:
#ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /PAPT/TO/PACKAGE_FILE
dsa,gpg:验证来源合法性,也即验证签名;可以使用--nosignature,略过此项
shal,md5: 验证软件包完整性;可以使用--nodigest,略过此项
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥文件
**********补充
RPM安装:
二进制格式:
源程序-->编译-->二进制格式
有些特性是编译选定的,如果编译未选定此特性,将无法使用;
rpm包的版本会落后于源码包,甚至落后很多;
1、依赖关系:
C/S: Client,Server
yum整个工作是依赖yum仓库的。叫做-----yum repository
文件服务:FTP /Web /FILE
2、Client
1)、 配置文件
核心是yum仓库
元数据文件:创建命令是 createrepo
* yum所依赖的不是一个特定的包,而是一种能力;
2)、 yum仓库中的元数据文件:
primary.xml.gz
当前仓库所有RPM包的列表
flielists.xml.gz
当前仓库中所有RPM包的所有文件列表;
other.xml.gz
额外信息,rpm 包的修改日志;
ropomd.xml
记录的是上面三个文件的时间戳和校验和;
3、如何为yum定义repo文件
[Repo_ID]
name-description
baseurl=
ftp://
http://
file:/// 注意:三个斜杠不是语法错误,而是在本地路径下的根
enabled={1|0}
gpgcheck={1|0} 这两个都默认是1
gpgkey=
yum [options] [command] [package...]
-y :自动回答为yes
--nogpgcheck: 不做gpg检查
4、list: 列表
支持glob
all: 所有的
available:所有可用的,仓库中有,但还没安装的
nstalled:已经安装的
updates:可用的升级
yum clean : 清理缓存
[ packages | headers metadata | dbcache | all ]
5、repolist:显示repo列表及其简要信息
all
enanled 默认
disabled
1)、 install: 安装
yum install package_name
2)、 update:升级
update_to:升级指定版本
3)、 remove | erase :卸载
6、如何创建yum仓库:
yum install createrepo:先安装yum命令
mkdir -pv /yum/VT
cp /media/cdrom/VT/*rph /yum/VT
createrepo /yum/VT:创建yum源
再在/etc/yum.repos.d 创建yum配置文件组
元数据文件comps-rehl5-vt.xml /root