文章目录
Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。
Linux下的软件包可分为两种,分别是源码包、二进制包
一、Linux源码包
(一)概念
实际上,源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。
源码包是Linux中软件包的另一种形式,需要在计算机上进行编译以后才可以产生可以直接运行的二进制程序。源代码包里面包括了程序的程序代码,一般就是我们能认识的C语言文件,因此在安装源码包的时候通常会检索系统中是否正确安装gcc编译器,并且源代码安装的时间会比较长。
计算机只能识别机器语言,也就是二进制语言,所以源码包的安装需要一名“翻译官”将“abcd”翻译成二进制语言,这名“翻译官”通常被称为编译器。
“编译”指的是从源代码到直接被计算机(或虚拟机)执行的目标代码的翻译过程,编译器的功能就是把源代码翻译为二进制代码,让计算机识别并运行
另外,由于源码包的安装需要把源代码编译为二进制代码,因此安装时间较长。
比如,在 Windows下安装 QQ,QQ 功能较多,程序相对较大(有 70 MB左右),但由于其并非是以源码包的形式发布,而是编译后才发布的,因此只需几分钟(经过简单的配置)即可安装成功。但如果我们以源码包安装的方式在 Linux 中安装一个 MySQL 数据库,即便此软件的压缩包仅有 23 MB左右,也需要 30 分钟左右的时间(根据硬件配置不同,略有差异)。
源码包一般包含多个文件,为了方便发布,通常会将源码包做打包压缩处理,Linux 中最常用的打包压缩格式为“tar.gz”,因此源码包又被称为 Tarball
Tarball 是 Linux 系统的一款打包工具,可以对源码包进行打包压缩处理,人们习惯上将最终得到的打包压缩文件称为 Tarball 文件。
源码包需要我们自己去软件官方网站进行下载,包中通常包含以下内容:
- 源代码文件。
- 配置和检测程序(如 configure 或 config 等)。
- 软件安装说明和软件说明(如 INSTALL 或 README)。
通过对比你会发现,源码包的编译是很费时间的,况且绝多大数用户并不熟悉程序语言,在安装过程中我们只能祈祷程序不要报错,否则新手很难解决。
(二)格式
*.tar.gz、*.tgz、*.bz2
源码包的格式一般是一个版本号的tar包,例如:httpd-2.4.25.tar.gz,文件名包含信息比较少
(三)特性
优点:
tar包形式的源码包包含的内容是明文可见的源代码,如果有足够的能力,可以自行修改源代码,并且在安装的时候可以自由选择要安装的所需功能(./configure中的各种参数)及路径等,并且卸载移除的时候也比较方便。 建议在安装线上的生产服务器软件包时都用源码安装,这是因为源码安装可以自行调整编译参数,能够最大化地定制安装结果。
缺点:
1)安装过程步骤过多,尤其安装较大及较多软件时,添加各种参数时容易出现问题
2)编译时间较长,执行make编译的时间通常较长,一会都会比安装二进制包时间长
3)因为编译手动安装,涉及系统环境比较复杂,可能会出现各种问题,一旦出现问题,新手很难解决(一般都会出现问题)
(四)安装步骤
源码包一般的安装过程:
1)安装所需依赖包
2)解压
3)./configure
4)make
5)make install
6)vim /etc/profile,文件末尾添加PATH=/usr/local/xxx/bin:$PATH(或者写在/etc/profile.d/目录下创建文件并写入环境变量相关配置),然后 source 环境变量文件
说明:
- ./configure
1)、定义需要的功能选项
2)、检测系统环境是否符合安装要求
3)、把定义好的功能选项和检测环境系统信息都写入Makefile文件,用于后续的编辑
说明:tar包形式包含的内容是明文可见的源代码,如果有足够的能力,可以自行修改源代码,并且在安装的时候可以自由选择要安装的所需功能(./configure中的各种参数),并且卸载移除的时候也比较方便
注意1:每个源码包都会有configure命令,就算极个别没有这个命令也会用其他的命令取代(例如openssl的./config)
注意2:执行过./configure之后,会生成Makefile文件,make和make install都是依赖这个文件进行编译安装的
-
make
1)将源码包翻译成机器能识别的语言(也就是将源代码–>可执行的二进制文件,类似生成Windows中的.exe可执行文件)
2)一旦编译出错,需要修改之后再次编译,请使用make clean,清除之前的编译产生的缓存文件。
注意:这一步执行时间一般是最长的。 -
make install
1)真正的安装(例如在windows中执行qq.exe或者wechat.exe安装qq和微信到电脑)
2)一旦这步出错,需要执行make clean,并删除对应的目录(例如./configure使用–prefix参数指定安装到/usr/local/openssl,则需要删除该目录)
(五)源码包的安装
【例 1】apache http源码包的安装
1、安装准备
[root@admin ~]# yum install gcc gcc-c++ gcc-g77
2、下载源码包(.tar.gz格式)
下载地址: http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.gz
源码包建议保存位置:/usr/local/src
[root@admin ~]# cd /usr/local/src
[root@admin src]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.gz
#等待下载完成
3.解压
[root@admin src]# ls
httpd-2.4.43.tar.gz
[root@admin src]# tar xf httpd-2.4.43.tar.gz
[root@admin src]# ls
httpd-2.4.43 httpd-2.4.43.tar.gz
[root@admin src]# cd httpd-2.4.43
[root@admin httpd-2.4.43]#
4.下载安装编译工具
[root@admin httpd-2.4.43]# yum install gcc-c++ gcc make -y
[root@admin httpd-2.4.43]# cat INSTALL
5.编译安装
编译安装软件程序包源码编译安装三步走:./configure(配置)、make(编译)、make install(安装)
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。
其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
这里我们可以查看INSTALL 文件,查看安装说明:
APACHE INSTALLATION OVERVIEW
Quick Start - Unix
------------------
For complete installation documentation, see [ht]docs/manual/install.html or
http://httpd.apache.org/docs/2.4/install.html
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
……省略以下内容……
使用 ls 命令可以看到当前目录下有一个名为 configure 的可执行文件:
[root@admin httpd-2.4.43]# ll configure
-rwxr-xr-x. 1 root 40 1209103 3月 26 22:46 configure
说明: ./configure
a. 指定安装路径,例如 --prefix=/usr/local/apache
b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module
c. 和其它软件关联,例如--with-pcre
d. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求
最终生成:Makefile
软件配置与检查./conigure
#1、定义需要的功能选项。
#2、检测系统是否符合安装要求。
#3、把定义好的功能选项和检测系统环境的信息都写入Makefile 文件,用于后续的编辑
执行:
#检查安装环境,并指定安装目录为usr/local/apache
[root@admin httpd-2.4.43]# ./configure --prefix=/usr/local/apache #一定要进入解压后的目录执行./configure进行预编译
……省略以上输出信息……
configure:
checking for APR... no
configure: error: APR not found. Please read the documentation.
#校验没通过 APR失败 我们需要下载APR ,这是因为安装此软件需要依赖于 arp 等软件,由于电脑上未安装,所以必须先安装httpd的依赖软件,才能通过校验
#还是一样,通过 wget 下载工具进行下载或者在宿主机上下载好,使用lrzsz软件提供的 rz 命令上传到当下
#这里依赖的软件有两个:apr-1.6.5.tar.gz 下载地址:http://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz
#apr-util-1.6.1.tar.gz 下载地址:http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
[root@admin httpd-2.4.43]# cd ..
[root@admin src]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.6.5.tar.gz
[root@admin src]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz #下载这两个依赖软件
#解压第一个(这个apr-1.6.5软件必须是第一个安装,因为被httpd依赖的第二个软件apr-util-1.6.1是依赖于apr-1.6.5 的)
[root@admin src]# tar xf apr-1.6.5.tar.gz
#进入解压后的目录进行预编译并指定安装目录为/usr/local/apr
[root@admin apr-1.6.5]# ./configure --prefix=/usr/local/apr
#耐心等待,没有显示错误信息,继续进行下一步
#编译并安装该软件
[root@admin apr-1.6.5]# make && make install
#耐心等待,没有显示错误信息,安装成功。继续进行下一步
#解压第二个文件
[root@admin apr-1.6.5]# cd ..
[root@admin src]# ls
apr-1.6.5 apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.43
[root@admin src]# tar xf apr-util-1.6.1.tar.gz
[root@admin src]# cd apr-util-1.6.1
#编译第二个软件,并指定安装目录为/usr/local/apr-util 同时必须声明第一个安装目录
[root@admin apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
#耐心等待,没有显示错误信息,继续进行下一步
#编译并安装
[root@admin apr-util-1.6.1]# make && make install
xml/apr_xml.lo -c xml/apr_xml.c && touch xml/apr_xml.lo
xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录
……省略部分输出信息……
# 缺少xml 的解析器 需要安装一个
#缺少pcre https://sourceforge.net/projects/pcre/files/pcre/8.42/pcre-8.42.tar.gz/download
[root@admin apr-util-1.6.1]# cd ..
[root@admin src