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. rspec测试(使用guard自动测试和spork加速测试)配置

    Gemfile文件添加rspec.guard和spork,之后执行bundle install命令 gem 'rb-readline' group :development, :test do # C ...

  2. 十二.GUI

    tkinter模块(tkinter是一个跨平台的PythonGUI工具包): #Tkinter是一个跨平台的Python GUI工具包 import tkinter top=tkinter.Tk() ...

  3. LA 4064 (计数 极角排序) Magnetic Train Tracks

    这个题和UVa11529很相似. 枚举一个中心点,然后按极角排序,统计以这个点为钝角的三角形的个数,然后用C(n, 3)减去就是答案. 另外遇到直角三角形的情况很是蛋疼,可以用一个eps,不嫌麻烦的话 ...

  4. grunt 使用比较

    http://www.cnblogs.com/yexiaochai/p/3603389.html 最全的uglify使用DEMO http://www.cnblogs.com/artwl/p/3449 ...

  5. 【Ts 4】ftp服务器搭建

    一.为什么需要ftp? 分布式环境一般都有一个专门的图片服务器存放图片.我们使用虚拟机搭建一个专门的服务器来存放图片.在此服务器上安装一个nginx来提供http服务,安装一个ftp服务器来提供图片上 ...

  6. python中的“坑”—持续更新

    1.判断是否是回文 def is_back(s): ]==(s if s.strip() else False) print(is_back('上海自来水来自海上')) print(is_back(' ...

  7. 飞行路线(BZOJ 2763)

    题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...

  8. POJ1256 Anagram

    Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %lld & %llu Submit Status Descript ...

  9. 用DW制作简单的浮动广告

    原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] 浮动广告可以用层和时间轴结合做出,先选择你的dreamweaver“窗口”,然后从“窗口”菜单中选择“时间轴”,时 ...

  10. Cooking Schedule Problem Code: SCHEDULE(优先队列)

    Cooking Schedule Problem Code: SCHEDULE Chef is a well-known chef, and everyone wishes to taste his ...