Linux的软件安装方式除了二进制安装包和yum/att外还可以直接通过编译源代码来安装,对于没有对应的deb或rpm安装包的软件来说,通过源码安装是一个比较好的选择。通过编译源码安装很多功能都可以自定义配置,在有的情况下编译安装的性能也要更好一些。

根据软件的开发语言不同编译的方法也会有些不一样,编译之前可以先看一下源码的帮助文档,一般情况下源代码的压缩包内都会有帮助文档。我这里分别编译PHP和Nodejs,PHP是用C语言写的,Nodejs是用C++写的,使用的Linux版本是CentOS7 64位,其他版本的编译方式也都差不多。

编译安装PHP

PHP是C语言写的,在编译之前还需要安装GCC,关于GCC的介绍可以看 GCC - 维基百科 ,下面安装GCC:

yum -y install gcc

更多关于yum的使用可以看: Linux yum简单使用教程

这里先编译PHP,先切换到 /usr/local/src 目录,一般情况下下载的源代码都存放在这个目录,如果要存放在其他目录也可以,但为了方便区分和查看大多都会放在这个目录。

切换到 /usr/local/src 目录:

/usr/local/src

下载PHP:

wget http://cn2.php.net/get/php-7.3.3.tar.gz/from/this/mirror

我这里只是以安装PHP为例,PHP官网下载完成后文件名为 mirror 如果是在Windows下就是 php-7.3.3.tar.gz ,这里为了方便查看就把 mirror 重命名为 php-7.3.3.tar.gz

mv mirror php-7.3.3.tar.gz

如果文件名正确的话就不用重命名了。把文件传到Linux的方法有很多,不一定非要到官网下载源代码。

下载完成后解压文件:

tar xf php-7.3.3.tar.gz

如果要详细了解Linux的压缩和解压可以看: Linux压缩和打包文件 ,解压完成后进入解压后的目录:

cd php-7.3.3

ls 查看一下:

acinclude.m4      genfiles         php.ini-development               run-tests.php
aclocal.m4        header           php.ini-production                sapi
appveyor          INSTALL          README.EXT_SKEL                   scripts
build             install-sh       README.GIT-RULES                  server-tests-config.php
buildconf         LICENSE          README.input_filter               server-tests.php
buildconf.bat     ltmain.sh        README.MAILINGLIST_RULES          snapshot
CODING_STANDARDS  main             README.md                         stamp-h.in
config.guess      makedist         README.NEW-OUTPUT-API             tests
config.sub        Makefile.frag    README.PARAMETER_PARSING_API      travis
configure         Makefile.gcov    README.REDIST.BINS                TSRM
configure.ac      Makefile.global  README.RELEASE_PROCESS            UPGRADING
CONTRIBUTING.md   missing          README.SELF-CONTAINED-EXTENSIONS  UPGRADING.INTERNALS
CREDITS           mkinstalldirs    README.STREAMS                    vcsclean
ext               NEWS             README.SUBMITTING_PATCH           win32
EXTENSIONS        pear             README.TESTING                    Zend
footer            php7.spec.in     README.UNIX-BUILD-SYSTEM
generated_lists   php.gif          README.WIN32-BUILD-SYSTEM

其中的 INSTALL 就是和安装相关的帮助文件,其他也还有很多帮助文件,输入:

./configure --help

可查看可用的选项,其中的 --prefix 就是安装目录,这里设置安装目录为 /user/local/php7.3

./configure --prefix=/usr/local/php7.3

每个软件都有不同的选项和参数,不过设置安装目录基本都是一样的,这里只是演示安装,所以其他的选项就不设置了,执行命令后会检查当前系统环境是否符合要求,如果缺少需要的软件就会报错,如果没有错误就会生成一个 makefile 文件,我这里报了一个错误,如下:

configure: error: libxml2 not found. Please check your libxml2 installation

主要就是缺少 libxml2 ,通过Google得知 libxml2 是一个用来解析XML的函数库,直接在yum或apt安装即可。

如果没有错误的话直接输入 make 编译,如果有错误的话解决错误,解决完成后重新生成 makefile 然后编译,生成 makefile 的命令就是:

./configure

不过建议还是加上安装目录。

编译:

make

然后就是漫长的等待,编译的时间根据机器配置的高低也会不一样,如果是1核 + 512M的服务器编译需要的时间一般不会少于10分钟。

编译完成后输入: make install 安装:

make install

等待一段时间即可安装完成。因为我这里只是演示安装,所以就不配置PHP和Mysql了。

查看一下PHP的版本看是否成功:

[root@localhost ~]# php -v
PHP 7.3.3 (cli) (built: Mar 19 2019 19:02:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies

成功安装。

下面简单总结一下编译安装的过程:

  1. 下载源代码。
  2. 解压。
  3. 根据说明设置选项,然后生成 makefile。
  4. 编译。
  5. 安装。

在检查环境或编译时遇到错误可以复制错误信息到Google上搜索,一般情况下能遇到的错误之前都有人遇到过,所以大多都能找到解决方法。

上面写的只是简单编译安装,在编译之前先看帮助文档,一切以帮助文档为主,还有不是每一个软件都开放源代码,对于不开源的软件就只能使用官方提供的安装包或yum/apt安装。

如果要卸载编译安装的软件可以直接删除程序目录,例如我的PHP安装在 /usr/local/php7.3 ,我只需要删除 /usr/local/php7.3 目录:

rm -rf /usr/local/php7.3

如果编译安装的时候没有设置安装目录就只能在编译安装一次,同样不设置安装目录,根据输出的信息来查找删除目录。

编译安装Nodejs

因为Nodejs是C++写的,要编译C++还需要安装GCC-C++,如果没有安装GCC的话也需要安装GCC,因为上面已经安装过GCC了,所以这里只安装GCC-C++:

yum -y install gcc-c++

进入 /usr/local/src

cd /usr/local/src

下载Nodejs源代码:

wget https://nodejs.org/dist/v10.15.3/node-v10.15.3.tar.gz

下载完成后解压:

tar xf node-v10.15.3.tar.gz

进入解压后的Nodejs目录:

cd node-v10.15.3

使用ls查看一下文件:

android-configure  CHANGELOG.md           configure.py        GOVERNANCE.md  node.gypi    tools
AUTHORS            CODE_OF_CONDUCT.md     CONTRIBUTING.md     lib            README.md    vcbuild.bat
benchmark          COLLABORATOR_GUIDE.md  CPP_STYLE_GUIDE.md  LICENSE        SECURITY.md
BSDmakefile        common.gypi            deps                Makefile       src
BUILDING.md        configure              doc                 node.gyp       test

使用 ./configure --help 可查看配置选项。

设置安装目录并检查环境 生成 makefile

./configure --prefix=/usr/local/node-10

编译:

make

编译完成后安装:

make install

也可以用一条命令来编译安装:

make && make install

对于配置低的机器来说需要的时间可能会比较长,方法和上面编译PHP都差不多。

上面使用PHP和Nodejs简单演示了一下编译的过程,重点在编译安装,下载和解压有很多方法可以实现。在编译安装的过程中可能会出错,复制错误信息到Google上搜索大多都能找到解决方法。如果是Linux新手的话还是不太推荐使用编译安装,最好就是使用yum/apt直接下载安装,其次是安装包。

相关文章: