linux软件包的管理

君不见长松卧壑困风霜,时来屹立扶明堂。这篇文章主要讲述linux软件包的管理相关的知识,希望能为你提供帮助。
(一)软件包的分类:
(1)源码包:
①优点:
1、开源,如果有足够的能力,可以修改源代码


2、可以自由选择所需的功能


3、软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高


4、卸载方便{直接删除安装目录}




②缺点:
1、安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误


2、编译过程时间较长,安装比二进制安装时间长


3、因为是编译安装,安装过程中一旦报错新手很难解决








(2)脚本安装包:源码包在开发,不用一步一步安装{直接运行安装的脚本即可}
脚本安装包并不是独立的软件包类型,常见安装的是源码包。是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。非常类似于Windows下软件的安装方式。










(3)二进制包{软件厂商把源码包已经进行了编译,在安装的时候看不到源代码,特点是安装速率快}{RPM,系统默认包}
①优点:
1、包管理系统简单,只通过几个命令就可以卖现包的安装、升级、查询和卸载


2、安装速度比源码包安装快的多




②缺点:
1、经过编译,不再可以看到源代码


2、功能选择不如源码包灵活


3、依赖性




③rpm包默认安装位置:
1、/etc/:配置文件安装目录


2、/usr/bin/:可执行的命令安装目录


3、/usr/lib/:程序所使用的函数库保存位置


4、/usr/share/doc/:基本的软件使用手册保存位置


5、/usr/share/man/:帮助文件保存位置






④RPM包命名规则:
httpd-2.2.15-15.el6.centos.1.i686.rpm
1、httpd:软件包名




2、2.2.15:软件版本




3、15:软件发布的次数




4、el6.centos:适合的Linux平台




5、i686:适合的硬件平台




6、rpm:rpm包扩展名




7、包名和包全名的规则:
< 1> 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径包名:


< 2> 操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库








(4)安装位置不同带来的影响:
①RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法有2种:
1、/etc/rc.d/init.d/httpd start//使用绝对路径启动:


2、service httpd start//使用系统命令来启动,这个命令一般是红帽系列才有的,其中service的意思是去“/etc/rc.d/init.d下去找有没有这个httpd的服务”如果有的话就启动,但是带的问题是如果是通过源码包安装的软件就没法通过"service"来实现重启




②源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:
1、/usr/local/apache2/bin/apachectl start










(二)源码包的安装:
(1)源码包安装位置:
①安装在指定位置,一般是/usr/local/软件名/
②源代码保存位置:/usr/local/src/








(2)源码包安装过程:
①安装gcc编译器




②上传软件包到指定位置




③解压安装包的目录,并且进入到该目录




④阅读安装步骤:







< 1> $ ./configure --prefix=PREFIX//软件的配置和检查,/configure--help,使用帮助;./configure--prefix=/usr/local/apache2//定义apache的安装位置
定义需要的功能和选项
检测系统环境是否符合安装要求
把定义好的功能和检测系统环境的信息都写入Makefile文件中,用于后续的编辑




< 2> $ make//make的作用就是把源码包编译成机器语言;make clean //可以清空make产生的临时文件






< 3> $ make install//这时候才会写入真正的数据






< 4> $ PREFIX/bin/apachectl start//启动安装的业务,这里的“ PREFIX”意思是路径的意思,安装的时候放在哪里就从哪里进入启动
/usr/local/apache2/bin/apachectl start






⑤源码包的卸载:直接把安装的文件夹给删除掉
rm -fr/usr/local/apache2/






⑥注意事项:什么时候选择源码包什么时候选择rpm包:
1、源码包是经过编译的执行效率更高,也会对外访问, 更加适合当前的计算机,应该选择源码包安装
2、不对外访问比如gcc选择rmp包安装更加简单








(三)RMP安装前的问题--> 包的依赖性:
(1)树形依赖:a-> -b> -> c








(2)环形依赖:a-> -b> -> c-> a








(3)模块依赖:http://www.rpmfind.net/








(四)rpm-rpm包的安装中的事宜:
(1)rmp -ivh包全名:








(2)选项:
①i:安装


②v:显示详细信息


③h:显示进度


④--nodeps:不检测依赖性








(3)安装过程:{要进到安装包的路径或者指定绝对路径}
①安装要安装的主包使用“包全名”“提示”错误
[root@kvm Packages]# rpm -ivhhttpd-2.4.6-90.el7.centos.x86_64.rpm
错误:依赖检测失败:
/etc/mime.types 被 httpd-2.4.6-90.el7.centos.x86_64 需要
httpd-tools = 2.4.6-90.el7.centos 被 httpd-2.4.6-90.el7.centos.x86_64 需要
libapr-1.so.0()(64bit) 被 httpd-2.4.6-90.el7.centos.x86_64 需要
libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-90.el7.centos.x86_64 需要


②复制被依赖的“名字”,比如“/etc/mime.types”去rpm依赖网站去寻找系统对应的rpm包,然后安装,一步一步依赖







③先安装这个包 rmp -ivhmailcap-2.1.41-2.el7.noarch.rpm









(4)RPM包升级:{要进到安装包的路径或者指定绝对路径}
①rpm -Uvh 包全名:




②选项:
U:升级








(5)RPM包卸载:
①rpm-evh 包名




②选项:
e:卸载








(6)RPM包的查询:
①rpm-qi包名




②选项:
1、q:查询


2、i:详细信息


3、p:查询未安装包信息


4、a:所有













(7)查询RPM包的安装位置:
①rpm -ql 包名




②选项:
1、l:列表


2、q:查询安装包的信息






(8)查询未安装的RPM包的可能会安装的位置:
①rpm -qlp 包全名




②选项:
1、l:列表


2、q:查询安装包的信息


3、p:查询未安装包的信息


【linux软件包的管理】


    推荐阅读