rpm命令的相关用法

RPM命令及软件包详解

Linux 学习 2010-06-28 22:29:16 阅读25 评论0 字号:

1. 如何安装 rpm 软件包

rmp 软 件包的安装可以使用程序 rpm 来完成。执行下面的命令

rpm -i your-package.rpm

其中 your-package.rpm 是 你要安装的 rpm 包的文件名,一般置于当前目录下。

安装过程中可能出现下面的警告或者提示:

... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有

的文件,缺省时这样的情况下是无法正确安装的可以用

rpm --force -i 强制安装即可

... is needed by ...

... is not installed ... 此包需要的一些软件你没有安装可以用

rpm --nodeps -i 来忽略此信息

也就是说, rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题,什么包

都能安装上,但这种强制安装的软件包不能保证完全发挥功能

   

2. 如何安装 .src.rpm 软件包

有些软件包是以 .src.rpm 结尾的,这类软件包是包含了源代码的 rpm 包,在安装时

需要进行编译。这类软件包有两种安装方法,

方法一:

1. 执 行 rpm -i your-package.src.rpm

2. cd /usr/src/redhat/SPECS

3. rpmbuild -bp your-package.specs 一个和你的软件包同名的 specs 文 件

4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录

5. ./configure 这一步和编译普通的源码软件一样,可以加上参数

6. make

7. make install

 

方法二 :

1. 执 行 rpm -i you-package.src.rpm

2. cd /usr/src/redhat/SPECS

前两步和方法一相同

3. rpmbuild -bb your-package.specs 一个和你的软件包同名的 specs 文 件

这时,在 /usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是 i686,noarch 等等 )

在这个目录下,有一个新的 rpm 包, 这个是编译好的二进制文件。

执行 rpm -i new-package.rpm 即可安装完成。

 

 

3. 如何卸载 rpm 软件包

使用命令 rpm -e 包名,包名可以 包含版本号等信息,但是不可以有后缀 .rpm

比如卸载软件包 proftpd-1.2.8-1 ,可以使用下列格式:

rpm -e proftpd-1.2.8-1

rpm -e proftpd-1.2.8

rpm -e proftpd-

rpm -e proftpd

不可以是下列格式

rpm -e proftpd-1.2.8-1.i386.rpm

rpm -e proftpd-1.2.8-1.i386

rpm -e proftpd-1.2

rpm -e proftpd-1

有时会出现一些错误或者警告

... is needed by ... 这说明这个软件被其他软件需要 不能随便卸载

可以用 rpm -e --nodeps 强制卸载

 

 

4. 如何不安装但是获取rpm 包 中的文件

使用工具 rpm2cpio cpio

rpm2cpio xxx.rpm | cpio -vi

rpm2cpio xxx.rpm | cpio -idmv

rpm2cpio xxx.rpm | cpio --extract --make-directories

参数 i extract 相同,表示提取文件。 v 表示指 示执行进程

d make-directory 相同,表示根据包中文件原来的路径建立目录

m 表示 保持文件的更新时间。

 

 

5. 如何查看与 rpm 包相关的文件和其他信息

下面所有的例子都假设使用软件包 mysql-3.23.54a-11

1. 我 的系统中安装了那些 rpm 软件包

rpm -qa 讲列出所有安装过的包

如果要查找所有安装过的包含某个字符串 sql 的 软件包

rpm -qa |grep sql

 

2. 如何获得某个软件包的文件全名

rpm -q mysql 可以获得系统中安装的 mysql 软 件包全名,从中可以获得

当前软件包的版本等信息。这个例子中可以得到信息 mysql-3.23.54a-11

 

3. 一个 rpm 包中的文件安装到那里去了?

rpm -ql 包名

注意这里的是不包括 .rpm 后 缀的软件包的名称

也就是说只能用 mysql 或 者 mysql-3.23.54a-11 而不是 mysql-3.23.54a-11.rpm

如果只是想知道可执行程序放到那里去了,也可以用 which ,比如

which mysql

 

4. 一个 rpm 包中包含那些文件

一个没有安装过的软件包,使用 rpm -qlp ****.rpm

一个已经安装过的软件包,还可以使用 rpm -ql ****.rpm

 

5. 如何获取关于一个软件包的版本,用途等相关信息?

一个没有安装过的软件包,使用 rpm -qip ****.rpm

一个已经安装过的软件包,还可以使用 rpm -qi ****.rpm

 

6. 某个程序是哪个软件包安装的,或者哪个软件包包含这个程序

rpm -qf `which 程序名 ` 返回软件包的全名

rpm -qif `which 程序名 ` 返回软件包的有关信息

rpm -qlf `which 程序名 ` 返回软件包的文件列表

