RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。 下面我们就来逐一的讲解吧。

一、 安装RPM包

RPM 软件包通常具有类似foo-1.0-1.i386.rpm 的文件名。其中包括 软件包的名称(foo),版本号(1.0),发行号(1), 和 硬件平台(i386)。安装一个软件包只需简单的键入以下命令:

$ rpm -ivh foo-1.0-1.i386.rpm

foo ####################################

RPM安装完毕后会打印出软件包的名字(并不一定与文件名相同), 而后打印一连串的#号以表示安装进度。虽然软件包的安装被设计的尽量简单易行, 但还是可能会发生如下的错误:

1、 软件包已被安装

如果您的软件包已被安装, 将会出现以下信息:

$ rpm -ivh foo-1.0-1.i386.rpm

foo package foo-1.0-1 is already installed

error: foo-1.0-1.i386.rpm cannot be installed

如果您仍旧要安装该软件包,可以在命令行上使用--replacepkgs 选项,RPM将忽略该错误信息强行安装。

2、文件冲突

如果您要安装的软件包中有一个文件已在安装其它软件包时安装,会出现以下错误信息:

# rpm -ivh foo-1.0-1.i386.rpm

foo /usr/bin/foo conflicts with file from bar-1.0-1

error: foo-1.0-1.i386.rpm cannot be installed

要想让RPM 忽略该错误信息, 请使用--replacefiles 命令行选项。

3、未解决依赖关系

RPM软件包可能依赖于其它软件包,也就是说要求在安装了特定的软件包之后才能安装该软件包。如果在您安装某个软件包时存在这种未解决的依赖关系。会产生以下信息:

$ rpm -ivh bar-1.0-1.i386.rpm

failed dependencies: foo is needed by bar-1.0-1

您必须安装完所依赖的软件包,才能解决这个问题。如果您想强制安装(这是个坏主意, 因为安装后的软件包未必能正常运行), 请使用--nodeps 命令行选项。

二、卸载RPM包

卸载软件包就象安装软件包时一样简单:

$ rpm -e foo

注意这里使用软件包的名字name ``foo, 而不是软件包文件的名字file ``foo-1.0-1.i386.rpm。如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。如:

$ rpm -e foo

removing these packages would break dependencies:foo is needed by bar-1.0-1

若让RPM忽略这个错误继续卸载(这可不是一个好主意,因为依赖于该软件包的程序可能无法运行),请使用--nodeps 命令行选项。

三、升级RPM包

升级软件包和安装软件包十分类似:.

$ rpm -Uvh foo-2.0-1.i386.rpm

foo ####################################

RPM将自动卸载已安装的老板本的foo 软件包,您不会看到有关信息。事实上您可能总是使用 -U 来安装软件包,因为即便以往未安装过该软件包,也能正常运行。因为RPM 执行智能化的软件包升级,

自动处理配置文件,您将会看到如下信息:

saving /etc/foo.conf as /etc/foo.conf.rpmsave

这表示您对配置文件的修改不一定能向上兼容。 因此,RPM 会先备份老文件再安装新文件。您应当尽快解决这两个配置文件的不同之处,以使系统能持续正常运行。

因为升级实际包括软件包的卸载与安装两个过程,所以您可能会碰到由这两个操作引起的错误。另一个你可能碰到的问题是:当您使用旧版本的软件包来升级新版本的软件时,RPM会产生以下错误信息:

$ rpm -Uvh foo-1.0-1.i386.rpm

foo package foo-2.0-1 (which is newer) is already installed

error: foo-1.0-1.i386.rpm cannot be installed

如果你确有需要将该软件包”降级,加入 --oldpackage 命令选项就可以了。

四、 查询已安装的软件包

使用命令rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包 的包名 ,

版本号,和发行号:

$ rpm -q foo

foo-2.0-1

除了指定软件包名以外,您还可以使用以下选项来指明要查询哪些软件包的信 息。 这些选项被称之为“软件包指定选项“。

· -a 查询所有已安装的软件包

· -f 将查询包含有文件. 的软件包

· -p 查询软件包文件名为的软件包

还可以指定查询软件包时所显示的信息。它们被称作信息选择选项:

