首页 > 代码库 > RH133 单元2 包管理

RH133 单元2 包管理

 

一、软件包

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. 缓存仓库信息

从上面名为repodatabaseurl子目录中已下载

清除缓存: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. 通过httpftp使此目录可用

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 -Urpm -F  !使用rpm -i!

yum可妥善地处理updateinstall

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 -qrpmquery进行调用。

以下是常用包规范参数的列表以及返回的信息:

-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列出可在格 式字符串中使用的标记)

 

在多架构环境(AMD64EM64T)中非常有用,要获得所有的内核包(其中包括输出信息中的架构)的列表,请执行以下命令:

[root@desktop24 ~]# 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/ 数据库

[root@desktop24 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文件

 

RH133 单元2 包管理