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命令.