Thrift - GeilThings
26439 단어 thrift
Thrift
From GeilThings
Jump to:
navigation ,
search
Thrift
General
Version
0.9.0
Stable
0.9.0
Function
Remote procedure call framework
Scripts
Links
Website
Thrift
Wikipedia
Thrift
Contents
1 General
1.1 See also
2 Installing Thrift
2.1 Installing Thrift under CentOS
2.2 Installing Thrift under Ubuntu
3 Upgrade Thrift
4 Errors Installing Thrift or Upgrading Thrift
4.1 This integer is too big: "9876543210987654321"
4.2 Rebar requires version {1,5} or higher of git to process ./rebar get-deps
4.3 Cannot load such file -- spec/rake/spectask
4.4 cannot load such file -- mongrel
4.5 Can't locate ExtUtils/MakeMaker.pm in @INC
4.6 javadoc Could not create the Java virtual machine
4.7 Building Java Library ........ : no
4.8 configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
4.9 Building Perl Library ........ : no
5 Messages
5.1 0.9.0
5.2 0.8.0
6 Comments
General
See also
Installing Thrift
Installing Thrift under CentOS
# CentOS 5 packages:
# http://wiki.apache.org/thrift/GettingCentOS5Packages
# automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel
# ruby-devel was not installed since Ruby was built from source.
# CentOS 5.6, 5.7:
yum install gcc-c++ libevent libevent-devel zlib-devel glib2-devel
yum install boost boost-devel automake libtool flex bison pkgconfig
yum install perl-Bit-Vector
# CentOS 6.2 has perl-Class-Accessor, CentOS 5.6 does not, see below.
# Is perl-Class-Accessor really needed??? The Perl library can be built with Thrift 0.8.0 WITHOUT perl-Class-Accessor.
# CentOS 6.2:
yum install perl-Class-Accessor
### perl-Class-Accessor was not found in CentOS 5.6 repository, so
# cpan
# install Class::Accessor
# exit
# Not needed for CentOS 6.2 since CentOS 6.2 has boost 1.41.0:
# CentOS 5.6 originally had boost 1.33.1, Thrift 0.6.1 required 1.34.0 for building all tests, so I used boost from source.
cd /opt
wget http://sourceforge.net/projects/boost/files/boost/1.48.0/boost_1_48_0.tar.gz/download
tar -zxvf boost_1_48_0.tar.gz
# Ant is needed for compiling against Java as of Thrift 0.8.0, CentOS 6.2, Java 1.6.31.
RAWNEWVERSION=`curl -sd "action=ask&query=[[Thrift]]|%3FStable&format=json" http://www.geilthings.com/api.php`
NEWVERSION=`echo "$RAWNEWVERSION" | grep -Po '^.*?\K(?<=Stable\":\[\").*?(?=\")'`
echo $NEWVERSION
cd /opt
sudo wget http://apache.lehtivihrea.org/thrift/${NEWVERSION}/thrift-${NEWVERSION}.tar.gz
sudo tar -zxvf thrift-${NEWVERSION}.tar.gz
cd thrift-${NEWVERSION}
# I could not compile it against Ruby since "make" gave errors.
# CentOS 5.7:
./configure --with-boost=/opt/boost_1_48_0 --with-c_glib=yes --without-ruby
# CentOS 6.2:
./configure --with-c_glib=yes --without-ruby
# See below for errors.
make
make install
Installing Thrift under Ubuntu
sudo apt-get install git-core
sudo apt-get install libevent-dev zlib-devel glib2-devel libssl-dev
sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libtool pkg-config g++
sudo apt-get install ruby1.8-dev libcommons-lang-java php5-dev
sudo apt-get install automake flex bison
sudo apt-get install curl
sudo apt-get install ruby ruby-full ruby-dev librspec-ruby rake rubygems libdaemons-ruby libgemplugin-ruby mongrel
sudo apt-get install python-dev python-twisted
sudo apt-get install libbit-vector-perl
sudo apt-get install php5-dev php5-cli
sudo apt-get install erlang-base erlang-eunit erlang-dev
sudo apt-get install golang
sudo apt-get install libglib2.0-dev
sudo apt-get install ghc6 cabal-install libghc6-binary-dev libghc6-network-dev libghc6-http-dev
sudo apt-get install ant
RAWNEWVERSION=`curl -sd "action=ask&query=[[Thrift]]|%3FStable&format=json" http://www.geilthings.com/api.php`
NEWVERSION=`echo "$RAWNEWVERSION" | grep -Po '^.*?\K(?<=Stable\":\[\").*?(?=\")'`
echo $NEWVERSION
cd /opt
sudo wget http://apache.lehtivihrea.org/thrift/${NEWVERSION}/thrift-${NEWVERSION}.tar.gz
sudo tar -zxvf thrift-${NEWVERSION}.tar.gz
cd thrift-${NEWVERSION}
sudo ./configure --with-c_glib=yes
# The file /opt/thrift/config.log can be checked for errors and warnings after running ./configure.
sudo make
sudo make install
sudo ln -s /opt/thrift-${NEWVERSION} /opt/thrift
Upgrade Thrift
# Just in case, shut down any thrift-related servers. But this is (October 2012, current versions) actually not needed.
# e.g. /opt/hbase/bin/hbase-daemon.sh stop thrift
# Check the Requirements, they might have changed:
# http://wiki.apache.org/thrift/ThriftRequirements
APPNAME=thrift
RAWVERSION=`thrift -version`
OLDVERSION=${RAWVERSION:15}
echo ${OLDVERSION}
RAWNEWVERSION=`curl -sd "action=ask&query=[[Thrift]]|%3FStable&format=json" http://www.geilthings.com/api.php`
NEWVERSION=`echo "$RAWNEWVERSION" | grep -Po '^.*?\K(?<=Stable\":\[\").*?(?=\")'`
echo $NEWVERSION
# Download Thrift.
cd /opt
wget http://apache.lehtivihrea.org/thrift/${NEWVERSION}/thrift-${NEWVERSION}.tar.gz
tar -zxvf thrift-${NEWVERSION}.tar.gz
cd thrift-${NEWVERSION}
# Check that PYTHONHOME is set to the python version that came with the CentOS distribution.
# Now configure it:
# If the CentOS default "boost" is used, the option --with-boost=/opt/boost_1_48_0 is not needed.
# CentOS 5.7:
# thrift 0.8.0:
# ./configure --with-boost=/opt/boost_1_48_0 --with-c_glib=yes --without-ruby
# CentOS 6.2:
# thrift 0.8.0:
# ./configure --with-c_glib=yes --without-ruby
# CentOS 6.3, Thrift 0.9.0, ruby < 1.9.3-p327 (e.g. 1.9.3-p286)
./configure --with-c_glib=yes --with-ruby=no
# CentOS 6.3, Thrift 0.9.0, ruby >= 1.9.3-p327
# HURRA, Ruby working with thrift again!!!!!!!!!!!!!!!!!!!!
./configure --with-c_glib=yes
# Always "make clean" after finding & correcting some errors in "make", and then "make" again after "make clean".
make
# make for Thrift 0.8.0 has more undocumented (December 2011) hidden dependencies than Thrift 0.61 or Thrift 0.7; see below for Errors.
make install
# Check.
thrift -version
rm -f /opt/thrift
ln -s /opt/thrift-${NEWVERSION} /opt/thrift
Errors Installing Thrift or Upgrading Thrift
This integer is too big: "9876543210987654321"
(Thrift 0.8.0, Erlang R15B, error after "make")
[WARNING:/opt/thrift-0.8.0/test/BrokenConstants.thrift:20] 64-bit constant "68719476736" may not work in all languages.
[ERROR:/opt/thrift-0.8.0/test/BrokenConstants.thrift:21] (last token was '9876543210987654321')
This integer is too big: "9876543210987654321"
Rebar requires version {1,5} or higher of git to process ./rebar get-deps
(Thrift 0.8.0, Erlang R15B, error after "make")
Rebar requires version {1,5} or higher of git to process ./rebar get-deps
==> erl (get-deps)
Pulling jsx from {git,"git://github.com/talentdeficit/jsx.git",{tag,"v0.9.0"}}
ERROR: Rebar requires version {1,5} or higher of git to process {git,
"git://github.com/talentdeficit/jsx.git",
{tag,
"v0.9.0"}}
Solution for Errors 1 and 2: Install git; git x86_64 1.7.4.1 1.el5 can be found in the epel repository (December 2011).
yum install git
make clean
make
Cannot load such file -- spec/rake/spectask
(Thrift 0.8.0, Ruby 1.9.3p0 or p125, error after "make")
cannot load such file -- spec/rake/spectask
Solution: Found in
http://mail-archives.apache.org/mod_mbox/thrift-user/201112.mbox/%[email protected]%3E
(gem install rspec will install rspec2 which does NOT solve the problem)
gem install rspec -v 1.3.2
make clean
make
cannot load such file -- mongrel
(Thrift 0.8.0, Ruby 1.9.3p0 or p125, error after "make") (Thrift 0.9.0, Ruby 1.9.3p286)
/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mongrel (LoadError)
Solution: Found in
http://mail-archives.apache.org/mod_mbox/thrift-user/201112.mbox/%[email protected]%3E
See also:
http://stackoverflow.com/questions/1073841/gem-install-mongrel-fails-with-ruby-1-9-1
gem install mongrel --pre
make clean
make
Can't locate ExtUtils/MakeMaker.pm in @INC
Can't locate ExtUtils/MakeMaker.pm in @INC
Solution: yum install perl-ExtUtils-MakeMaker
javadoc Could not create the Java virtual machine
(Thrift 0.8.0, Java 1.6.0.30, error after "make install")
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Error occurred during initialization of VM
[javadoc] Could not reserve enough space for object heap
[javadoc] Could not create the Java virtual machine.
Solution: Shut down some memory consuming services or databases and re-try.
Building Java Library ........ : no
Building Java Library ........ : no
Solution: Check that the java jdk used is correct and the same as the java runtime environment. Choose the correct one using "sudo update-alternatives --config java". This error can also be seen checking the file/opt/thrift/config.log, the line appears: Exception in thread "main"java.lang.UnsupportedClassVersionError:
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
(CentOS 6.3 includes 0.13.5)
Solution: Install re2c (Tool for generating C-based recognizers from regular expressions)
yum install re2c
Building Perl Library ........ : no
(CentOS 6.3; Solution only tried with perl 5.16.1)
Solution: Install the perl module Bit::Vector
perlbrew switch perl-5.16.1
cpan
install Bit::Vector
Messages
0.9.0
thrift 0.9.0
Building C++ Library ......... : yes
Building C (GLib) Library .... : yes
Building Java Library ........ : yes
Building C# Library .......... : no
Building Python Library ...... : yes
Building Ruby Library ........ : yes
Building Haskell Library ..... : no
Building Perl Library ........ : yes
Building PHP Library ......... : yes
Building Erlang Library ...... : yes
Building Go Library .......... : no
Building D Library ........... : no
C++ Library:
Build TZlibTransport ...... : yes
Build TNonblockingServer .. : yes
Build TQTcpServer (Qt) .... : no
Java Library:
Using javac ............... : javac
Using java ................ : java
Using ant ................. : /usr/bin/ant
Python Library:
Using Python .............. : /usr/bin/python
PHP Library:
Using php-config .......... : /usr/bin/php-config
Ruby Library:
Using Ruby ................ : /usr/local/bin/ruby
Perl Library:
Using Perl ................ : /root/perl5/perlbrew/perls/perl-5.16.1/bin/perl
Erlang Library:
Using erlc ................ : /usr/local/bin/erlc
0.8.0
thrift 0.8.0
Building code generators ..... :
Building C++ Library ......... : yes
Building C (GLib) Library .... : yes
Building Java Library ........ : yes
Building C# Library .......... : no
Building Python Library ...... : yes
Building Ruby Library ........ : no
Building Haskell Library ..... : no
Building Perl Library ........ : yes
Building PHP Library ......... : yes
Building Erlang Library ...... : yes
Building Go Library .......... : no
Building TZlibTransport ...... : yes
Building TNonblockingServer .. : yes
Using javac .................. : javac
Using java ................... : java
Using ant .................... : /usr/bin/ant
Using Python ................. : /usr/bin/python
Using php-config ............. : /usr/bin/php-config
Using Perl ................... : /usr/bin/perl
Using erlc ................... : /usr/local/bin/erlc
Comments
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thrift를 사용하여 Ruby에서 HBase에 액세스하려는 경우Thrift를 사용하여 Ruby에서 HBase에 액세스하려고 합니다.(제목 엄마) 원래는 HBase에 REST API를 통해 접근하는 루비 프로그램이라고 쓰여 있었으나 Thrift만 지원하는 작업을 하려고 Thrif...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.