一、 源码安装
并不是所有的安装包都有已经生成的rpm包的,还有一些已经编写好的,但是还没有进行编译的源码包,当我们想要安装着谢源码包时,我们该如何做呢?
源码安装三部曲:
1、./configure
源码安装不像使用rpm包安装,使用rpm包安装一个软件,什么都自己内部定制好的,你安装在哪个目录上,安装的命令在哪个目录上,缓存目录都是默认的,根本没得选。而使用源码安装时,就可以在运行源码./configuer时后跟一些选项,想怎么安装怎么安装,安装在哪个目录,命令在哪个目录,这个命令的man文档在哪个目录?开启或禁用包内的某些功能都可以,相当于私人订制,后面可以跟多个选项,不了解的可以使用命令 ./configure - -help 查看后面的所有选项及作用例图:
有一些小伙伴可能觉得看到这么多选项蒙圈了,英文不太好的可能看了这些选项也不知道什么意思,下面我就简单介绍几个:
安装目录的选择
--prefix=/PATH(安装目录) : 指定默认安装位置,不指定一般默认为/usr/local
--sysconfdir=/PATH : 配置文件安装位置
System types :支持交叉编译
安装包的一些可选特性(feature代指某个可选的特性)
--disable-feature 安装时禁用某个特性,功能(默认情况这个特性、功能是启用的情况下)
--enable-feature 安装时启用某个特性、功能(默认情况下这个特性、功能是被禁用的情况下)
安装包的依赖包(pkgage:安装包名)
--with-pkgage 同时将源码包的这个依赖包也安装
--without-pkgage 禁用依赖包关系
还有一些小伙伴觉得这么多选项好麻烦啊,我就想懒省事,我不想这么麻烦,那就什么选项都不加一切都按照默认的安装就可以了
./configure 这个命令不是在什么目录下执行都可以的,是需要把你下载下来的源码包解压了,然后进入解压后的目录下,包含有configure这个脚本文件的目录,执行这个configure这个脚本,这个命令的作用有两点:
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成的makefile
(2) 检查依赖到的外部环境,如依赖的软件包,检测一下编译的时候是否满足编译所需要的软件包是否已安装
2、make
上一个不骤呢,只是检测一下编译环境,和传递一些参数,这一步才是真正的编译,构成应用程序
3、make install
编译成功后这一步来安装,后台做的就是把软件需要的文件拷贝到该放的位置,执行完这一步,这个源码包就算是安装成功了
做完以上三个步骤,一个源码包就算是已经安装成功了
4、安装后的配置
(1)把二进制程序目录导入至PATH环境变量中
可是还有一个问题,有的安装包呢,是包含着一些命令的,安装后才可以使用那些命令做某些特定的事情,而如果我们在安装时自己定义一个目录去安装源码包呢,这个被指定的文件就会是这个程序的根文件,那么这个包所包含的所有的文件就会保存在我们所指定的那个文件下,但是当输入一个二进制程序时,我们系统会默认在PATH变量的值中去寻找,PATH的值是一个或多个目录,当运行一个程序时,Linux会在这些目录下进行搜寻编译链接,而我们所安装的二进制程序的命令会在指定文件的/bin下,库文件保存在指定文件下的/lib文件中,man文件会在指定文件的/man下,所以我们在使用这个包的命令时是不能直接打出那个命令的,因为这个程序的二进制程序并没有保存至PATH变量中任何一个目录中,所以Linux会提醒找不到该命令。要想使用该命令得麻烦的去打这个二进制程序的全路径,例如:我把程序安装在/app/apache下,那么这个二进制程序会在/app/apache/bin/name,所以调用命令要/app/apache/bin/name –[选项] 这样用,感觉非常麻烦是不是?命令太长了,用起来不是太方便,我想不输入全路径就直接输入二进制程序名就可以运行该命令,这时候我们就就需要把二进制程序目录导入PATH环境变量中就OK了。
我们先来看一个PATH环境变量中都有哪些值
大家都看出了吧,PATH变量中有着很多值,每一个值都是一个目录,这些值之间以:分隔,这些目录都是Linux中包含着二进制程序的一些目录,我们执行一个二进制程序时Linux会在这各个值中寻找对应的二进制程序,找到就执行,找不到就会出错无法执行,下面我们就再给它添加我们所安装的源码包的二进制程序路径,就可以在下次运行程序时不用输入全路径,只输入程序名就可以了。
我们在这之前先来试验一下,我先安装好了一个httpd源码包,但是还没有把二进制程序目录导入PATH环境变量中来先运行一下看看会不会出错?输入全路径会不会出错?
结果证明了不把二进制程序目录导入至PATH环境变量中程序也可以用,只是用起来更麻烦一点要多输入路径,对于一些懒省事的小伙伴就会觉得用的不爽,下图就交大家怎么把二进制程序目录导入PATH环境变量中并且再运行一下该命令看看反应
但是这种方法的PATH在终端关闭后就会消失,所以建议通过编辑/etc/profile来改变PATH,也可以改家目录下的.bashrc
第二种方法:
#vim /etc/profile
在文档的最后,添加export PATH=”/app/apache/bin:$PATH” ,保存退出,然后运行
#source /etc/profile 注释:
不报错则成功
(2)导入库文件路径
编辑/etc/ld.so.conf文件,在文件中添加库的搜索路径
#vim /etc/ld.so.conf
然后直接将库文件的额绝对路径添加至最后一行就可以了
如:/app/apache/lib
一行写一个路径
然后保存退出
让系统重新搜索库文件生成缓存:
#ldconfig [-v]
-v : 显示过程
(3)导入头文件
基于链接的方式实现:
ln-sv
(4)导入帮助手册
帮助手册其实就是man命令,使用man 后跟一个命令,可以查出这个命令的帮助手册,帮助你更好的使用这个命令,新装的源码包也有自己的man手册,但是不导入帮助手册,即使二进制程序可以正常使用,也是不能查看man帮助信息的,所以需要还需要导入man手册来方便查看帮助手册
编辑/etc/man.config|man_db.conf文件,添加一个MANPATH(man路径)
#vim /etev/man.config|man_db.conf
在文件末行添加一条man路径
格式为MANPATH 安装程序的man路径,例如:
MANPATH /app/apache/man
保存退出
这样一个源码包就算是完美的安装好了,后面的安装后的配置也可以不做,源码包安装好久可以用,不过是使用命令麻烦点,man麻烦点而已,所以建议大家有rpm包文件最好使用rpm安装,简单省事,一条命令解决所有的问题
二、 源码包的组成
1、源码包的通常是由多个文件组成的,文件中的代码很可能跨文件依赖关系,另外源码包除了包含源代码的文件,还包含一些其它的man文件、帮助文档、配置文件等。把这些文件压缩成一个压缩包就叫做源码包
2、源代码是不能够直接使用安装的,必须经过编译后才可以安装,
源代码预处理编译汇编链接执行
3、源码包的安装的大同小异,大部分安装方法都是差不多的,但是不妨碍也有一部分的源码包安装不一样,所以建议大家在安装前可以查看一下README这个文件,README文件呢是对于这个软件的一些介绍,关于它的版本,它的目录放在哪,还有一个INSTALL这个文件里面是包含一些这个包的配置文件的介绍
4、开源程序源代码的获取:
官方自检站点:
Apache.org mariadb.org
代码托管:
SourceForge.net Github.com code.google.com
5、c/c++编译器:gcc(GNU C Complier)
6、编译C源代码:
1.准备:提供开发工具及开发环境
开发工具:make,gcc等
开发环境:开发库,头文件
glibc:标准库
2.实现:通过“包组”提供开发组件
Development Tools
Server Platform Development
三、 安装源码包的示例
光是这样看呢,可能也不是太明白,下面给大家做一个示例
要求:将CentOS 6中安装httpd-2.2.34.tar.gz源码包
第一步:从apache官网上找到并下载httpd-2.2.34.tar.gz源码包
打开浏览器在地址栏输入http://httpd.apache.org/ 进入下图
点击左边红框处的下载进入下图:
往下滚动鼠标找到下图中的红框处点击会下载此httpd-2.2.34.tar.gz安装包至您的物理机上
然后会出现下图中的下载框,让您选择下载至指定的位置并记住这个位置,方便下一个把源码包拷贝至虚拟机上
第二步:从物理机上把下载好的源码包拷贝至虚拟机内
从物理机上拷贝文件至虚拟机需要rz命令,如果虚拟机没有安装rz命令,下面我们来先安装rz命令,但是只知道这个命令是rz,不知道有没有rz这个包呢?我们来看一下下图,使用yum安装一下rz:
发现安装失败,并没有rz这个安装包,怎么办呢?别着急我们还有yum provides来查询关于rz这个命令的来自于哪个安装包
发现了rz这个命令来源于lrzsz这个包
下面就可以安装这个命令了
本来安装过rz的小伙伴可以忽略衣裳步骤,直接使用rz拷贝,安装成功后我们来看看如何使用rz来讲物理机上的文件拷贝至虚拟机,
然后或弹出对话框如下图
找到第一步下载的源码包的位置选择open拷贝至虚拟机,这一步要注意了,rz这个命令,是在哪个目录下执行的,拷贝的文件就会在哪个目录下,
第三步:解压源码包
然后将源码包从当前文件拷贝至想要安装的目录,我这里就安装在/app目录了
再下一步就是解压了
解压完成我们来看一下源码包内都有什么文件吧
第四步:安装development包组
这里解释一下为甚么要先安装development包组,因为这个是源码安装,这些源码是未经过编译的,源码包必须要编译过后才可以安装,而编译需要的一些命令软件徐亚用到development包组内的好多软件包,所以要先安装development包组
第五步:./configure 检测编译环境
这个命令必须在解压的目录中,包含configure脚本的目录中执行
我这里其它选项就太多了就不设置了,只设置安装主目录在/app/apache
第六步:make 编译
传递我设置的选项参数,并检测成功后使用make命令编译,构建应用程序
第七步:make install
编译成功,这一步就是安装软件了
完成这一步,这个源码包就算是安装好了
四、 卸载源码包
有安装就有卸载,源码包的卸载不用像rpm包那样卸载,rpm -e如果源码包中有卸载程序呢,就查看安装手册,按说明卸载,不同的源码包卸载方法也不同,但是有一个通用的卸载方法,那就是记住安装时选择的安装目录,例如上面的安装步骤,安装在了/app/apache目录下,所以安装的程序的所有文件都在该目录下,直接简单粗暴的删除这个目录就可以了
Rm -rf /app/apache