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

  • 相关阅读:
    EditPlus等编辑器选中列(块)的方法
    构建Springboot项目的3种方式
    STS各版本下载
    Spring Boot 各版本的Java版本要求
    Maven安装
    Linux find命令:在目录中查找文件(超详解)
    rpm命令怎么指定安装位置
    CentOS6.8安装RabbitMQ
    codeforces459D:Pashmak and Parmida's problem
    codeforces 705B:Spider Man
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/5060579.html
Copyright © 2020-2023  润新知