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编译器



②上传软件包到指定位置



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



④阅读安装步骤:


\'linux软件包的管理_软件包的管理\'



<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包,然后安装,一步一步依赖

\'linux软件包的管理_软件包的管理_02\'




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

\'linux软件包的管理_软件包的管理_03\'





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

①rpm -Uvh 包全名:



②选项:

U:升级





(5)RPM包卸载:

①rpm -evh 包名



②选项:

e:卸载





(6)RPM包的查询:

①rpm -qi 包名



②选项:

1、q:查询


2、i:详细信息


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


4、a:所有



\'linux软件包的管理_软件包的管理_04\'





(7)查询RPM包的安装位置:

①rpm -ql 包名



②选项:

1、l:列表


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




(8)查询未安装的RPM包的可能会安装的位置:

①rpm -qlp 包全名



②选项:

1、l:列表


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


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



以上是关于linux软件包的管理的主要内容,如果未能解决你的问题,请参考以下文章

linux 软件包管理器

linux软件包管理

Linux软件管理器(如何使用软件管理器来管理软件)

linux发行版的软件包安装管理程序

Linux软件包管理

Linux--软件包管理yum