rpm命令的相关用法
2010-07-21 10:11
197 查看
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
相关文章推荐
- rpm命令的用法
- RPM命令用法
- uboot相关命令及用法
- Linux自学笔记(十)常用命令之rpm相关命令
- rpmsign命令_Linux rpmsign 命令用法详解:使用RPM软件包的签名管理工具
- rpmquery命令_Linux rpmquery 命令用法详解:从RPM数据库中查询软件包信息
- RPM包相关的一些命令
- rpm相关命令
- rpm安装包相关命令
- Redis基本命令及相关用法
- redhat RPM包相关命令
- userdel命令_Linux userdel 命令用法详解:用于删除给定的用户以及与用户相关的文件
- seinfo命令_Linux seinfo 命令用法详解:查询SELinux的策略提供多少相关规则
- rpmdb命令_Linux rpmdb 命令用法详解:初始化和重建RPM数据库
- df命令_Linux df 命令用法详解:显示磁盘的相关信息
- linux下ps与grep命令的相关用法
- RPM命令用法详解
- RPM相关命令
- JAVA执行mysql脚本和mysql相关命令(alter table示例/多表更新/Insert Into Select/多表查询) 及ibatis模糊查询(concat用法)