源代码编译安装
Linux命令与应用程序的关系
文件位置
系统命令:一般在/bin和/sbin目录中,或为shell内部命令。
应用程序:通常再/usr/bin和/usr/sbin目录中
主要用途
系统命令:完成对系统的基本管理工作,例如IP配置工具。
应用程序:完成相对独立的其他辅助任务,例如网页浏览器。
适用环境
系统命令:一般只在字符操作界面中运行
应用程序:根据实际需求,有些程序可在图形界面中运行。
运行格式
系统命令:一般命令字,命令选项和命令参数。
应用程序:通常没有固定格式
系统命令与应用程序的对比表格
系统命令
应用程序
文件位置
/bin和/sbin
/usr/bin和/usr/sbin
主要用途
针对系统
相对独立
适用环境
字符界面
字符界面或图形界面
运行格式
命令字、选项、参数
无固定格式
典型应用程序目录结构
文件类型
保存目录
普通执行程序文件
/usr/bin
服务器执行程序文件和管理程序文件
/usr/sbin
应用程序配置文件
/etc
日志文件
/var/log
应用程序文档文件
/usr/share/doc
应用程序手册页文件
/usr/share/man
常见的软件包封装类型
封装类型
说明
rpm软件包
扩展名为“rpm”
deb软件包
扩展名为“deb”
源代码软件包
一般为“.tar.gz”、“.tar.bz2”等格式的压缩包,包含程序的原始代码
附带安装程序的软件包
在压缩包内提供install.sh、setup等安装程序或以“.bin”格式的单个执行文件提供
源代码编译
使用源代码的优点:
获得最新的软件版本,及时修复bug
根据用户需要,灵活制定软件功能
应用场合举例
安装较新版本的应用程序时
需要为应用程序添加新的功能时
Tarball封包
.tar.gz和.tar.bz2格式居多
软件素材参考:http://sourceforge.net
完整性校验
计算MD5校验,并与官方提供的值相比较,判断是否一致。若不一致,可能源码包破损或被人值入程序,需谨慎。
[root@localhost Packages]# md5sum lynx-2.8.6-27.el6.x86_64.rpm
a10c4ccc5a36a7f1443a127cbb4d2b83 lynx-2.8.6-27.el6.x86_64.rpm
确认源代码编译环境
需要支持C/C++程序语言的编译器,如:
gcc-4.4.7-4.el6
gcc-c++-4.4.7-4.el6
make-3.81-20.el6....
示例:
[root@localhost ~]# gcc --version
[root@localhost ~]# make --version
编译安装流程
下载源代码安装包文件
步骤1:tar解包
用途:解压并释放源代码包到指定的目录
步骤2:./configure配置
用途:设置安装目录、安装模块等选项
步骤3:make编译
用途:生成可执行的二进制文件
步骤4:make install 安装
用途:复制二进制文件到系统,配置应用环境
测试及应用、维护软件
解包
习惯上将软件包释放到/usr/src/目录
解包后的源代码文件位置:/usr/src/软件名-版本号/
示例:
解压源码包
[root@localhost ~]# tar xf httpd-2.2.17.tar.gz -C /usr/src/
预配置
使用源码目录中的configure脚本
执行“./configure -help”可查看帮助
典型的配置选项
--prefix=软件安装目录
示例:
[root@localhost ~]# cd /usr/src/httpd-2.2.17/
[root@localhost httpd-2.2.17]# ./configure --prefix=/usr/local/apache
编译
执行make命令
示例:
[root@localhost httpd-2.2.17]# make
安装
执行make install 命令
示例:
[root@localhost httpd-2.2.17]# make install
编译安装步骤
备份后,修改配置文件
[root@localhost httpd-2.2.17]# cd /usr/local/apache/conf/
[root@localhost conf]# cp httpd.conf httpd.conf.bak
[root@localhost httpd-2.2.17]# vi /usr/local/apache/conf/httpd.conf
#ServerName www.example.com:80
ServerName www.example.com:80
启动Apache
[root@localhost ~]# /usr/local/apache/bin/apachectl start