chapter22:源码与Tarball之(2)-Tarball的管理与安装

Tarball的安装是可以跨平台的,因为c 语言的跨平台特性,只是所用的编译器不同而已。

一.制作一个二进制文件要的基础软件

(1)gcc 等c语言的编译器

(2)make 和 autoconfig等

在Tarball中的config这个用于生成makefile文件的检测程序要有autoconfig的辅助.

(3)kernel提供的lib和include文件

centos/fedora中通常是在kernel-source 和kernel-header中.现在的系统中,通常默认是没有安装这些的,所以我们如果要以Tarball的方法自己安装的时候,如在

centos中,我们可以使用 yum grounpinstall "Development Tools" 来安装开发软件.如果安装的软件版本很老,可以使用升级: yum grounpinstall "Legacy Software Development".

 

二.安装一个Tarball的过程

这种软件是以源码的方式放出的,所以要先编译成可以执行的二进制文件,而Tarball是以tar这个命令来压缩的,所以我们要先解压,然后再到源码所在的目录下进行makefile的建立,再以make来进行编译与安装.整个过程如下:

(1)取得源文件,:将Tarball文件在/usr/local/src目录下进行解压缩.

(2)取得步骤流程:进入新建立的目录中,查看INSTALL与README相关的文件.(重要).

(3)相关属性软件的安装:根据INSTALL和REAME的内容查看并安装好一些相关的软件.(重要)

(4)建立makefile:以自动检测程序(configure/config)检测操作环境,并建立makefile文件.

(5)编译:以make这个程序并使用这个目录下的makefile作为它的配置文件,进行make .

(6)安装:以make这个程序,并以makefile这个配置文件,根据install这个目标(target)来指定安装到正确的路径.

注意,makefile这个文件中会有很多的目标,最常见的就是clean 和install,make clean意思是清除目标文件.编译完成后的可执行文件与相关的配置都还在源码所在的目录中,因此最后要进行make install来将其安装到正确的路径.

大部分安装的时候要用的命令有:

(1) ./configure

用于建立makefile这个文件,通常是开发者写的一个script文件来进行的.

(2)makeclean 

读取makefile中的clean操作,这个步骤不一定有,但是最好执行一下,因为我们不能保证源码里面没有之前编译过的目标文件.所以最好还是清除一下.

(3)make 

根据makefile进行默认的编译.最后得到的可执行的文件还是放在当前的目录下,还没有安装到预定的安装目录中.

(4)make install 

将(3) 中的文件安装到默认的目录中.

最后,成功安装软件,并且是安装到一个独立的目录/usr/local/packages中,我们还要将这个软件的man page写入到/etc/man.config中.

 

三.一般Tarball软件的安装.删除

 上面的过程中我们注意到,Tarball是在/usr/local.src里面解压的,这是因为Linux distribution发布的软件大多是在/usr面安装的,而用户自行安装的软件则建议放在/usr/local(默认)中.

同时,在默认的情况下,man会去查找/usr/local/man里面的说明文件,因此如果我们将自行安装的软件放到/usr/local中,这个软件的说明也就可以找到了.

所以我们一般将自己的软件放到/usr/local中,源码则放到/usr/local/src中.

例子:我们看看apache的目录,这个是linux distribution 默认安装的软件

/etc/httpd   :配置文件

/usr/lib        :函数库

/usr/bin       :可执行文件

/usr/share/man     :帮助文档

如果是我们以Tarball来安装,则

/usr/local/etc

/usr/local/bin

/usr/local/lib

/usr/local/man

但是如果我的每个软件都选择在这个默认的路径下,则所有软件都会放置在这四个目录下,以后不方便管理,所以我们更愿意选择一个单独的目录来安装一个软件.如我们将apache软件安装到

/usr/local/apache中,则上面的目录会变成

/usr/local/apache/etc

/usr/local/apache/bin

/usr/local/apache/lib

/usr/local/apache/man

这样一个软件就在一个单独的目录中了.删除时只用删除这个目录就可以了.如我们只用执行 

rm -rf/usr/local/apache

就算删除了这些软件.

这种方法也有不好的地方,如我们在执行一些命令的时候与这个命令是否在PATH这个环境变量所记录的路径有关.以上面的apache为例子,/usr/local/apache/bin肯定不在PATH里面,所以执行apache的命令就要使用绝对路径了.也可以将其加入到PATH里面.另外,/usr/local/apache/man也要加入到man page的查找路径中.方法如下:

在/etc/man.config的40~50行加入

MANPATH /usr/local/software/man

下面的一个例子是我们安装ntp.

步骤如下

(1)先将源码解压到/usr/local/src中.再进入源码目录中,查看INSTALL和README.

(2)查看configure支持的参数,并实际生成makefile文件

里面的prefix可以指定安装的目录.一般这个是比较重要的.

下面是生成makefile文件

这一过程中会查找gcc 和建立makefile文件.

(3)开始编译并安装

make clean ; make 

make check

make install

最后我们的软件安装到了/usr/local/ntp中.如下图

 

四.Tarball的升级

使用patch命令.

posted @ 2015-12-20 12:04  chuiyuan  阅读(183)  评论(0编辑  收藏  举报