linux学习记录:记一次手动编译安装组件的过程

Posted 河边小咸鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习记录:记一次手动编译安装组件的过程相关的知识,希望对你有一定的参考价值。

linux学习记录:记一次手动编译安装组件的过程
  本次安装的组件为 Apache HTTP Server,本篇笔记中记录了全部过程,以供参考。
  apache组件的依赖项比较多,所以安装起来会繁杂一点,不过流程都是大同小异。本次升级中采用的是源码手动编译升级的方法,原因是遇到过没有rpm的系统…所以还是自己操作更踏实点。


零、安装目录总结

  linux下常见的有三个和库有关系的目录,分别是/lib/usr/lib/usr/local/lib。其中usr并不是user的缩写,而是unix system resource的缩写,即系统资料。

  那么这三个目录有何区别?简单来说,/lib是内核级的, /usr/lib是系统级的, /usr/local/lib是用户级的。其中/lib中包含的基本上都是/bin/sbin中程序所使用的库,而另外两个其中就存放了很多用于用户程序的库。

  这次安装的Apache HTTP Server,是用来构建web服务器的,所以很明显是用户级的。由此相关组件我均安装至/usr/local/lib下。

一、安装依赖项

  Apache HTTP Server主要是有三个依赖项aprapr-utilpcre,所以需要先行安装。下面会记录安装的过程。

1. apr

下载并解压apr库,这里选择的版本是1.7.0

$ wget http://archive.apache.org/dist/apr/apr-1.7.0.tar.gz
$ tar -zxf apr-1.7.0.tar.gz

进入目录并使用configure配置makefile,这里选择的目标路径为/usr/local/lib/apr

$ cd apr-1.7.0/
$ ./configure --prefix=/usr/local/lib/apr

编译

$ make

安装

$ make install

进入/usr/local/lib即可查看到apr目录

$ cd /usr/local/lib
$ ll | grep apr

2. apr-util

下载并解压apr-util库,这里选择的版本是1.6.1

$ wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
$ tar -zxf apr-util-1.6.1.tar.gz

进入目录并使用configure配置makefile,选择目标路径为/usr/local/lib/apr-util,并配置apr路径为/usr/local/lib/apr

$ cd apr-util-1.6.1/
$ ./configure --prefix=/usr/local/lib/apr-util --with-apr=/usr/local/lib/apr

编译

$ make

此时出现报错如下,提示确实头文件expat.h,经查询原因为缺少expat库

xml/apr_xml.c:35:10: fatal error: expat.h: No such file or directory
 #include <expat.h>
          ^~~~~~~~~

安装expat库 (下载地址为 https://github.com/libexpat/libexpat/releases )

$ tar -zxf expat-2.4.1.tar.gz
$ cd expat-2.4.1/
$ ./configure
$ make
$ make install

再次编译 apr-util

$ make

安装

$ make install

进入/usr/local/lib即可查看到apr-util目录

$ cd /usr/local/lib
$ ll | grep apr-util

3. pcre

下载并解压pcre库,这里选择的版本是1.7.0

$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
$ tar -zxf pcre-8.45.tar.gz

进入目录并使用configure配置makefile,这里选择的目标路径为/usr/local/lib/pcre

$ cd pcre-8.45/
$ ./configure --prefix=/usr/local/lib/pcre

编译

$ make

安装

$ make install

进入/usr/local/lib即可查看到pcre目录

$ cd /usr/local/lib
$ ll | grep pcre


自此,所有的依赖项就安装完成了。

二、安装Apache HTTP Server

下载并解压apache组件,这里选择的版本是2.4.9

$ wget https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.49.tar.gz
$ tar -zxf httpd-2.4.49.tar.gz

进入目录并使用configure配置makefile,这里选择的目标路径为/usr/local/apache,并指定前面安装的三个依赖项的路径

$ cd httpd-2.4.49/
$ ./configure --with-included-apr --prefix=/usr/local/apache --with-apr=/usr/local/lib/apr --with-apr-util=/usr/local/lib/apr-util --with-pcre=/usr/local/lib/pcre

此时出现报错如下,原因是需要将apr和apr-util的目录放到./srclib/下
configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
注:./srclib/下apr和apr-util文件夹需要去掉版本号!

$ cp -r apr-1.7.0 httpd-2.4.49/srclib/
$ mv httpd-2.4.49/srclib/apr-1.7.0/ httpd-2.4.49/srclib/apr/
$ cp -r apr-util-1.6.1 httpd-2.4.49/srclib/
$ mv httpd-2.4.49/srclib/apr-util-1.6.1/ httpd-2.4.49/srclib/apr-util/

再次生成makefile

$ cd httpd-2.4.49/
$ ./configure --with-included-apr --prefix=/usr/local/apache --with-apr=/usr/local/lib/apr --with-apr-util=/usr/local/lib/apr-util --with-pcre=/usr/local/lib/pcre

编译

$ make

安装

$ make install

进入/usr/local/即可查看到apache目录

$ cd /usr/local/
$ ll | grep apache

由此Apache HTTP Server组件安装完成!执行如下命令可以确认

$ ./apache/bin/httpd -v
Server version: Apache/2.4.49 (Unix)
Server built:   Sep 20 2021 23:23:29

三、总结

  可以看到手动编译安装组件虽然麻烦点,但是主要是麻烦在找依赖项上。安装的过程其实都是大同小异。基本都是如下三部曲:

  1. configure 检查编译环境;
  2. make 对源代码进行编译;
  3. make insall 将生成的可执行文件安装到当前计算机中

  可以发现configure的很多参数也是高度相似的,我感觉其中需要重点注意的是目标路径--prefix。在不了解可选参数时,也可以通过./configure -h来查看,总而言之虽然繁杂一点,但是其实是不难的。

以上是关于linux学习记录:记一次手动编译安装组件的过程的主要内容,如果未能解决你的问题,请参考以下文章

记一次手动清理Linux挖矿病毒

记一次个人站点服务器拆迁过程

记一次spring5源码的完整编译过程

记一次LINUX-CRONTAB失败的排查案例

记一次 Notepad++ 安装 NppFTP 连接 Linux 系统(例如:Centos)

记一次外部agent侵入导致的OOM排查过程