一、软件包
1. package-version-release.arch.rpm
version-上游开发商版本
release-包程序更改(修正/向后移植记录在“更改日志”中)
arch-二进制处理器架构 noarch 无架构
2. 包含:
文件存档:二进制、文档、“默认”配置文件
摘要、说明、更改日志
说明:依赖项、安装/卸载前/后
签名
3. 升级将用新版本进行替换
.rpmsave与.rpmnew
二、启用专有yum仓库
1. 针对仓库在/etc/yum.repos.d/中创建文件
名称必须以.repo结束
包含一个或多个节
[repo-name]
name=A nice description 描述
baseurl=http://yourserver.com/path/to/repo 仓库地址
enabled=1/0
gpgcheck=1/0
gpgcheck=file:///~ 数字签名
/etc/yum.conf中的默认设置
2. 缓存仓库信息
从上面名为repodata的baseurl子目录中已下载
清除缓存:yum clean dbcache|all
三、通过yum进行查询
1. 列出包和信息
yum list [all] [package_glob]
yum list (installed(已安装)|available(可用)|updates(可升级)... [package_glob])
yum grouplist
yum info package 查看信息
yum groupinfo packagegroup
2. 搜索包和文件
yum search searchterm 文件名不全
yum provides filename 查看命令在哪个包
四、通过yum管理包
1. 安装新包:
yum install package|@packagegroup...
yum localinstall rpmfile... 安装本地的包
yum groupinstall packagegroup... (如“GNOME Desktop Environment”)
2. 删除:
yum remove package... (groupremove)
3. 升级至新版本:
yum update [package|rpmfile|@packagegroup...]
附:yum进程独占
reinstall 重装
卸载更新软件时,修改过的配置文件会备份.rpmsave或.rpmnew
五、创建专有yum仓库
1. 创建一个目录以保留包
2. 通过http或ftp使此目录可用
3. 安装createrepo RPM
4. 运行createrepo -v /dir/packagedir 生成数据库
创建/重新创建repodata子目录
文件包含提取的包页眉信息
createrepo命令可创建yum仓库必须的支持文件,这些文件将放置在repodata子目录中。
repomd.xml 文件包含其他三个文件的时间戳和校验和值。客户端建立与某服务器的连接后,将缓存所有文件,并只刷新该缓存(如果repomd.xml指出仓库已更改)
primary.xml.gz 包含仓库中的所有RPM的列表以及依赖项信息。还包含通常由rpm -qlp返回的包中的文件的列表
filelists.xml.gz 包含所有RPM中的所有文件的列表。这由查询(如yum provides)使用
other.xml.gz 包含其他信息,包含RPM的更改日志
comps*.xml 可选的comps*.xml文件包含有关包组的信息。这允许组安装并优化依赖项解析。通常可在支持Red Hat Enterprise Linux安装程序anaconda的包目录中找到该文件
在该仓库中添加或删除文件需要需要再次运行createrepo。这通常会丢失可选的comps*.xml文件。为防止丢失,可运行以下命令:
#cp /package-directory/repodata/comps*.xml /tmp
#createrepo -g /tmp/comps*.xml /package-directory
六、通过rpm进行高级安装和删除
1. 基本RPM选项:
安装/升级:rpm -i(安装)|-F|-U rpmfile...(升级)
删除:rpm -e package...
输出选项:-v(打印包名)、-h(打印井号) (安装信息)
URL支持:ftp://(具有通配)、http://
2. 高级选项:
重新安装:--replacepkgs
降级:--oldpackage
忽略冲突:--replacefiles
忽略依赖性:--nodeps
七、更新至新内核RPM
1. 内核是并行安装的,没有升级
请勿使用rpm -U或rpm -F !使用rpm -i!
yum可妥善地处理update或install
2. 更新(添加)内核
yum update kernel
启动新内核进行测试,重新启动旧内核
如果没有问题,使用yum remove kernel-oldversion
默认情况下,新内核将自动启动添加至启动加载器GRUB,并采用默认设置。通过编辑/etc/sysconfig/kernel来更改此行为。
不小心删除了某内核(无论是使用rpm -U,还是永久删除了该内核),都可以使用rpm -i oldpackage重新安装旧内核。
八、通过rpm进行高级查询
1. 四种基本的查询类型:
已安装的版本:rpm -q package
所有已安装的:rpm -q -a [package_glob]
包文件(未安装):rpm -q -p rpmfile
文件所有者:rpm -q -f file_path_name 文件属于哪个包
2. 查询的信息类型:
-i 可提供关于包的一般信息
-l 可列出包中的文件
yum 不能提供的许多其他信息
-c 配置文件
-d 帮助文档
RPM可提供功能强大的查询,可通过rpm -q或rpmquery进行调用。
以下是常用包规范参数的列表以及返回的信息:
-q | --query package 命名的包和版本
-q -a | --all [package_glob] 与通配匹配的所有已安装的包
-q -p | --package rpmfile (可能未安装的)包的文件
-q -f | --file filename 拥有该文件的包
以下是常用查询信息参数的列表以及返回的信息:
-i | --info 一般包信息
-l | --list 列出包中的所有文件
-c | --configfiles 列出配置文件
-d | --docfiles 列出文档文件(帮助)
-R | --requires 包必备条件
--provides 包提供的功能
--scripts 安装和删除时运行的脚本
--changelog 包修订历史
--last 按安装时间排列包(最近安装的包排在第一位)
--qf | --queryformat 格式化自定义格式的信息(使用rpm --querytags列出可在格 式字符串中使用的标记)
在多架构环境(AMD64或EM64T)中非常有用,要获得所有的内核包(其中包括输出信息中的架构)的列表,请执行以下命令:
[[email protected] ~]# rpm -qa ‘kernel*‘ --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"
九、通过rpm进行验证
1. 已安装的包文件验证:
# rpm -V package
# rpm -V -p rpmfile
# rpm -V -a
2. 在包安装之前验证签名:
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 导入公钥
# rpm -qa gpg-pubkey 要查询已导入的公钥列表
# rpm -K(--checksig) rpmfile 要在安装之前验证包文件的签名
通过验证安装的包可比较文件的大小、权限、类型、所有者、组、MD5校验和,并根据RPM数据库修改时间,将报告所有不一致。还可以根据包文件验证已安装的包:
rpm -V zip 可根据RPM数据库验证已安装的zip rpm
rpm -Va 可根据RPM数据库验证所有已安装的RPM
rpm -Vp zip-2.3-8.i386.rpm 可根据zip包文件验证已安装的zip包
/var/lib/rpm/ 数据库
[[email protected] tmp]# uname -a Linux desktop24.example.com 2.6.32-279.1.1.el6.x86_64 #1 SMP Wed Jun 20 11:41:22 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
#rpm2cpio 包名 |cpio -idv 解压rpm文件