· -i 显示软件包信息,如描述, 发行号, 尺寸, 构建日期, 安装日期, 平台, 以及其它一些各类信息。

· -l 显示软件包中的文件列表。

· -s 显示软件包中所有文件的状态。

· -d 显示被标注为文档的文件列表(man 手册, info 手册, READMEs, etc)。

· -c 显示被标注为配置文件的文件列表。这些是您要在安装完毕以后加以定制的文件(sendmail.cf,

passwd, inittab, etc)。

对于那些要显示文件列表的文件, 您可以增加-v 命令行选项以获得如同 ls -l 格式的输出。

五、 验证软件包

验证软件包是通过比较已安装的文件和软件包中的原始文件信息来进行的。验证主要是比较文件的尺寸,MD5 校验码, 文件权限, 类型, 属主和用户组等。

rpm-V命令用来验证一个软件包。您可以使用任何包选择选项来查询您要验证的软件包。 命令rpm -V foo

将用来验证foo软件包。又如:

· 验证包含特定文件的软件包:

rpm -Vf /bin/vi

· 验证所有已安装的软件包:

rpm -Va

· 根据一个RPM包来验证:

rpm -Vp foo-1.0-1.i386.rpm

如果您担心你的RPM数据库已被破坏,就可以使用这种方式。

如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。 输出格式是8位长字符

串, ``c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较

结果 。``. (点) 表示测试通过。.下面的字符表示对RPM软件包进行的某种测试失败:

显示字符 错误源

5 MD5 校验码

S 文件尺寸

L 符号连接

T 文件修改日期

D 设备

U 用户

G 用户组

M 模式e (包括权限和文件类型)

如果有错误信息输出, 您应当认真加以考虑,是通过删除还是重新安装来解决出现的问题。

六、教你一招

RPM不仅是安装/卸载程序的工具,它还是系统维护和诊断的一把好手。看过下面几个例子你就会领教它的

厉害了。

· 如果您误删了一些文件, 但您不能肯定到底都删除了那些文件,怎么办? 您可以键入:

rpm -Va

rpm会在屏幕上显示出文件删除的情况。若你发现一些文件丢失了或已被损坏, 您就可以重新安装或先卸载

再安装该软件包。

· 如果您碰到了一个自己不认识的文件,要想查处它属于哪个软件包,您可以输入以下命令

rpm -qf /usr/X11R6/bin/xjewel

输出的结果会是:

xjewel-1.6-1

· 如果发生综合以上两个例子的情况,如文件/usr/bin/paste出了问题。您想知道哪个软件包中包含该文

件,您这时可以简单的键入:

rpm -Vf /usr/bin/paste

· 如果您想了解正在使用的程序的详细信息, 您可以键入如下命令来获得软件包中关于该程序的文档信息:

rpm -qdf /usr/bin/ispell

输出结果为:

/usr/man/man4/ispell.4

/usr/man/man4/english.4

/usr/man/man1/unsq.1
/usr/man/man1/tryaffix.1

/usr/man/man1/sq.1

/usr/man/man1/munchlist.1

/usr/man/man1/ispell.1

/usr/man/man1/findaffix.1

/usr/man/man1/buildhash.1

/usr/info/ispell.info.gz

/usr/doc/ispell-3.1.18-1/README

· 您发现了一个新的koules RPM,但您不知道它是做什么的,您可以键入如下命令:

rpm -qip koules-1.2-2.i386.rpm

· 现在您想了解koules的 RPM包在系统里安装了哪些文件, 您可以键入:

rpm -qlp koules-1.2-2.i386.rpm输出结果为:

/usr/man/man6/koules.6

/usr/lib/games/kouleslib/start.raw

/usr/lib/games/kouleslib/end.raw

/usr/lib/games/kouleslib/destroy2.raw

/usr/lib/games/kouleslib/destroy1.raw

/usr/lib/games/kouleslib/creator2.raw

/usr/lib/games/kouleslib/creator1.raw

/usr/lib/games/kouleslib/colize.raw

/usr/lib/games/kouleslib

/usr/games/koules

