细说Linux下软件包的安装与管理
一 源码安装方式
由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache、tomcat、php等软件。开源软件基本都提供源码下载,源码安装的方式;源码安装的好处是用户可以自己定制软件功能,安装需要的模块,不需要的功能可以不用安装,此外,用户还可以自己选择安装路径,方便管理,卸载软件也很方便,只需删除对应的安装目录即可。没有windows所谓的注册表之说。
源码安装软件一般有以下几个步骤组成:下载解压源码、分析安装平台环境(ifconfigure)、编译安装软件(make,make install)。下面我们分别介绍。
1.1 下载解压源码
linux下软件的源码一般都是C或者C++语言编写的,并且都会在软件的上提供源码包下载,例如apache开源项目的为,此外在网上的很多开源社区一般也提供一些常用软件的源码下载,源码都打包成压缩文件,常见的源码打包压缩格式有“.”、“.tar.baz
2”等。我们可以从网站上首先下载源码文件,然后在传到所在的linux系统下,如果你的linux系统处于联网状态下,也可以直接在系统内通过wget之类的下载命令将源码包直接下载到linux系统下。
下载完成,把相应的软件解包即可,针对下载软件包的不同,使用不同的方法进行解压,解压完毕后进入解压生成的目录中,在这个目录下,一般都存在一个REDAME文件,这个文本文件非常重要,它详细的介绍了这个软件所能完成的功能、授权许可、安装需求、安装注意事项、安装方式等等,由于linux各个版本的差异,以及安装环境的不同,软件的安装方式也不尽相同,所以在安装软件前,一定要事先阅读这个README文件,确保安装的正确性。
1.2 分析安装平台环境
在软件包解压完毕之后,我们进入源码目录,一般都会存在configure和README这么两个文件,README就是上面我们讲到的,是对软件的介绍和安装说明;linux下软件的安装受到操作系统安装环境的影响,比如某些软件在安装或者运行过程中需要调用操作系统本身的库文件,或者需要运行系统的某个工具等等,但是系统中不存在这个库文件或者这个工
具没有安装,那么安装或者运行软件就会失败。
为了避免这个问题的出现,在安装软件的时候就需要分析操作系统环境,检测当前系统是否拥有安装软件所需的所有文件和工具,如果系统缺少某个文件,就给出提示,直到满足软件的所有需求为止。这个就是configure文件的功能,configure文件一般是个可执行文件,可以在当前目录下直接输入“./configure”进行软件安装的环境测试,如果提示缺少某些安装包,就需要进行安装,直到测试通过。通常的,源码安装都需要GCC或者CC编译器,这些编译器一般在安装系统时定制安装包中的开发工具选项下,其实这也是我们在第二章安装linux系统中要求选择开发工具包的原因所在。
此外,在执行configure分析软件需求时,还可以在“./configure”后面加上软件的安装路径以及安装所需的模块等等一些选项,来定制用户需要的软件功能。
1.3 编译安装软件
在验证软件安装环境后,正式进入软件的编译步骤,在进行编译前,首先了解下关于编译的一些基础知识。
在linux系统下,make是我们经常用到的编译命令,无论是安装软件还是项目开发,都会经常用到编译安装命令,也就是make和make install,对于一个包含很多源文件的应用程序,使用make和makefile工具可以简单快速的解决各个源文件之间复杂的依赖关系,同时,make工具还可以自动完成所有源码文件的编译工作,并且可以只对上次编译后修改过的文件进行增量编译,因此,熟练掌握了make和makefile工具之后,源码安装软件就变的像windows下安装软件一样简单。
Makefile文件
make工具最主要的功能就是通过makefile文件来实现的,makefile文件是按照某种语法来进行编写的,文件中定义了各个源文件之间的依赖关系,并说明了如何编译源文件并生成可执行文件,它通过描述各个源程序之间的关系让make工具自动完成编译工作。
在linux系统下,习惯用Makefile替代makefile文件,我们在执行configure通过后,就会在当前目录下生成这个文件,一般情况下在命令行输入make时,make命令会默认去寻当前目录下的Makefile文件,如果我们用其它文件作为makefile,就要在make命令选项后指定makefile文件,例如我们设定编译规则文件为make_file,就需要使用以下命令指定:
[root@WEBServer ~]#make -f make_file
下面我们通过举例了解下Makefile的编写原则和内容。
例如有一个test程序,有三个源文件file1.c、file2.c、file3.c以及库文件LS编译生成,这三个源文件还分别包含了自己的头文件1.h、2.h、3.h。通常,C编译器将会输出三个目标文件file1.o、file2.o、file3.o。假定file1.c和file3.c都要声明用到一个apcs的文件,但是file2.c不用,也就是在file1.c和file3.c文件中都有类似“#include “apcs””的声明。
下面这段代码就是对test程序的描述:
1:#It is a example for describing makefile
2:test: file1.o file2.o file3.o
linux下gcc编译的四个步骤3:cc file1.o file2.o file3.o -LS -o test
4:file1.o: file1.c 1.h apcs
5:gcc -c file1.c
6:file3.o: file3.c 3.h apcs
7:gcc -c file3.c
8:file2.o: file2.c c.h
9:gcc -c file2.c
这个描述文档其实就是一个makefile文件,第一行为注释行,第二行指定test程序有file1.o、file2.o、file3.o链接生成,第三行描述了如何从test所依赖的文件建立可执行文件,接下来的第四、六、八行定义了三个目标文件和它们依赖的“.c”、“.h”和“apcs”文件。剩下的第五、七、九行定义了如何从目标依赖的文件生成可执行文件。
在了解Makefile文件结构后,我们就可以控制编译的选项,定制自己所需的软件功能。
接下来,我们只需在命令行输入make命令,即可进入编译阶段,根据软件源程序的大小和系统的硬件配置,编译时间不定,编译完毕,会在当前目录以及子目录下生成相应的可执行文件,接下来就进入最后的安装软件阶段,在命令行输入make install命令,开始安装
软件,安装进程会首先创建安装目录,如果我们没有指定安装的目录,安装程序默认会安装在系统的/usr/local目录下创建安装目录,然后将相应的文件和可执行程序从源码目录拷贝到安装目录下,这样安装就完毕了。
1.4 源码安装Apache Http server
下面我们通过源码安装apache,实例讲解linux下源码的安装方式。
1. 下载解压apache源码
[root@WEBServer~]#mkdir /apache  #在根目录下创建一个apache目录
[root@WEBServer~]#cd /apache  #切换到apache目录
[root@WEBServer apache]#wget \  #下载apache源码
>/httpd/httpd-2.2.9.tar.bz2
[root@WEBServer apache]#tar -jxvf httpd-2.2.9.tar.bz2 #解压apache源码
[root@WEBServer apache]#ls  #显示解压结果
httpd-2.2.9   httpd-2.2.9.tar.bz2
2. 测试安装环境
[root@WEBServer apache]#cd httpd-2.2.9 #切换到httpd-2.2.9目录下
[root@WEBServer httpd-2.2.9]#./configure  --prefix=/opt/apache2.2.9 \
>--enable-so \
>--enable-mods-shared=most \
>--enable-proxy-balancer=shared \
>--enable-proxy-http=shared \
>--enable-proxy-ajp \
>--enable-rewrite
注意:上面我们指定apache的安装目录为/opt/apache2.2.9,同时指定需要编译的apache模块。
下面分别介绍这些模块代表的含义,更详细的请参看apache文档。
--enable-so选项:表示让 Apache 可以支持DSO模式,这里采用的是 Apache2.0以后的语法。如果你的Apache 是1.3版本,应改为“--enable-module=so”。
--enable-mods-shared=most选项:表示动态编译大部分常用的模块,当然,也可以有选择的加载一些模块,most意思是只包含通常用的模块,并且以动态加载模式加载。如果用的是 Apache1.3, 改为“--enable-shared=max”即可。
--enable-proxy-balancer=shared选项:表示让apache支持负载均衡功能,即动态的编译apache的负载均衡模块。
--enable-proxy-http=shared选项:表示动态编译apache的http代理模块。
--enable-proxy-ajp选项:表示动态编译apache的proxy-ajp模块。
-
-enable-rewrite选项:让apache支持地址重写功能,即动态编译apache的rewrite模块。
3.编译安装软件
[root@WEBServer httpd-2.2.9]#make
[root@WEBServer httpd-2.2.9]#make install
安装完毕,apache被安装到/opt/apache2.2.9下,接下来我们就可以使用apache软件了。
二 RPM包方式安装
2.1 RPM包管理工具介绍
RPM是Red Hat Package Manager的缩写,本意就是Redhat软件包管理,是最先由Redhat公司开发出来的linux下软件包管理工具,由于这种软件管理方式非常方便,逐渐被其它linux发行商所借用,现在已经成为linux平台下通用的软件包管理方式,例如Fedora 、Redhat、suse、Mandrake等主流linux发行版本都默认采用了这种软件包管理方式。
RPM包管理类似于windows下的“添加/删除程序”但是功能却比“添加/删除程序”强大很多。在Linux的系统安装光盘中,有很多以“.rpm”结尾的软件包,这些包文件就是我们所说的RPM文件。每个RPM文件中包含了已经编译好的二进制可执行文件,其实就是将软件源码文件进行编译安装,然后进行封装,就成了RPM文件,类似与windows安装包中的“.exe”文件。此外RPM文件中还包含了运行可执行文件所需的其它文件,这点也和windows下的软件包类似,windows程序的安装包中,除了“exe”可执行文件,还有其它依赖运行的文件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。