为什么有RPM包还需要自己手动编译安装程序包呢?

因为笔者的水平有限,对此问题有两种自己的回答:

1.由于网络上的RPM包是作者自己用自己机器编译的,并不适合各种平台的硬件平台。 好比作者自己的机器是X86_64架构的,而你的机器是i386,那很不幸运,不适合你,只能下载源码手动安装了。

2.如果你是在大公司做运维的话,为了服务器系统的安全,你不可能轻易去网上下载RPM包安装的,因为别人可能恶意的注入木马后门什么也不是不可能的,所有为了安全期间,还是要自己手动进行编译安装的。

自己手动编译安装难不难呢,大概都需要哪些步骤呢?

那我先在这里大概讲下哪些步骤,然后在下面进行详解。

1.安装编译环境。

2.下载httpd程序包(源码)

3.编译,安装

呵呵,是不是相当的简单呢,好了,下面就进去详细的步骤了

1.安装编译环境

安装编译环境,顾名思义就是安装编译需要的编译器了。

大概有多少种编译器呢,我们可以在使用yum groupinfo Development tools 进行包组的查看了。有的读者也许还不懂这个命令的含义,我在写完这个博文后,会单独开设一个博文讲解yum命令和yum 仓库的,其实也很简单,不要畏惧。

手动在linux中源码编译安装httpd_程序

手动在linux中源码编译安装httpd_网络_02

当然,一个Development tools中有好多的编译工具,你不需要挑选,直接统统安装就可以了。

安装 Development tools 很简单,直接 yum install Development tools 。因为笔者的网速很烂,从yum库安装起来很慢,因为之前安装了,所以就不现场演示安装过程了。

当你安装成功后,运行查看所有包组的命令:yum grouplist 就可以查看是否已经安装成功。

手动在linux中源码编译安装httpd_linux_03

好了,第一步就这么轻松的搞定了。

2.下载httpd源码包

在网上找到源码的地址,如图所示:

 手动在linux中源码编译安装httpd_linux_04

复制链接地址后,进去xshell中在命令行中输入:

wget 链接地址,下载下来的源码包就存在你当前的路径下。

手动在linux中源码编译安装httpd_服务器_05

下载好源码之后解压出来,在当前目录上使用:ls 查看源码包是用哪种格式的压缩文件压缩的。

手动在linux中源码编译安装httpd_程序_06以.tar.bz2结尾的文件,是用bzip2压缩用tar归档的的,可以使用tar –jxf httpd-2.2.25.tar.bz2解压缩并展开归档。得到一个文件名为:httpd-2.2.25

接下来就是进去到 httpd-2.2.25目录中,使用命令:cd httpd-2.2.25。

我们在编译之前还需要定义一下,对当前程序编译时启用哪些特性或者功能,已经自定义安装路径等等。包中的 configure 脚本就是用来设置的,说到这里有必要让大家对这个编译前的设定做一个更深入的介绍。

包中有个makefile.in 和 configure 两个文件,这两个文件是为一个步编译(make命令)生成配置文件的,当然不设置也是可以的,他是按照自己的默认配置默认的安装。

其中有几个常用的重要的配置:

1,我们可以指定安装的路径。

    --prefix = /user/local/package-name

    --sysconfdir=/etc/package-name

2, 指定启用的特性:

    --enable-feature(特性)     例如: –enable-socket  配置不启用套接字功能。

    --disable-feature            例如:  -disable-socket 配置启用套接字功能

3, 指定所依赖的功能,程序或文件

    --with-function:  启用某功能

    --without-functions:不启用某功能

当然了不同的程序,他们的configure脚本的功能不同,设置也不太一样,可以获取帮助信息。

我们直接来执行 configure脚本,让其生成make的配置文件。

3,编译安装

编译:直接用make命令。

安装:make install

到此为止就安装好了。

手动在linux中源码编译安装httpd_网络_07

---------------------------------------------------------------------------------------------------------------------------------------------

以上是安装好了,顾名思义下来就是要运行了,运行之前能需要设置下环境变量,这样才能让我们在shell中输入程序的时候,好让shell能够找到我们的源程序的位置来进行启动。当然这个设置是写入配置文件的,永久有效而不是只是针对当前的shell。