Linux基础知识系统学习.NO16——rpm包详解与rmp命令使用

8. Linux软件管理

8.1. 软件包简介

源码包: Linux软件的源码包是基本开元的,只要能读懂c语言,就基本能读懂软件内容。如果有能力,甚至可以修改源代码,所以可以自由选择所需要的功能,并且Linux软件更加适合自己的系统,稳定性极好,卸载也更加方便,缺点就是安装过程步骤复杂以及安装时间(由于是源码,所以需要编译后才能使用)比较长。而且也由于是编译安装,所以过程中一旦出错,难以解决,而且也难以学习。
二进制包(RPM包、系统默认包):也就是已经通过编译后的二进制文件组成的软件包,优点是安装包的升级安装卸载等操作变简单,安装速度比源码包快的多。缺点是不能再看到源代码,也就 不能自由修改源码从而灵活选择功能了,关键是RPM包有明显的依赖性。
脚本安装包:所谓的脚本安装包其实就是把复杂的软件包安装过程写成了程序脚本,方便初学者可以执行程序脚本实现一键安装。但实际上安装的还是源码包或二进制包。优点就是操作很简单,缺点是完全没有自定义性。

8.2. rpm命令管理

8.2.1. RPM包命名规则

所有的RPM包都在系统光盘中,所以首先将系统光盘挂载好
(mkdir /mnt cdrom
mount /dev/sr0 /mnt/cdrom/),再进入系统光盘文件,有一个子文件夹叫做Packages,该文件夹下就有所有的RPM包。
所有的RPM包都有统一的命名规则:
软件包名-软件版本-软件发布次数.合适的Linux平台.适合的硬件平台.rpm包扩展名
如:httpd-2.2.15-15.el6.centos.1.i686.rpm.
rpm包安装具有依赖性:
树形依赖:装软件a,要先有软件b,装软件b又要先有软件c,所有就只好装c再装b再装a,按照依赖关系依次安装;
环形依赖:装软件a,要先有软件b,装软件b又要先有软件c,装软件c又要先有软件a,解决办法是将三个软件的安装放在同一条命令中执行。
模块依赖(库文件依赖):就像某个函数依赖头文件一样,有些软件的依赖对象是一个文件而不是软件,但是这个文件是藏身在某个rpm软件包中的,所以需要安装这个携带这个依赖对象文件的软件之后,才能安装目标软件。所以最大的问题是根本不知道这个依赖文件在哪一个安装包中。解决办法是在www.rpmfind.net网址的查询框中输入该依赖文件,就能查到在各个版本下,该文件所在的软件包。

8.2.2. RPM包安装命令

在光盘目录下Packages文件夹下的名字是包全名,包名是指全名的第一个部分。在Linux还没有安装该软件时候,安装/升级时就需要写清楚完整包名,同时还需要写明绝对路径(或者在packages目录下);如果是已经安装过的软件包,操作(比如删除或查询)时就只写包名(安装后的包信息都保存在/var/lib/rpm/中的数据库),所以有的命令后面跟全名,有的后面跟包名,不能记混了。
安装命令rpm -ivh+包全名,-i(install),-v(verboss)显示详细信息,-h(hash)显示进度。

8.2.3. RPM包升级与卸载

命令rpm -Uvh+包全名,用于软件包的升级,U(upgrade)升级,虽然该软件是已经安装过的,但是由于升级包对于系统来说也是一个完全陌生的包,所以也要写包全名。如果系统中没有安装原始的软件包,那么升级命令也就相当于安装命令。
命令rpm -e+包名,用于卸载软件包,这里只使用包名,e(escape)卸载。在任意目录下都可以执行此命令。不过即使卸载的话也会要求先卸载该软件的依赖软件才可以,就需要一层层的卸载到想要卸载的软件包。

8.2.4. RPM包查询

命令rpm -q+包名,查询该包是否安装,q(query)查询。
命令rpm -qa,查询所有已经安装的RPM包,a(all)。
命令rpm -qi+包名,查询软件详细信息。i(information)。
命令rpm -qip+未安装包全名,查询尚未安装的包的详细信息。由于这个软件还没有安装,所以需要使用包全名。
命令rpm -ql+包名,查询该包所安装的目录。l(list)
命令rpm -qlp+未安装包全名,查询该包如果安装,将会安装在哪些位置。
RPM包安装不需要指定安装位置,因为一般情况下安装位置都是默认的:/etc/init.d启动脚本位置;
/etc/sysconfig初始化环境配置文件位置;
/etc/配置文件安装目录;
/etc/xinetd.conf是xinetd配置文件位置;
/etc/xinetd.d/基于xinetd服务的启动脚本位置;
/var/lib服务产生的数据放在这里;
/var/log/日志位置;
/usr/bin/可执行的命令安装目录;
/usr/lib/程序所使用的函数库保存位置;
/usr/share/doc/基本的软件使用手册保存位置;/usr/share/man帮助文件保存位置。
命令rpm -qf+系统文件名(绝对路径),用于查询系统文件属于哪个安装包,f(file).查询前提是该文件是通过安装包产生的文件才行。
命令rpm -qR+包名,查询安装该包需要依赖哪些包。R(requires)依赖性。
命令rpm -qRp+未安装包全名,查询未安装包如果安装需要哪些依赖包。

8.2.5. RPM包校验方式

命令rpm -V+已安装的包名,用于校验指定RPM包中的文件,V(verift)校验。结果会显示该包下的哪些文件被修改过。被修改过的文件的前面会有8个验证位分别代表8种验证类型。如果文件发生了该类型的修改,那么就出打印出该类型的标志符号,没有就是用点‘.’占位。8个标志符号按顺序依次是S(文件大小)、M(文件类型或权限)、5(文件内容)、D(设备的主从代码)、L(文件路径)、U(文件所有者)、G(文件属组)、T(文件修改时间)。8个标志位之后跟的是文件类型符号,c表示配置文件,d表示普通文件等。

你可能感兴趣的:(linux基础,LINUX,rpm,软件管理)