Linux操作系统现在已经成为流行的操作系统,很多的人都开始学习,Linux操作系统包括了很多的专业知识,今天和大家讲讲Linux操作系统中的rpm基本操作。希望你学会本文中提到rpm的五种基本操作知识,会对你有所帮助。rpm有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。 下面我们就来逐一的讲解吧。

一、 安装rpm包

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

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

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

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

  1. $ rpm -ivh foo-1.0-1.i386.rpm 
  2. foo package foo-1.0-1 is already installed 
  3. error: foo-1.0-1.i386.rpm cannot be installed

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

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

  1. rpm -ivh foo-1.0-1.i386.rpm 
  2. foo /usr/bin/foo conflicts with file from bar-1.0-1 
  3. 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 命令行选项。(www.iocblog.net 文章来源)

二、卸载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包

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

  1. $ rpm -uvh foo-2.0-1.i386.rpm 
  2. foo ####################################

rpm将自动卸载已安装的老板本的foo 软件包,您不会看到有关信息。事实上您可能总是使用 -u 来安装软件包,因为即便以往未安装过该软件包,也能正常运行。因为rpm执行智能化的软件包升级,自动处理配置文件,您将会看到如下信息:saving /etc/foo.conf as /etc/foo.conf.rpmsave这表示您对配置文件的修改不一定能向上兼容。 因此,rpm 会先备份老文件再安装新文件。您应当尽快解决这两个配置文件的不同之处,以使系统能持续正常运行。

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

  1. $ rpm -uvh foo-1.0-1.i386.rpm 
  2. foo package foo-2.0-1 (which is newer) is already installed 
  3. 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 手册, readme's, 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输出结果为:

  1. /usr/man/man4/ispell.4 
  2. /usr/man/man4/english.4 
  3. /usr/man/man1/unsq.1 
  4. /usr/man/man1/tryaffix.1 
  5. /usr/man/man1/sq.1 
  6. /usr/man/man1/munchlist.1 
  7. /usr/man/man1/ispell.1 
  8. /usr/man/man1/findaffix.1 
  9. /usr/man/man1/buildhash.1 
  10. /usr/info/ispell.info.gz 
  11. /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输出结果为:

  1. /usr/man/man6/koules.6 
  2. /usr/lib/games/kouleslib/start.raw 
  3. /usr/lib/games/kouleslib/end.raw 
  4. /usr/lib/games/kouleslib/destroy2.raw 
  5. /usr/lib/games/kouleslib/destroy1.raw 
  6. /usr/lib/games/kouleslib/creator2.raw 
  7. /usr/lib/games/kouleslib/creator1.raw 
  8. /usr/lib/games/kouleslib/colize.raw 
  9. /usr/lib/games/kouleslib 
  10. /usr/games/koules 

以上只是几个常见例子。随着您进一步的使用RPM,您会发现它的各种功能选项组合可以实现更为强大的RPM包管理功能。通过本文希望你能牢牢掌握Linux操作系统rpm五种基本的操作方式。

阐述Linux操作系统之rpm五种基本操作的更多相关文章

  1. Linux 操作系统常用的三种流012

    Linux 操作系统常用的三种流: 0 标准输入流 1 标准输出流 2 标准错误流 通常在写脚本启动程序,写log时候,会出现如下写法: nohup commod > log.txt 2> ...

  2. Linux 清空日志的五种方法

    VIM 是linux下一款优秀的编辑器,但是上手难度略大,网络上可以找到的教程很多,快捷键也非常多,一时很难记住. 本文换一种思路,就是根据平时自己的常用需要,去反查VIM如何操作的,再记录下来,这样 ...

  3. Linux操作系统下的三种Java环境配置方法

    方法1:修改/etc/profile 文件  所有用户的 shell都有权使用这些环境变量 (1)在 shell终端执行命令:vi /etc/profile (2)在 profile文件末尾加入: e ...

  4. linux操作系统及内核

    自己的一点总结,把知识重新编码~ 一.操作系统概述 在Richard Stevens的unix环境高级编程中这样定义“它控制计算机硬件资源,提供程序运行环境.一般而言我们称这种软件为内核(kernel ...

  5. 全方位剖析 Linux 操作系统,太全了!!!

    Linux 简介 UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线.为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是 ...

  6. 聊聊 Linux 中的五种 IO 模型

    本文转载自: http://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666538919&idx=1&sn=6013c451 ...

  7. Linux 下的五种 IO 模型

    概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的 ...

  8. Linux五种IO模型性能分析

    1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发出一个功能调用时, ...

  9. [转载] Linux五种IO模型

      转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析   目录(?)[-] 概念理解 Lin ...

随机推荐

  1. Verdi:内存不足

    如果进行Verdi compile时,出现memory资源不够用.有可能case中出现了问题(或许发生了死循环,造成内存严重占用),此时尽量瘦身TC_FILE_LIST文件,缩小问题case的范围.

  2. ()-servlet.xml中剥离出的hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. shell if判断总结

    一.if的基本语法: if [ command ];then    符合该条件执行的语句 elif [ command ];then    符合该条件执行的语句 else    符合该条件执行的语句 ...

  4. Leetcode 319.灯泡开关

    灯泡开关 初始时有 n 个灯泡关闭.第 1 轮,你打开所有的灯泡.第 2 轮,每两个灯泡你关闭一次.第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 i 个灯泡切换 ...

  5. HDU1423 最长公共上升子序列LCIS

    Problem Description This is a problem from ZOJ 2432.To make it easyer,you just need output the lengt ...

  6. 【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring

    http://codeforces.com/contest/805/problem/E [题意] 染色数是很好确定,最少染色数是max(si)(最小为1,即使所有的si都为0,这样是单节点树形成的森林 ...

  7. 洛谷P3406 海底高铁

    题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元,历时15年,于公元2058年建成.凭借该隧道,从厦门可以乘坐火车直达台湾.博艾和日本,全程只需要4个 ...

  8. 【2018 Multi-University Training Contest 1】

    01:https://www.cnblogs.com/myx12345/p/9362221.html 02:https://www.cnblogs.com/myx12345/p/9382267.htm ...

  9. js9:设置cookie,读取cookie,删除cookie,保存cookie时间,String,Date对象

    原文发布时间为:2008-11-11 -- 来源于本人的百度文章 [由搬家工具导入] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  10. Python()- 面向对象三大特性----封装

    封装: [封装]         隐藏对象的属性和实现细节,仅对外提供公共访问方式.[好处] 1. 将变化隔离: 2. 便于使用:3. 提高复用性: 4. 提高安全性:[封装原则]      1. 将 ...