软件包管理
程序组成部分:
二进制程序
库
配置文件
帮助文件
软件包管理器的核心功能:
制作软件包;
安装、卸载、升级、查询、校验;
rpm 和 yum
rpm命名:
包:组成部分
主包:
bind-9.7.1-1.el5.i586.rpm
子包:
bind-libs-9.7.1-1.el5.i586.rpm
bind-utils-9.7.1-1.el5.i586.rpm
包名格式:
name-version-release.arch.rpm
bind-major.minor.release-release.arch.rpm
yum是解决rpm依赖关系的前端工具
rpm
安装
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#显示进度;每个#表示2%;
-v: 显示详细过程
-vv: 更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps: 忽略依赖关系;
--replacepkgs: 重新安装,替换原有安装;
--force: 强行安装,可以实现重装或降级;
查询
rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
rpm -qa : 查询已经安装的所有包
rpm -qi PACKAGE_NAME: 查询指定包的说明信息;
rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;
rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;
如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl
升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;
--oldpackage: 降级
卸载
rpm -e PACKAGE_NAME
--nodeps
重建数据库
rpm
--rebuilddb:重建数据组
--initdb:初始化数据率
校验
rpm -V PACKAGE_NAME
检验来源合法性,及软件包完整性;
加密类型:
对称:加密解密使用同一个密钥
公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
单向:有加密无解密的加密方法;
rpm -K /PAPT/TO/PACKAGE_FILE
dsa, gpg: 验正来源合法性,也即验正签名;可以使用--nosignature,略过此项
sha1, md5: 验正软件包完整性;可以使用--nodigest,略过此项
导入密钥文件:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
yum仓库中的元数据文件:
primary.xml.gz
每个RPM安装生成的文件列表;
filelists.xml.gz
当前仓库中所有RPM包的所有文件列表;
other.xml.gz
额外信息,RPM包的修改日志;
repomd.xml
记录的是上面三个文件的时间戳和校验和;
如何为yum定义repo文件
[Repo_ID]
name=Description
baseurl=
ftp://
http://
file:///
enabled={1|0}
gpgcheck={1|0}
gpgkey={1|0}
yum [options] [command] [package ...]
-y:自动回答为yes
--nogpgcheck
list:列表
all
available:可用的,仓库中有单尚未安装
installed:已经安装的
updates:可用的升级
clean:清理缓存
[ packages | headers |metadate | dbcache |all ]
repolist:显示repo列表及其详细信息
enabled:默认
Disabled
install:安装
yum install PACKAGE_NAME
update:升级
update_to:升级为指定版本
remove|erase:卸载
info:查看详细信息
provides|whatprovides:查看指定文件或特性是由哪个包安装生成的
grouplist:可安装的组的列表
groupinfo:查看组详细信息
groupremove:卸载组
groupinstall:安装组
groupupdate:升级组
创建yum仓库
createrepo