linux软件包的管理
Posted 武云医生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 -ivh httpd-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 -ivh mailcap-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软件包的管理的主要内容,如果未能解决你的问题,请参考以下文章