Linux下的程序包管理之源码形式


 Linux下程序包管理之源码形式
程序包的前世今生:

   说到程序包管理,不得不提到是就是程序包是由什么组成的?也就是怎么形成的?程序是由源代码程序经过预处理、编译、然后汇编形成二进制的程序,这是针对特定硬件而形成的程序。有计算机编程基础的同学都应该知道源代码编译的时候是要调用特定的库(库文件),而这些库,在不同的系统上是不同的,比如Linux和window上的就不同,不同发行版的Linux上的库也不尽相同,所以这就导致了在不同种类系统上编译生成的二进制程序的运行环境也不尽相同,那么这些程序是不能在不同种类上的系统上运行,也就是说只能针对某一特定版本的系统运行(这点一定要记住,在后面的RPM程序包管理器上还会提到)。


   既然是Linux下的程序包管理,那我这里就以Linux为基础说明了,后面的内容默认在centos发行版上说明。在centos上,二进制程序是生成了,但是要想让它在上面运行,还需要其他的东西?


  • 库文件是必须要有的,在前面已经说过了,程序运行需要对应的库文件,所以这个必须要有。

  • 程序要以某种配置运行,那它的配置要放在哪里呢?在Linux中一切皆文件的思想就在这里显现出来了,配置是放在文件中的,叫配置文件,所以配置文件是必不可少的。

  • 程序是有了,但是怎么用?对了,帮助文档也必须要有,通常是doc或者man,有了这些帮助文档,之后就算是以前没有用过这个程序的小白用户也能看着这些帮助文档去使用它。

  • 再加上上面生成的二进制程序

  

   以上四点加起来就组成了程序包







源代码程序包版本:

  程序的源代码会被归档压缩成.tar.gz或者.tar.bz2或者.tar.xz种类的文档,形如bash-4.3.2.tar.gz类型的文件,其中


  •         bash叫源代码程序包名

  •         4是主版本号

  •         3是次版本号

  •         2就是发型号也叫做修订号







关于开源软件:
   现在开源很流行,比如Java、MySQL、PHP等等,这些开源软件在开发的时候会依赖很多其他的开源软件的功能,它们之间会有很多依赖关系,所以好多开源软件向外面发布的时候通常会以源代码的格式向外发布,这样的话,用户想用这个软件的话直接获取到软件的源代码,然后在自己的环境上通过预处理、编译、汇编等形成二进制软件,然后再通过一些设置,库文件的设置、头文件的设置帮助文档的设置等,这个程序就能正常使用了,下面要说的就是这种通过源码方式获取程序的过程。
源码程序形式的特点:
  •   兼容性很好,可控制性很好,可以定制:因为最后的二进制程序是在自己的环境中编译生成的,库文件肯定没有问题,那么程序运行不会有问题的

  •  操作很复杂,编译时间很长,非常容易出错(这也是为什么会有程序包管理器RPM):步骤多、不同源代码所需要的库不同,所以非常容易出错,不是缺这个库文件,就是缺那个库文件;


下面就以源码形式安装nginx来给大家演示源码安装的步骤:
实验环境:
  •        CentOS 6.6(64bit)内核是2.6.32-504.el6.x86_64

  •        nginx-1.6.1.tar.gz



编译安装C源程序的步骤:
  1. ./configure: 检查编译环境,并根据指定的选项确定编译的特性、安装路径等;

  2. make : 调用所需要的编译器根据makefile配置文件定义执行编译过程;

  3. make install: 安装程序


操作步骤:

# 解压压缩包

[root@localhost ~]# tar xf nginx-1.6.1.tar.gz

# 进入到解压后的目录中

[root@localhost ~]# cd nginx-1.6.1

# 执行如下命令,查看执行./configure 所需要的参数

# --prefix==PATH 设定安装位置

# --user=USER 设定可以启动这个程序的用户

# --group=GROUP 设定可以启动这个程序的用户的属组

# 也可以看看其他的需要注意的参数,看看有没有需要设定的

[root@localhost nginx-1.6.1]# ./configure --help


  --help                             print this message


  --prefix=PATH                      set installation prefix

  --sbin-path=PATH                   set nginx binary pathname

  --conf-path=PATH                   set nginx.conf pathname

  --error-log-path=PATH              set error log pathname

  --pid-path=PATH                    set nginx.pid pathname

  --lock-path=PATH                   set nginx.lock pathname


  --user=USER                        set non-privileged user for

                                     worker processes

  --group=GROUP                      set non-privileged group for

                                     worker processes


  --builddir=DIR                     set build directory


  --with-rtsig_module                enable rtsig module

  --with-select_module               enable select module

  --without-select_module            disable select module

  --with-poll_module                 enable poll module

  --without-poll_module              disable poll module








   

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。