由于rpm包在作者制作封装的时候已经把程序的一些特性固定了,如果我们根据自己的需求,需要运用程序的一些没有普适性相关特性,就需要下载程序的源码手动编译安装了,这里只是简单的介绍一下C代码的程序包编译安装方法。
为了能更直观的看到源码编译安装的过程,我演示一下在centos7.2环境中编译安装httpd2.2:
首先,编译的前提是得有称手的工具及环境了,编译c源代码就需要用到开发工具,make,gcc了,环境就需要开发库跟头文件了,如果系统中没有这些,就需要yum安装了。
这里我运行yum group install Development Tools安装开发环境组件
安装好开发环境后,开始解压下载好的httpd-2.2.29.tar.bz2,并切换到httpd-2.2.29目录
[root@localhost test]# tar -jxf httpd-2.2.29.tar.bz2
[root@localhost test]# ls
httpd-2.2.29 httpd-2.2.29.tar.bz2
[root@localhost test]# cd httpd-2.2.29
现在可以开始编译httpd2.2.29了,我们可以先察看一下目录下的README,INSTALL文件,可以初步了解一下该软件的一些简介及其通常的编译安装方法:
执行./configure -h可以先查看一下configure脚本的帮助信息,查看一下软件的一些安装选项,不同的软件的configure不尽相同,但是一般都有以下的特点:
1.指定安装路径
--prefix=前缀,用于指定安装路径
--sysconfdir=/etc/package_name
2.指定启动/禁用的特性
--enable-feature:例如--enable-fpm
--disable-fecture;例如 --disable-socket
3.指定所依赖功能、程序或文件
--with-function: 启用某功能
--without-function: 禁用某功能
这里我们只是简单的指定httpd的安装路径,如有特殊的需求,请参考configure的帮助信息,自行添加或关闭软件特性。
注意,由于这里只是测试,我把服务安装到了root的家目录下,要运行起服务并允许外部主机能够访问需要给root的家目录给予rx权限,生产环境不建议如此操作,尽量安装到/usr/local/等目录下,切记!
[root@localhost httpd-2.2.29]# ./configure --prefix=/root/test/httpd2.2
[root@localhost httpd-2.2.29]# make && make install
至此,httpd2.2的编译安装已经完成,就是这么简单,赶紧动手试试哇。我们启动自己手动编译安装的httpd看看哇:
可以看到编译安装的httpd服务已经开始运作起来了,不过貌似启动起来好麻烦,得切换到安装的目录的bin目录下,要是能直接在命令行的任何路径下都能管理启动或是关闭就好了,这就是我们编译安装后的一些后续工作了:
1.导出二进制程序目录至PATH环境变量中;
编辑文件/etc/profile.d/httpd2.2.sh文件,在文件中写入下边一行即可;(注意,httpd2.2.sh文件并不存在,创建即可)
export PATH=/root/test/httpd2.2/bin
保存退出,要让此设置即刻生效,需要在当前目录下执行命令
source httpd2.2.sh
现在我们就可以在系统的任何路径下打开或关闭httpd服务了,而不用记住那一长串的路径了
2.导出库文件路径;
编辑/etc/ld.so.conf.d/httpd2.2.conf; 注意:httpd2.2文件不存在,需自行创建
添加新的库文件所在目录至此文件中;
/root/test/httpd2.2/lib
让系统重新生成缓存:
ldconfig [-v]
-v查看详细内容
3.导出头文件
基于链接的方式实现:
ln -sv /root/test/httpd2.2/include /usr/include/httpd2.2
4.导出帮助手册
编辑/etc/man_db.conf文件,加入一个MANPATH; 注意:centos6.x系列中为/etc/man.config文件
man apachectl
至此,编译安装的工作完成,赶紧动手试试哇!