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
主要是有三个依赖项apr
、apr-util
和pcre
,所以需要先行安装。下面会记录安装的过程。
1. apr
下载并解压apr库,这里选择的版本是1.7.0
1 | $ wget http://archive.apache.org/dist/apr/apr-1.7.0.tar.gz |
进入目录并使用configure
配置makefile,这里选择的目标路径为/usr/local/lib/apr
1 | $ cd apr-1.7.0/ |
编译
1 | $ make |
安装
1 | $ make install |
进入/usr/local/lib
即可查看到apr目录
1 | $ cd /usr/local/lib |
2. apr-util
下载并解压apr-util库,这里选择的版本是1.6.1
1 | $ wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz |
进入目录并使用configure
配置makefile,选择目标路径为/usr/local/lib/apr-util
,并配置apr路径为/usr/local/lib/apr
1 | $ cd apr-util-1.6.1/ |
编译
1 | $ make |
此时出现报错如下,提示确实头文件expat.h
,经查询原因为缺少expat库
1 | xml/apr_xml.c:35:10: fatal error: expat.h: No such file or directory |
安装expat库 (下载地址为 https://github.com/libexpat/libexpat/releases
)
1 | $ tar -zxf expat-2.4.1.tar.gz |
再次编译 apr-util
1 | $ make |
安装
1 | $ make install |
进入/usr/local/lib
即可查看到apr-util目录
1 | $ cd /usr/local/lib |
3. pcre
下载并解压pcre库,这里选择的版本是1.7.0
1 | $ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz |
进入目录并使用configure
配置makefile,这里选择的目标路径为/usr/local/lib/pcre
1 | $ cd pcre-8.45/ |
编译
1 | $ make |
安装
1 | $ make install |
进入/usr/local/lib
即可查看到pcre目录
1 | $ cd /usr/local/lib |
自此,所有的依赖项就安装完成了。
二、安装Apache HTTP Server
下载并解压apache组件,这里选择的版本是2.4.9
1 | $ wget https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.49.tar.gz |
进入目录并使用configure
配置makefile,这里选择的目标路径为/usr/local/apache
,并指定前面安装的三个依赖项的路径
1 | $ cd httpd-2.4.49/ |
此时出现报错如下,原因是需要将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文件夹需要去掉版本号!
1 | $ cp -r apr-1.7.0 httpd-2.4.49/srclib/ |
再次生成makefile
1 | $ cd httpd-2.4.49/ |
编译
1 | $ make |
安装
1 | $ make install |
进入/usr/local/
即可查看到apache目录
1 | $ cd /usr/local/ |
由此Apache HTTP Server
组件安装完成!执行如下命令可以确认
1 | $ ./apache/bin/httpd -v |
三、总结
可以看到手动编译安装组件虽然麻烦点,但是主要是麻烦在找依赖项上。安装的过程其实都是大同小异。基本都是如下三部曲:
configure
检查编译环境;make
对源代码进行编译;make insall
将生成的可执行文件安装到当前计算机中
可以发现configure
的很多参数也是高度相似的,我感觉其中需要重点注意的是目标路径--prefix
。在不了解可选参数时,也可以通过./configure -h
来查看,总而言之虽然繁杂一点,但是其实是不难的。