linux软件安装
软件包分类:
一、源码包
1.源码包优点:
1开源,如果有足够的能力,可以修改源代码;
2可以自由选择所需的功能;
3软件是编译安装,所以更加适合自己的系统,更加稳定、效率更高;
4卸载方便;
2.源码包缺点:
1安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误;
2编译过程时间较长,安装比二进制安装时间长;
3因为是编译安装,安装过程中一旦报错新手很难解决;
3.脚本安装包:
所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行脚本实现一键安装。但实际安装的还是源码包和二进制包
1优点:安装简单、快捷;
2缺点:完全丧失了自定义性;
二、二进制包(RPM包)
1.二进制包的优点:
1包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
2安装速度比源码包安装快的多;
2.二进制包的缺点:
1经过编译,不再可以看到源代码;
2功能选择不如源码包灵活;
3依赖性;
rpm命令管理
rpm包命名规则
httpd-2.2.15-15.el6.centsos.1.i686.rpm
httpd软件包名-2.2.15软件版本-15发布的次数-el6.centos适合的Linux平台-i686适应的硬件平台-rpm包扩
展名,el6是redhat的企业版
1、RPM包的来源:
所有RPM包都在系统光盘的Packages目录中
2、RPM包命名规则:
软件包名-软件版本-软件发布的次数-适合的Linux平台-适合的硬件平台-包扩展名
3、RPM包依赖性:
a、树形依赖:
a->b->c 解决方法:从后往前安装
b、环形依赖:
a->b->c->a 解决方法:放在一条命令中安装即可
c、模块依赖:
库文件依赖,库也叫模块,就是linux当中的函数,它有一个典型的特征,就是以”.so.数字”结尾,它依赖的其实是一个文件,而不是软件包。该文件藏身在某一个软件包当中。我们只要将该文件所在的软件包安装上,该文件也就安装了。解决方法:登录www.rpmfind.net网站,输入库文件名称查询到对应的rpm包,然后安装即可。
rpm 安装
rpm -ivh 包全名
包全名:完整的包名,安装和更新时用包全名(未安装过的包)
包名:在操作已经安装的包是使用包名
选项:
-i (install) 安装
-v (verbose) 显示详细信息
-h (hash) 显示进度
--nodeps 不检查依赖性
一般先装主包,再装附包(必须解决依赖性,用–nodspe装上了)
升级与卸载
1、升级命令
rpm -Uvh 包全名(要升级到的软件版本)
如果没有安装这个软件的任何版本,这个命令可以代替 rpm -ivh。
另外补充:
在Ubuntu中:sudo apt-get update ——更新软件包列表
sudo apt-get upgrade ——更新(或者说升级嘛)所有已安装的包
2、卸载命令
rpm -e 包名(比如httpd,不需要包全名)
这个命令不同于安装和升级,它可以在任何目录运行,原理是去/var/lib/rpm目录中的数据库(如__db0)中查找对应的软件包(已经安装过的rpm包都在这些数据库中),然后卸载。
注意:–nodeps这个选项不管是在安装和卸载的时候,最好都不要使用。
rpm安装包安装的位置是由软件包开发者决定的,安装后的位置会非常凌乱,所以最好是使用rpm -e命令卸载。
相对于二进制安装,源码安装是指定安装目录了,卸载的时候只需要删除对应的目录就可以完全的卸载,不留一点残余。
rpm 包查询
1.查询是否安装:
rpm -q 包名 (查询包是否安装,query)
rpm -qa (查询所有已经安装的rpm包,all)
2.查询软件包详细信息:
rpm -qi 包名 (查询软件信息,information)
rpm -qip 包名 (查询未安装包信息,package)
3.查询包中文件安装位置:
rpm -ql 包名 (l , list,列表)
rpm -qlp 包名 (查询未安装包信息,package)
4.查询系统文件属于哪个RPM包:
rpm -qf 系统文件名 (查询系统文件属于哪个软件包,file)
5.查询软件包的依赖性:
rpm -qR 包名 (-R 查询软件包的依赖性 ,requires )
rpm -qRp 包名 (-p 查询未安装包信息 ,package)
rpm包的默认安装路径
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序程序说使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件的保存位置
rpm 包的效验
1.效验
rpm -V 已安装的包名
-V (verify) : 校验指定RPM包中的文件
rpm -V httpd
执行后, 无任何提示, 代表该文件没有被做任何修改判断本地的apache 与官方给出的是否一致, 从而判断是否被人修改
修改文件
文件目录:/etc/httpd/conf/httpd.conf 在注释行添加任意内容后, 再次执行
提示 : S.5....T. c /etc/httpd/conf/httpd.conf
2.验证内容中的8个信息:
S : 文件大小是否改变
M : 文件的类型或文件的权限( rwx )是否被改变
5 : 文件MD5 校验和是否改变( 可以看成文件内容是否改变 )
D : 设备的主从代码是否改变
L : 文件路径是否改变
U : 文件的属主( 所有者 ) 是否改变
G : 文件的属组是否改变
T : 文件的修改时间是否改变
3.验证内容中的文件类型
c (config file) : 配置文件
d (documentation) : 普通文档
g (ghost file) : "鬼"文件, 很少见, 就是该文件不应该被这个RPM包包含
L (license file) : 授权文件
r (read me) : 描述文件
4.MD5校验
用来校验文件的完整性(文件内容是否被改变)
例如, 在官网下载的游戏, 官方会给出MD5校验码, 将下载的游戏通过专用的MD5校验工具校验后生成一份MD5校验码, 对比两份校验码
是否一致, 不一致则说明,下载的文件可能丢包, 可能文件损坏, 可能被其他人动过手脚一直木马等
如果安装报下面警告的解决方法详见(http://blog.csdn.net/forever_kirito/article/details/78368570)
warning: httpd-2.2.15-5.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
这个警告的解决方法:
rpm –import /etc/pki/rpm-gpg/RPM*