1. 支持软件的安装

Linux下的绝大多数源码包都是用c语言编写的,还有少部分是用C++等其他程序语言编写的。所以,要想安装源码包,必须安装C语言编译器gcc (如果是用C++编写的程序,则还需要安装gcc-c++)。我们可以先检测一下gce是否已经安装,命令如下:

[root@localhost ~]# rpm -qa | grep gcc
gcc-4.8.5-36.el7.x86_64

如果没有安装gcc,则推荐大家采用yum安装方式安装。因为如果手工使用rpm命令安装,那么gcc所依赖的包太多了。命令如下:

[root@localhost ~]# yum install gcc -y

有了编译器,还需要考虑一个问题:刚刚写的“hello.c" 只有一个源码文件,所以我们可以利用gce手工编译。但是真正发布的源码包软件内的源码文件可能有成百上千个,而且这些文件之间都是有联系的,编译时有先后顺序。如果这样的源码文件需要手工编译,光想想就是一项难以完成的工作。这时就需要make命令来帮助我们完成编译,所以make也是必须安装的。我们也需要查看一下make是否已经安装,命令如下:

[root@localhost ~]# rpm -qa | grep make
make-3.82-23.el7.x86_64
  1. 源码包从哪里来

RPM包是保存在CentOS的安装光盘中的,那么源码包从哪里来呢?是从官方网站上下载的,我们依然以下载和安装apache为例。前面已经说过,源码包和RPM包都需要安装apache,目的是区分一下源码包和RPM包。

源码包安装

  1. 注意事项

在安装之前,我们先来解释一下源码包的安装注意事现。

  • 软件包是从互联网上下载的。
  • 下载的软件包格式。 下载格式一般都是压缩格式,常见的是“tar.gz" 或“tar.bz2”,选择你习惯的格式下载即可。
  • 下载之后的源代码保存位置,Linux是个非常严谨的操作系统,每个目录的作用都是固定而目明确的。作为管理员,养成良好的操作习惯非常重要, 其中在正确的目录中保存正确的数据就是一个约定俗成的习惯。在系统中保存源代码的位置有两个:“/usr/src/”和“/usr/local/src/”。其中,“/usr/src/”用来保存内核源代码;“/usr/local/src/”用来保存用户下载的源代码。
  • 软件安装位置。我们刚说了Limux非常注意每个目录的作用,所以安装软件也有默认目录,即即“/usr/local/软件名”。我们需要给安装的软件包单独规划一个安装目录,以便于管理和卸载。大家可以想象一下,如果我把每个软件都安装到“/usr/local/” 目录下,但是没有给每个软件单独分配个安装目录,那么以后还能分清哪个软件是哪个软件吗?这样一来也就不能正确地卸载软件了。
  • 软件安装报错。源码包如果安装不报错,那么安装还是很方便的。但是报错后对刚学习的人来说还是有难度的,不过我们先要知道什么样的情况是报错。报错有两个典型特点,这两个特点必须都具备才是报错:其一是出现"error” 或“warming” 字样,其二是安装过程停止。如果没有停止但是出现警告信息,那么只是软件中的部分功能不能使用,而不是报错。
  1. 安装步骤

我们来解释一下源码包安装的具体步骤。

  1. 下载软件包;
  2. 解压缩;
  3. 进入解压目录;
  4. /cofigure软件配置与检查;

这一步主要有三个作用:①在安装之前需要检测系统环境是否符合安装要求。②定义需要的功能选项。“./configure”支持的功能选项较多,可以执行“./configure --help”命令查询其支持的功能。一般都会通过“./configure –prefix=安装路劲”来指定安装路劲。③把系统环境的检测结果和定义好的功能选项写入Makefile文件,后续的编译和安装需要依赖这个文件的内容。

需要注意的是,configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以须采用“./configure”方式执行(“./”代表载当前目录下)。

  1. make编译;

make会调用gcc编泽器,并读取Makefile文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被Linux识别的可执行文件,这些可执行文件保存在当前目录下。编译过程比较耗时,需要有足够的耐心。

  1. Make clean:清空编译内容(非必须不走)

如果在“./configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行make clean命令,它会清空Makefile文件或编译产生的“.io”头文件。

  1. Makeinstall:安装

这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个命令的执行过程保存下载,以备将来删除使用。

  1. 举例安装apache
  2. 下载apache源码包;
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://archive.apache.org/dist/httpd/httpd-2.2.10.tar.gz
  1. 解压缩源码包;
[root@localhost src]# tar xf httpd-2.2.10.tar.gz
  1. 进入解压目录;
[root@localhost src]# cd httpd-2.2.10
  1. 软件预编译配置;
[root@localhost httpd-2.2.10]# ./configure --prefix=/usr/local/apache

选项

说明

--prefix=path

指定安装位置;

这里的安装选项没有加载其他功能,只是指定了安装目录。“/usr/local/apache”目录不需要手工建立,安装完成后会自行建立,这个目录是否生成也是检测软件是否正确安装的重要标志。

当然,在配置之前也可以查询下apache支持的选项功能,命令如下:

[root@localhost httpd-2.2.10]# ./configure --help | more
#查询apache支持的选项功能(不是必须步骤)
  1. 编译;
[root@localhost httpd-2.2.10]# make

这一步命令较为简单,但是编译时间较长,主要作用是把源码文件转换为二进制文件。

  1. 安装;
[root@localhost httpd-2.2.10]# make install

如果这一步不报错,这一步完成后就安装成功了。