程序包管理之编译安装:
源码:c, c++
perl源码:
python源码:
应用程序:项目组
软件基金会:FSF,ASF
项目组:主导者,contributor
小项目:一个人维护
商业公司支持:开源版/企业版
SourceForge.net
github.com
code.google.com
源程序:
项目工程:把代码分散于多个源代码文件
GNU/make
autoconf: configure脚本
检查编译环境是否编译需求,并定义当前程序编译时启用哪个特性或功能,以及安装路径的定义等等;
结果:会根据Makefile.in文件生成makefile文件
automake: 用户生成Makefile.in文件,一般是源码人提供了
用于结合configure脚本生成makefile文件
makefile文件是make命令的配置文件
编译安装的步骤:
1、拿到源代码,并解压:
# tar xf package-version.tar.{gz|bz2|xz}
注意:展开后的目录名通常为package-version
2、切换至源码目录中
# cd package-version
3、执行configure脚本,检查编译环境
# ./configure
4、编译
# make
5、安装
# make install
configure脚本的通用功能:
我们需要定义的配置:
1、指定安装路径:
--prefix=/usr/local/package_name 指定统一安装路径,其下放配置文件等
--sysconfdir=/etc/package_name 配置文件路径
2、指定启用/禁用的特性:
--enable-feature: 例如--enable-fpm 这个表示启用fpm功能
--disable-feature: 例如 --disable-socket 禁用socket功能
3、指定所依赖功能、程序或文件
--with-function:启用某功能
--without-function:禁用某功能
不同的程序,其configure脚本功能不同,要获取帮助:
./configure --help
因为有些命令不尽相同
程序在打包时,有的程序的rpm包依附在devel的子包里
例如安装nginx时,需要的pcre的库,但是已经安装了,因为有些该pcre的库是在devel包里面
练习:
1、编译安装nginx, 并启动之;
2、编译安装axel,并试用之;
这是一个linux上使用的下载工具,类似迅雷
axel -o /tmp -n 3 下载路径
3、编译安装httpd,并启动之;
新安装的软件有些配置和lib都在自己的目录下,如需内核识别,需如下配置:
二进制程序:
/usr/local/apache/bin
# vim /etc/profile.d/apache.sh
PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH
export PATH
头文件输出给系统:
# ln -sv /usr/local/apache/include /usr/include/httpd
库文件输出:
/etc/ld.so.conf.d 这个目录是内核找lib库的位置,因此如果要把其他的库加入需要在其下添加其他库路径
# vim /etc/ld.so.conf.d/httpd.conf
在这个新建http.conf文件,里面输入/usr/local/apache/lib,如下
[[email protected] ld.so.conf.d]# cat mysql-i386.conf
/usr/lib/mysql
让系统重新生成库文件路径缓存
# ldconfig 该缓存是存在/etc/ld.so.cache中
缓存的lib路径都存在这里,供内核动态使用
导出man文件:
# vim /etc/man.config
MANPATH /usr/local/apache/man
# 还有一种是使用man -M +路径
总结:源码编译安装
前提:准备好开发环境
编译过程:
./configure
make
make install
输出:
头文件
库文件
二进制程序
man文档
例子:
源码编译安装httpd-2.4.17.tar.gz
[[email protected] software]# tar -xf httpd-2.4.17.tar.gz
[[email protected] software]# ls
axel-2.0 axel-2.0.tar.bz2 httpd-2.4.17 httpd-2.4.17.tar.gz nginx-1.8.0 nginx-1.8.0.tar.gz
[[email protected] software]# cd httpd-2.4.17
这里需要注意的是要预先编译安装apr和apr-util
在安装编译httpd时,需要在后面指明依赖程序的位置,如下
[[email protected] httpd-2.4.17]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
我这里安装的位置都在/usr/local/httpd下,因此启动也在这里面的bin目录下。
过程比较简单就不赘述了