Linux原本只是一个kernel,但是为什么我们今天用的linux系统,会有很强大的功能呢,这是因为在kernel的基础上,发行商给我们安装了很多软件包,使linux系统具有了丰富的功能。
Linux界软件安装的的两大主流是:RPM和dpkg。dpkg最早是由Debian Linux社区开发的,RPM(Redhat Package Manager)是由redhat公司开发的,而包括Fedora,CentOS,SuSE等大的发行商都使用RPM。我们知道最初那些软件包都是程序员用C语言或其他语言写出来,需要经过编译才能在我们的PC机的Linux系统上运行,如果我们每用到一个程序,就需要下载源码包,然后自己编译(有的大程序编译时间是非常长的),安装,并且大多时候会出现依赖性的问题,这样非常有局限性,并且非常麻烦。而RPM解决了我们这个问题,它是已经编译完成的程序和设置文件打包为RPM格式的包,并且软件包中会提供软件包依赖属性等的相关详细信息。RPM包用rpm命令安装的时候首先会检测它安装所要依赖的包是否已安装。如果,这个软件包所依赖的软件包不存在,则会停止安装,给出提示信息让安装其所依赖的包。如果已经安装,则正常安装,并在安装的时候将该软件的信息整个写入RPM的数据库中,便于未来的查询,验证和安装。
RPM和rpm一样吗?是不是看的有点晕呀!RPM全称是Redhat Package Manager即redhat软件包管理工具,而rpm是RPM的中的一个命令,只有root用户才能使用,用于软件包的安装,查询和升级等。
软件包一般由四个部分组成:
1,二进制文件 一般放
在:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin中
2,配置文件 一般放在:/etc,/usr/local/etc中
3,库文件 一般放在:/lib,/usr/lib,/usr/local/lib中
4,文档 一般放在/usr/share/docs,/usr/share/man中
软件包的安装方式有两种:
1,手动编译安装源代码包
2,直接安装二进制格式的软件包
这里我们只说第二种,并且是能用rpm命令安装的RPM包。
rpm包的格式为:
name-version-release.arch.rmp
name:就是软件包的名字
version:软件包的版本号,一般由三位组成,分别为主版本号-次版本号-修正号。
release:发行号
arch:支持的硬件平台,一般有:
i386:支持几乎所有的x86的CPU平台
i586:如P-I MMX CPU及AMD的K5,K6系列等。
i686:P-II以后的Intel系列
X86_64:支持64位的cpu,如Intel core2以上及AMD的Athlon64以后的cpu
noarch:表示没有硬件平台的限制;
RPM工具中的rpm命令:
(注意:
1,下面内容我们以:httpd-2.2.3-31.el5.i386.rpm为例,有的选项只用包的名字就行了,即这个包中的httpd,全格式反而错误;
2,指定这个包文件时必须是绝对路径,由于我已经切换到光盘中Server目录中,而httpd这个文件在这个目录中,故不需要指定路径了)
rpm常用选项有:
-v 执行的时候显示详细信息
-h 执行的时候显示进度条
1,安装
rpm
-i 表示安装
-nodeps 忽略包之间的依赖关系安装,即使安装成功,有可能不能用
--force 强行安装,即使安装成功,有可能不能用
例:rpm -ivh httpd-2.2.3-31.el5.i386.rpm (必须是全格式的包名)
2,卸载
rpm
-e 卸载
-nodeps 忽略依赖关系强行卸载
--force 强制卸载
例:rpm -evh httpd
3,升级
rpm
-U 如果要升级的老版本不存在,则重新安装这个新包;如果存在,则对此进行升级
-F 只有要升级的老版本存在才升级
例:rpm -Uvh httpd-2.2.3-31.el5.i386.rpm(必须是全格式的包名)
4,查询
rpm
-q 查询软件包(查询是支持golobing方式的文件名通配)
例:rpm -q httpd 查询这个软件包是否安装
-qa 查询所有已经安装的包
-qi 显示指定软件包的摘要信息(例如软件包的安装时间,编译时间,大小等信息)
例:rpm -qi httpd
-qR 显示已安装的软件包的依赖包
例:rpm -qR httpd-2.2.3-31.el5.i386.rpm
-ql 显示这个软件包安装之后生成了哪些文件
例:rpm -ql httpd
-qc 显示这个软件包安装之后生成了哪些配置文件
例:rpm -qc httpd
-qd 显示这个软件包安装之后生成了哪些文档文件
例:rpm -qd http
-q --scripts 显示这个软件包安装时所执行的脚本
例:rpm -q --scripts httpd
-qf filename 显示这个文件由哪个软件包生成的
例:rpm -qf /etc/profile
-q --changelog 显示这个软件包每次制作都添加了哪些功能
例:rpm -q --changelog httpd
-p 查询一个未安装的本地存在的rpm包的相关信息
例:rpm -qpl httpd-2.2.3-31.el5.i386.rpm rpm -qpR httpd-2.2.3-31.el5.i386.rpm
5,校验
rpm
-V 校验这个软件包所生成的文件是否被改动过,如果被改动就会显示出来
-Va 列出系统上所有可能被修改过的文件
如图所示:
红线划的信息依次为:(如果这一项没有改动,则用“.”显示)
S:文件的大小是否被改变
M:文件的类型或文件的属性(rwx)是否改变
5:MD5码的内容已经修改过
D:设备的主次代号已经改变
L:链接路径已经改变
U:文件的所有者发生改变
G:文件的属组已经改变
T:文件的修改时间变化
黄线划的信息是指定文件的类型,有:
c:表示此文件为配置文件
d:表示此文件为配置文件
g:“鬼”文件,即该文件不被某个软件包所包含
l:表示此文件为授权文件
r:表示此文件为自述文件
蓝线表示这个软件包生成的被改变动过的文件