linux rpm包 安装 升级 卸载 查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux rpm包 安装 升级 卸载 查询相关的知识,希望对你有一定的参考价值。
RPM是 “Redhat Package Manager” 的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将您所需要的套件安装到您的Linux 主机的一套管理程序。也就是说,您的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
如果您的光驱中还有系统安装盘的话,我们可以通过 mount /dev/cdrom /mnt 命令把光驱挂载到/mnt目录下,那么您会在/mnt/Packages目录下看到很多.rpm的文件,这就是RPM包了。
[[email protected] ~]# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only [[email protected] ~]# ls /mnt/ CentOS_BuildTag Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6 isolinux RPM-GPG-KEY-CentOS-Debug-6 [[email protected] ~]# ls /mnt/Packages/|head 389-ds-base-1.2.11.15-11.el6.i686.rpm 389-ds-base-libs-1.2.11.15-11.el6.i686.rpm abrt-2.0.8-15.el6.centos.i686.rpm abrt-addon-ccpp-2.0.8-15.el6.centos.i686.rpm abrt-addon-kerneloops-2.0.8-15.el6.centos.i686.rpm abrt-addon-python-2.0.8-15.el6.centos.i686.rpm abrt-cli-2.0.8-15.el6.centos.i686.rpm abrt-desktop-2.0.8-15.el6.centos.i686.rpm abrt-gui-2.0.8-15.el6.centos.i686.rpm abrt-libs-2.0.8-15.el6.centos.i686.rpm
每一个rpm包的名称都由 - 和 . 分成了若干部分。就拿 “abrt-cli-2.0.8-15.el6.centos.i686.rpm” 这个包来解释一下, “abrt-cli” 为包名, “2.0.8” 则为版本信息, “15.el6.centos” 为发布版本号, “i686” 为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要您注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 “alacarte-0.10.0-1.fc6.noarch.rpm”. 下面介绍一下rpm常用的命令。
安装一个rpm包
[[email protected] ~]# rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm Preparing... ########################################### [100%] 1:libjpeg-turbo-devel ########################################### [100%]
“-i” : 安装的意思
“-v” : 可视化
“-h” : 显示安装进度
另外在安装一个rpm包时常用的附带参数有:
--force : 强制安装,即使覆盖属于其他包的文件也要安装
--nodeps : 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包
升级一个rpm包
命令 rpm -Uvh filename
“-U” : 即升级的意思
卸载一个rpm包
命令 rpm -e filename
这里的filename是通过rpm的查询功能所查询到的,稍后会作介绍。
[[email protected] ~]# rpm -qa |grep libjpeg-turbo-devel libjpeg-turbo-devel-1.2.1-1.el6.i686 [[email protected] ~]# rpm -e libjpeg-turbo-devel
卸载时后边跟的filename和安装时的是有区别的,安装时是把一个存在的文件作为参数,而卸载时只需要包名即可。
查询一个包是否安装
命令 rpm -q rpm包名 (这里的包名,是不带有平台信息以及后缀名的)
[[email protected] ~]# rpm -q libjpeg-turbo-devel package libjpeg-turbo-devel is not installed [[email protected] ~]# rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm Preparing... ########################################### [100%] 1:libjpeg-turbo-devel ########################################### [100%] [[email protected] ~]# rpm -q libjpeg-turbo-devel libjpeg-turbo-devel-1.2.1-1.el6.i686
我们可以使用 rpm -qa 查询当前系统所有安装过的rpm包,限于篇幅,阿铭只列出前十个。
[[email protected] ~]# rpm -qa |head plymouth-core-libs-0.8.3-27.el6.centos.i686 xml-common-0.6.3-32.el6.noarch sgpio-1.2.0.10-5.el6.i686 iso-codes-3.16-2.el6.noarch gnome-vfs2-2.24.2-6.el6.i686 libX11-common-1.5.0-4.el6.noarch curl-7.19.7-35.el6.i686 ca-certificates-2010.63-3.el6_1.5.noarch cups-libs-1.4.2-48.el6_3.3.i686 kbd-misc-1.15-11.el6.noarch
得到一个已安装rpm包的相关信息
命令 rpm -qi 包名 (同样不需要加平台信息与后缀名)
[[email protected] ~]# rpm -qi libjpeg-turbo-devel Name : libjpeg-turbo-devel Relocations: (not relocatable) Version : 1.2.1 Vendor: CentOS Release : 1.el6 Build Date: 2013年02月22日 星期五 06时49分08秒 Install Date: 2013年05月13日 星期一 01时37分48秒 Build Host: c6b9.bsys.dev.centos.org Group : Development/Libraries Source RPM: libjpeg-turbo-1.2.1-1.el6.src.rpm Size : 321085 License: wxWidgets Signature : RSA/SHA1, 2013年02月24日 星期日 01时53分55秒, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://sourceforge.net/projects/libjpeg-turbo Summary : Headers for the libjpeg-turbo library Description : This package contains header files necessary for developing programs which will manipulate JPEG files using the libjpeg-turbo library.
列出一个rpm包安装的文件
命令 rpm -ql 包名
[[email protected] ~]# rpm -ql libjpeg-turbo-devel /usr/include/jconfig.h /usr/include/jerror.h /usr/include/jmorecfg.h /usr/include/jpeglib.h /usr/lib/libjpeg.so /usr/share/doc/libjpeg-turbo-devel-1.2.1 /usr/share/doc/libjpeg-turbo-devel-1.2.1/coderules.txt /usr/share/doc/libjpeg-turbo-devel-1.2.1/example.c /usr/share/doc/libjpeg-turbo-devel-1.2.1/jconfig.txt /usr/share/doc/libjpeg-turbo-devel-1.2.1/libjpeg.txt /usr/share/doc/libjpeg-turbo-devel-1.2.1/structure.txt
通过上面的命令可以看出文件 “/usr/lib/libjpeg.so” 是通过安装 “libjpeg-turbo-devel” 这个rpm包得来的。那么反过来如何通过一个文件去查找是由安装哪个rpm包得来的?
列出某一个文件属于哪个rpm包
命令 rpm -qf 文件的绝对路径
[[email protected] ~]# rpm -qf /usr/lib/libjpeg.so libjpeg-turbo-devel-1.2.1-1.el6.i686
本文出自 “Linux菜鸟” 博客,请务必保留此出处http://490617581.blog.51cto.com/11186315/1757810
以上是关于linux rpm包 安装 升级 卸载 查询的主要内容,如果未能解决你的问题,请参考以下文章