CentOS 6安装thrift支持erlang开发
早前,在我的博文thrift多平台安装介绍了如何在debian/ubuntu下面安装thrift,并支持erlang开发的。而在CentOS平台下,并没有成功安装。经过不断摸索,终于成功了,这篇博文就是介绍如何在CentOS下编译安装thrift,并提供erlang开发支持。
1.失败原因及解决方法
我遇到的主要问题是,erlang的crypto模块在调用openssl的共享库的时候失败,从而导致编译thrift的erlang类库失败,整个编译过程无法继续下去。
在erl终端输入crypto:start()就可以看到下面的情况
[root@localhost ]# /usr/local/bin/erl
Erlang R16B03 (erts-5.10.) [source] [-bit] [async-threads:] [hipe] [kernel-poll:false] Eshell V5.10.4 (abort with ^G)
> crypto:start().
** exception error: undefined function crypto:start/
>
=ERROR REPORT==== -Jan-:::: ===
Unable to load crypto library. Failed with error:
"load_failed, Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"
OpenSSL might not be installed on this system. =ERROR REPORT==== -Jan-:::: ===
The on_load function for module crypto returned {error,
{load_failed,
"Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-3.2/priv/lib/crypto.so: undefined symbol: EC_GROUP_new_curve_GF2m'"}}
如果你也遇到这个问题,那可以肯定,编译的thrift没法提供erlang开发支持。
如果你的crypto:start()输出结果是ok的话,那就不会出现问题。
$erl
Erlang R16B03 (erts-5.10.) [source] [-bit] [smp::] [async-threads:] [kernel-poll:false] Eshell V5.10.4 (abort with ^G)
> crypto:start().
ok
>
如果出现像上述这样同样问题的话,很可能是Erlang的crypto模块与安装的openssl动态链接库不兼容,可以看Erlang的crypto模块与最新的openssl动态链接库不兼容的问题与解决方案得到详细的信息。
解决方法有2个,可以重新编译openssl,或者使用Erlang Solutions提供的二进制erlang/otp包.
另外我遇到的一个小问题是,erlang/otp的版本低,可能小于R14的,都会导致编译通不过。选用最新的erlang/otp版本就不会出现这个问题。
2.安装erlang/otp
在安装thrift前,我们要先安装erlang/otp.下面介绍2种方法,源码安装,以及使用Erlang Solutions的二进制包。
2.1 源码安装erlang/otp
首先编译安装openssl,我这里选用的版本是openssl-1.0.0l.tar.gz
wget -c http://www.openssl.org/source/openssl-1.0.0l.tar.gz
tar xzf openssl-1.0.0l.tar.gz
cd openssl-1.0.0l
./config
按照Erlang的crypto模块与最新的openssl动态链接库不兼容的问题与解决方案所说的方法编辑Makefile文件,添加-fPIC编译选项
在vim里面搜索gcc,然后在下面的行添加:
添加完毕后,我们就可以编译安装了:
make
make install
在config阶段,我使用默认配置,所以openssl安装目录在/usr/local/ssl
接下来编译erlang/otp
在CentOS下面编译erlang/otp,可以参考下面2篇博文来安装erlang/otp的依赖项:
CentOS(Fedora)下源代码编译安装 erlang 环境的 shell 脚本
很好,我们继续前进:
yum install -y kernel-devel m4 fop ncurses-devel tk unixODBC unixODBC-devel gcc gcc-c++
wget -c http://www.erlang.org/download/otp_src_R16B03.tar.gz
tar xzf otp_src_R16B03.tar.gz
cd otp_src_R16B03
在configure阶段,指定使用我们定制的openssl
./configure --with-ssl=/usr/local/ssl
make
make install
编译安装erlang/otp大概花费20分钟,安装位置在/usr/local下面。
2.2 使用Erlang Solutions提供的二进制erlang/otp包
Erlang Solutions提供了多个平台的erlang/otp的二进制安装包,非常容易使用。
Erlang Solutions的erlang安装包信息在这里,使用的js文件好像有兼容问题,在linux下的chrome浏览器,只能看到source选项卡.
需要注意的是,Erlang Solutions编译的erlang/otp包可能会有问题,例如上面的crypto:start()就出现上面的问题。我们在使用的时候,遇到问题,我们可以按照上面源码编译的方法进行安装。
就在前天,也就是2014-01-10,使用Erlang Solutions的rpm包就出现了crypto:start()启动不成功的现象,然后我昨天检测到它更新了erlang的centos安装包,应该就是修复了这个问题。有图为证:
使用下面的命令来安装erlang/otp:
wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-.noarch.rpm
yum makecache
yum install -y erlang
3.源码编译安装thrift
下面的步骤跟thrift多平台安装中的Debian/Ubuntu下编译安装thrift差不多。
yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel xz git -y
git clone -b 0.9. https://github.com/apache/thrift thrift-0.9.1
cd thrift-0.9.
./bootstrap.sh
在生成configure文件时出错:
configure.ac:: error: Autoconf version 2.65 or higher is required
configure.ac:: the top level
autom4te: /usr/bin/m4 failed with exit status:
autoscan: /usr/bin/autom4te failed with exit status:
果然好事多磨,好吧,我们继续源码安装autoconf:
wget -c http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz
tar xJf autoconf-2.69.tar.xz
cd autoconf-2.69
./configure
make
make install
升级autoconf后,执行bootstrap.sh,提示信息有大量的warning,但还是生成了configure文件。不管warning,我们继续前进:
./configure --with-cpp=no --with-python=no
make
make check
make install
没有报错,至此终于完成了thrift的安装。
CentOS 6安装thrift支持erlang开发的更多相关文章
- 给你的 CentOS 7 安装中文支持
今天给大家分享个给 CentOS 7 安装中文支持的方法,所谓“中文支持”目前明月观测到的是指命令行提示支持中文提示显示,还有就是 Vim 启动后看到的也是有中文提是的界面包括 Vim 内各种提示也会 ...
- 在CentOS中安装中文支持
执行命令: # yum groupinstall chinese-support 修改配置文件: # vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8&qu ...
- 1. centos下安装docker
CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...
- Docker(三):Docker入门教程-CentOS Docker 安装
CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本 前提条件 目前,CentOS 仅发 ...
- [第三篇]——CentOS Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结
CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本: CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下: curl -f ...
- 在RHEL上安装Thrift(支持C++)的若干问题 » 编码无悔 / Intent & Focused
在RHEL上安装Thrift(支持C++)的若干问题 » 编码无悔 / Intent & Focused [原创]在RHEL上安装Thrift(支持C++)的若干问题 2010年12月1 ...
- centos 安装thrift
Thrift介绍 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erl ...
- centos安装中文支持(转)
安装中文支持包. yum install fonts-chineseyum install fonts-ISO8859-2 -------- 一.安装中文支持方法1.在安装光盘中找到一下包进行安装.r ...
- CentOS随笔 - 2.CentOS7安装ftp支持(vsftpd)
前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 在前一篇文章中介绍了在虚拟机中安装CentOS7, 接下来就要进行配置了, 第一个就是安装ftp支持. 要不然 ...
随机推荐
- C语言Windows程序开发—MessageBox函数介绍【第01天】
(一)MessageBox函数的参数介绍: int MessageBox ( HWND hWnd, //弹出MessageBox对话框所属的窗口句柄 LPCTSTR lpText, //指向Messa ...
- Java异常链
是什么 一种面向对象的编程技术,将捕获到的异常重新封装到一个新的异常中,并重新抛出. 有什么用 可以保留每一层的异常信息,用户查看异常的时候,能够从顶层异常信息看到底层异常信息. 怎么用 catch异 ...
- mySQL安装的时候一直卡在starting server这里解决办法
昨天安装mySQL的时候一直卡在了starting server这里,等了半天都没反应,后来就去网上寻找解决办法,大部分是说什么设置mysql本地启动服务啊,删除注册表啊,这些办法都试过了 然并卵. ...
- 【BZOJ5290】[HNOI2018]道路(动态规划)
[BZOJ5290][HNOI2018]道路(动态规划) 题面 BZOJ 洛谷 题目直接到洛谷上看吧 题解 开始写写今年省选的题目 考场上我写了一个模拟退火骗了\(90\)分...然而重测后只剩下45 ...
- 成都Uber优步司机奖励政策(3月21日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 武汉Uber优步司机奖励政策(12月21日-12.27日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- day 5 飞机发射子弹 难点??
1.效果图 2.飞机发出子弹 #-*- coding:utf-8 -*- import pygame import time from pygame.locals import * class Her ...
- kalibr论文阅读笔记
单目相机IMU标定 该论文将相机IMU标定分为两个大方面: 一. 使用基函数来估计时间偏差 二. 相机和IMU的空间位置转换 校准变量:重力.外参旋转和平移.时钟偏移.IMU位姿.加速度计偏置.陀螺仪 ...
- Ubentu编译Android源码(AOSP)
前言: 一直想要编译一下Android 源码,之前去google 看,下载要下载repo. 当时很懵逼,repo 是个什么?(repo 是一个python 脚本,因为Android 源码git 仓库太 ...
- JDK1.8改为JDK1.7过程
电脑之前eclipse版本要求JDK1.8版本,现在要用jboss7.1做性能测试,目前仅支持JDK7.故需要降级. 网上有很多说把1.8删掉,这种做法我是不建议的,那么要用的时候呢?又得装回来多蛋疼 ...