一、软件包管理简介
软件包分类:
1、源码包 //脚本安装包
❶源码包优点:
①开源,如果有足够的能力,可以修改源代码;
②可以自由选择所需的功能;
③软件是编译安装,所以更加适合自己的系统,更加稳定、效率更高;
④卸载方便。
❷源码包缺点:
①安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误;
②编译过程时间较长,安装比二进制安装时间长;
③因为是编译安装,安装过程中一旦报错新手很难解决。
❸脚本安装包:
所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行脚本实现一键安装。但实际安装的还是源码包和二进制包
①优点:安装简单、快捷;
②缺点:完全丧失了自定义性。
2、二进制包(RPM包)
❶二进制包的优点:
①包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
②安装速度比源码包安装快的多。
❷二进制包的缺点:
①经过编译,不再可以看到源代码;
②功能选择不如源码包灵活;
③依赖性。
二、Linux中rpm包命名规则
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包,然后安装即可。
4、yum在线安装:可以方便的解决依赖文件,一条命令就可以帮用户从网上(本地也可以)找到安装包进行安装。
注:RedHat的yum是收费服务,而CentOS的yum是免费服务。
三、Linux中rpm命令管理之安装命令
(1)包全名与包名
* 包全名:操作的包是没有安装的软件包时,使用包全名,而且注意路径。
* 如:/mnt/cdrom/Packags/zlib-devel-1.2.3.-27.e16.i686.rpm
* 包名:操作已经安装的软件包时,使用包名,搜索/var/lib/rpm/中的数据库。
* 如:zlib-devel
(2)RPM安装
* rpm -ivh 包全名
* -i (install) 安装
* -v (verbose) 显示详细信息
* -h (hash) 显示进度
* --nodeps 不检测依赖性(欺骗自己的操作)
笑死,安个包真的能忘了一开始安装的是哪个。
四、Linux中rpm命令管理之升级与卸载
1、升级命令
rpm -Uvh 包全名(要升级到的软件版本),如果没有安装这个软件的任何版本,这个命令可以代替rpm -ivh。
2、卸载命令
rpm -e 包名(比如Httpd,不需要包全名),这个命令不同于安装和升级,它可以在任何目录运行,原理是去/var/lib/rpm目录中的数据库(如__db0)中查找对应的软件包(已经安装过的rpm包都在这些数据库中),然后卸载。
3、--nodeps这个选项不管是在安装和卸载的时候,最好都不要使用。
4、rpm安装包安装的位置是由软件包开发者决定的,安装后的位置会非常凌乱,所以最好是使用rpm -e命令卸载。
Ps:相对于二进制安装,源码安装是指定安装目录了,卸载的时候只需要删除对应的目录就可以完全的卸载,不留一点残余。
五、Linux中rpm命令管理之RPM包查询
1) 查询是否安装
1-1) rpm -q 包名
# 查询包是否安装
1-1-1) -q (query) : 查询
1-2) rpm -qa
# 查询所有已经安装的RPM包
# rpm -qa | grep httpd : grep 后跟正则表达式, find 后跟通配符
1-2-1) -a (all) : 所有
2) 查询软件包详细信息
2-1) rpm -qi 包名
2-1-1) -i (infomation) : 查询软件信息
2-2) rpm -qip 包全名
2-2-1) -p (package) : 查询未安装报信息
# 有时遇到问题, 可根据未安装包信息中所提供的网站进行查询资料
3) 查询包中文件安装位置
3-1) rpm -ql 包名
3-1-1) -l (list) : 列表
3-1-2) -p (package) : 查询未安装包信息
# 可查看包作者欲将包安装的位置
4) RPM 包默认安装位置
5) 查询系统文件属于哪个 RPM 包
5-1) rpm -qf 系统文件名
# 该文件必须是通过 RPM 包安装的,否则查不到对应的位置
5-1-1) -f (file) : 查询系统文件属于哪个软件包
6) 查询软件包的依赖性
6-1) rpm -qR 包名
6-1-1) -R (requires) : 查询软件包的依赖性
6-1-2) -p (package) : 查询未安装包的信息