rpm软件包管理的更多相关文章

  1. linux RPM软件包管理

    linux RPM软件包管理 目录 1.软件包的介绍 2.rpm包管理 3.rpm包管理前端工具 1.软件包的介绍 在我们在对软件包管理前,先对软件包有个很好的了解,这样更方便我们来对其进行管理. 软 ...

  2. 逐步搭建Lamp环境之rpm软件包管理

    Linux中的rpm软件包管理类似于windows下的"xxx软件管家"."xxx电脑管家",其作用主要用于查询软件的安装情况.安装软件.卸载软件. 以下针对这 ...

  3. RPM软件包管理的查询功能 转

    RPM软件包管理的查询功能: 命令格式 rpm {-q|--query} [select-options] [query-options] RPM的查询功能是极为强大,是极为重要的功能之一:举几个常用 ...

  4. Linux - rpm 软件包管理

    rpm 是 Red-Hat Package Manager(rpm 软件包管理器)的缩写 rpm 的命名规则: 第一部分为 rpm 软件包的名称,第二部分是版本号,第三部分是版本发布次数,第四部分是软 ...

  5. CentOS软件管理之源代码以及RPM软件包管理

    在Linux系统下,对于软件包的管理有多种机制,有源代码方式.RPM软件包管理方式以及YUM软件管理方式,本篇随笔将详细讲解CentOS下源代码形式安装软件以及RPM软件包管理机制 一.源代码形式 首 ...

  6. linux常用命令---rpm软件包管理

    rpm软件包管理

  7. day61:Linux:权限管理&rpm软件包管理&yum工具

    目录 1.权限管理 2.rpm软件包管理 3.yum工具(联网) 权限管理 1.什么是权限? 权限主要用来约束用户能对系统所做的操作 2.为什么要使用权限? 因为系统中不可能只存在一个root用户,一 ...

  8. Fedora 22中的RPM软件包管理工具

    Introduction The RPM Package Manager (RPM) is an open packaging system that runs on Fedora as well a ...

  9. linux的RPM软件包管理工具

    RPM(Redhat Package Manage)原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采 ...

  10. rpm - RPM 软件包管理器

    SYNOPSIS 查询和校验软件包: rpm {-q|--query} [select-options] [query-options] rpm {-V|--verify} [select-optio ...

随机推荐

  1. FusionCharts或其它flash的div图层总是浮在最上层的问题

    div的图层由div的style中的z-index来决定,z-index是层垂直屏幕的坐标,0最小,越大的话位置越靠上. 由于FusionCharts的图表都放在div中,如果页面还有其他的div,将 ...

  2. Team Queue (uva540 队列模拟)

    Team Queue Queues and Priority Queues are data structures which are known to most computer scientist ...

  3. JAVA基础知识之JDBC——离线RowSet

    离线RowSet 如果直接使用ResultSet, 程序在得到ResultSet记录之后需要立即使用,否则一旦关闭Connection就不再可用,要解决这种情况要么将ResultSet的结果转换成Ja ...

  4. AOJ 0121: Seven Puzzle (BFS DP STL 逆向推理)(转载)

    转载自:  http://m.blog.csdn.net/blog/Enjoying_Science/42008801 题目链接:http://acm.hust.edu.cn/vjudge/probl ...

  5. Hibernate的关联映射——单向1-1关联

    Hibernate的关联映射--单向1-1关联 对于单向的1-1关联关系,需要在持久化类里增加代表关联实体的成员变量,并为该成员变量添加setter方法和getter方法.从持久化类的代码上看,单向1 ...

  6. 12.NFS搭建配置

    参考博客:http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html 1.关闭防火墙和SELINUX $ service iptable ...

  7. python去除空格和换行符的方法

    一.去除空格 strip() " xyz ".strip() # returns "xyz" " xyz ".lstrip() # retu ...

  8. HBase之计数器

    HBase计数器 #创建counters表 列族['daily','weekly','monthly'] hbase(main):001:0> create 'counters','daily' ...

  9. kafka集群zookeeper集群详细配置

    http://www.cnblogs.com/luotianshuai/p/5206662.html

  10. easyui tree 折叠节点

    <ul id="jihuidian" class="easyui-tree" data-options="onBeforeLoad:functi ...