首页 > 代码库 > Linux软件管理之RPM
Linux软件管理之RPM
1.概述
对于一个软件安装到LINUX后,一般而言,需要注意安装后的一些位置,比如可执行二进制程序,配置文件,帮助文件,库文件都分别存放在哪里,因为这些是应用程序运行所必须的。以前学习过LINUX的FHS结构,知道/etc用于存放配置文件;/lib,/usr/lib,/usr/local/lib用于存放库文件;/usr/share/,/usr/local/share/用于存放帮助文档;/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin用于存放可执行二进制程序。RPM,即redhat package manage,软件包管理器。RPM可以用于制作软件,安装软件,卸载软件,升级软件,校验软件等功能。
2. RPM命名规范
举例如下: bind-9.7.1-el5-i586.rpm bind即包名,包分为主包和子包,比如bind(主包) , bind-lib(子包) 9.7.1即版本号 el5即发行版号,明确说明用于REDHAT企业版5 相当于是系统平台 i586即平台架构,i586/i686都是32位平台 x64/x86_64是64位平台 相当于是物理平台 RPM有两种格式: 二进制格式:已经编译成二进制了,直接安装即可,方便简单 源码格式:需要进行编译,有点麻烦。但是可以最大化利用主机的硬件性能 |
3. 安装RPM
rpm -i PATH_RPM -h 可以显示安装进度,一个#表示2%进度 -v 显示详细信息 -vv -vvv --nodeps 忽略依赖关系,强制安装【可能导致,软件安装后无法使用】 --replacepkgs 重新安装 覆盖以前版本 --force 强制安装【可能覆盖,可能降级】 --test 并不安装,仅仅测试下 对于安装RPM,其实我们常用的就是: rpm -ivh PATH_RPM |
4. 查询RPM
我们知道,对于WINDOWS,如果安装了应用程序的话,有什么注册表啦,什么菜单,什么控制面板等等可以查找到安装的应用程序。但是LINUX并没有这些概念,那么我们如何查询安装了哪些RPM,安装在哪里? rpm -q packagename 查询是否安装指定名称的packagename包 rpm -qa 查询所有已经安装的RPM包 后面可以跟上进行通配 rpm -qi packagename 查询更加详细的信息 rpm -ql packagename 查询这个RPM到底安装在哪里,定位下安装后的文件列表 rpm -qf FILEPATH 查询指定路径的文件是由哪个RPM安装的 rpm -qc packagename 查询指定包名称的配置文件在哪里configfiles rpm -qd packagename 文档说明在哪里 docfiles rpm -q --scripts packagename 查看安装前(pre) ,安装后(post) ,卸载前,卸载后 所要执行的脚本。 如果一个RPM包并未安装的话,那么我想 查询更加详细的信息 rpm -qpi PATH_RPM 查询这个RPM到底安装在哪里,定位下安装后的文件列表 rpm -qpl PATH_RPM 查询指定包名称的配置文件在哪里configfiles rpm -qpc PATH_RPM 文档说明在哪里 docfiles rpm -qpd PATH_RPM 查看安装前(pre) ,安装后(post) ,卸载前,卸载后 所要执行的脚本。 rpm -qp --scripts PATH_RPM 和上面的一样,只不过加入-p选项即可,并且后跟RPM包路径即可。 注意了,有时候,我们需要使用RPM的包名,有时候我们需要提供RPM的路径。如果RPM已经安装完毕,那么实际上在RPM的数据库(/var/rpm/lib)中已经进行了记录,所以查询直接使用RPM的包名即可。如果未安装,显然需要使用RPM的路径。 [root@localhost rpm]# rpm -qa a* attr-2.4.32-1.1 avahi-0.6.16-1.el5 automake14-1.4p6-13 autoconf-2.59-12 automake-1.9.6-2.1 [root@localhost rpm]# rpm -qi apr Name : apr Relocations: (not relocatable) Version : 1.2.7 Vendor: Red Hat, Inc. Release : 11 Build Date: Wed 17 Jan 2007 08:36:50 AM PST Install Date: Fri 27 Jun 2014 09:40:03 AM PDT Build Host: ls20-bc2-14.build.redhat.com Group : System Environment/Libraries Source RPM: apr-1.2.7-11.src.rpm Size : 267135 License: Apache Software License Signature : DSA/SHA1, Wed 17 Jan 2007 12:29:27 PM PST, Key ID 5326810137017186 Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> URL : http://apr.apache.org/ Summary : Apache Portable Runtime library Description : The mission of the Apache Portable Runtime (APR) is to provide a free library of C data structures and routines, forming a system portability layer to as many operating systems as possible, including Unices, MS Win32, BeOS and OS/2. [root@localhost rpm]# rpm -qf /usr/lib/libapr-1.so.0 apr-1.2.7-11 [root@localhost rpm]# [root@localhost rpm]# rpm -qc apr [root@localhost rpm]# man rpm [root@localhost rpm]# rpm -qd apr /usr/share/doc/apr-1.2.7/CHANGES /usr/share/doc/apr-1.2.7/LICENSE /usr/share/doc/apr-1.2.7/NOTICE |
5.升级RPM
rpm -Uvh PATH_NEW_PACKAGE 如果系统上本身装有老版本的,升级,否则安装。 rpm -Fvh PATH_NEW_PACKAGE 如果系统上本身装有老版本的,升级,否则退出。 rpm -Uvh --oldpackage 就是要降级安装【比如我们软件升级后,发现不好使了】 指定新版本的RPM包位置即可。 |
6.卸载RPM
卸载: rpm -e PACKAGENAME 注意,如果这个软件包是其他软件包的依赖的话,卸载时会阻止你,当然你可以进行强制卸载--nodeps。 |
7.校验RPM
由于我们所下载的RPM是来自互联网的,这个文件有没有被改过呢?怎么判断呢?必须有一种机制来进行校验。 rpm -V packagename 也就是在我们完成安装RPM后,即可使用校验机制。 S file Size differs M Mode differs (includes permissions and file type) 5 MD5 sum differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs 用上述8个位来进行表示变化。 其他说明: 检查来源合法性,及软件完整性: 首先,这个软件包的作者或者公司,会公布一个密钥,就是一个文件 我们应导入它: rpm --import xxxfile 然后进行校验 rpm -k package_path |
8.关于RPM数据库
rpm --rebuilddb 一定会重新建立 rpm --initdb 初始化数据库,没有则建立。有,不做处理。 |
本文出自 “我想超越自我” 博客,请务必保留此出处http://zhangfengzhe.blog.51cto.com/8855103/1440478
Linux软件管理之RPM