注意,这里不是引号,而是 ` ,就是 键盘左上角的那个键。

也可以使用 rpm -qilf ,同时输出软件包信息和文件列表

 

7. 某个文件是哪个软件包安装的,或者哪个软件包包含这个文件

注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以

用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。

首先获得这个程序的完整路径,可以用 whereis 或者 which ,然后使用 rpm -qf 例如:

# whereis ftptop

ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz

# rpm -qf /usr/bin/ftptop

proftpd-1.2.8-1

# rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt

proftpd-1.2.8-1

 

总结:

获得软件包相关的信息用 rpm -q q 表示查询 query , 后面可以跟其他选项,比如

i 表 示 info ,获得软件包的信息;

l 表 示 list ,获得文件列表;

a 表 示 all ,在所有包中执行查询;

f 表 示 file ,根据文件进行相关的查询;

p 表 示 package ,根据软件包进行查询

需要的查询条件可以使用 grep 产 生,或者从 "` `" 中的命令行产生

 

 

6. 关于rpm 软 件包的一些相关知识

 

1. 什么是 rpm

rpm RedHat Package Management ,是 RedHat 的发明之一

 

2. 为什么需要 rpm

在一个操作系统下,需要安装实现各种功能的软件包。这些软件包一般都有各自的

程序,但是同时也有错综复杂的依赖关系。同时还需要解决软件包的版本,以及安装,

配置,卸载的自动化问题。为了解决这些问题, RedHat 针对自己的系统提出了一个

较好的办法来管理成千上百的软件。这就是 RPM 管 理系统。在系统中安装了 rpm 管理系统

以后,只要是符合 rpm 文 件标准的打包的程序都可以方便的安装,升级,卸载

 

3. 是不是所有的 linux 都使用 rpm

任何系统都需要包管理系统,因此很多 linux 都使用 rpm 系统。但 rpm 系 统是为 RH 专门

但是 TL,Mandrake 等系统也都 使用 rpm 。由于 rpm 的源程序可以在别的系统上 进行编译,

所以有可能在别的系统上也使用 rpm

除了 rpm ,其他一些系统也有自己的软 件包管理程序,例如 debian deb 包,

slakware 也都有自己的包管理系统

 

4.rpm 包的文件名为什么那么长

rpm 包 的文件名中包含了这个软件包的版本信息,操作系统信息,硬件要求等等。

比如 mypackage-1.1-2TL.i386.rpm ,其中 mypackage 是在系统中登记 的软件包的名字

1.1 是 软件的版本号, 2 是发行号, TL 表示 用于 TL 操作系统,还可能是 RH 等。 i386 表示

用于 intel x86 平台,还可能是 sparc 等。

 

5. 软件包文件名中的 i386,i686 是什么意思

rpm 软 件包的文件名中,不仅包含了软件名称,版本信息,还包括了适用的硬件架构

的信息。

i386 指 这个软件包适用于 intel 80386 以上的 x86 架构的计算机 (AI32)

i686 指 这个软件包适用于 intel 80686 以上 ( 奔腾 pro 以上 ) x86 架构的计算机 (IA32)

noarch 指这个软件包于硬件架构无关,可以通用。

i686 软 件包的程序通常针对 CPU 进行了优化,所以,向后兼容比较用以, i386 的 包在

x86 机 器上都可以用。向前一般不兼容。不过现在的计算机,奔腾 pro 以下的 CPU 已经很少

用,通常配置的机器都可以使用 i686 软 件包

 

6. 不同操作系统发行的 rpm 包可否混用?

对于已经编译成二进制的 rpm 包, 由于操作系统环境不同,一般不能混用。

对于以 src.rpm 发行的软件包,由于 需要安装时进行本地编译,所以通常可以在不同

系统下安装。

 

7. 使用 rpm 时遇到的一些特殊问题

Q 我 用 rpm -e **.rpm 无法删除 rpm

A 包 名不要包括 rpm

rpm -e 包名,可以包含版本号等信息,但是不可以有后缀 .rpm

 

Q MS 的系统下有没有读 RPM 文 件的工具?

A wincmd with rpm plugins.....

 

Q 是否可以通过 ftp 安装安装升级 rpm 包?

A 可 以。 rpm -ivh ftp://xxxxxxxx/PATH2SomeRPM

 

Q rpm 安装时已有的包版本过高怎么办?

A 有 时由于安装的软件包太老,而系统中相关的软件包版本比较新,所以可能需要

安装的包依赖的一些文件会找不到。这时有两种解决办法,

第一是在系统文件中找到和需要的文件功能相同或相似的文件,做一个符号链接到

需要的目录下。

第二是下载安装新版本的软件包。

END

 

 

强制卸载rpm包:rpm -e --nodeps  *.rpm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值