【转】Installing the libv8 Ruby gem on Centos 5.8

寻技术 Linux / Ruby编程 2023年07月11日 92

转自:http://appsintheopen.com/posts/18-installing-the-libv8-ruby-gem-on-centos-5-8

First, Centos 5.8 ships with gcc 4.1.4, but to compile libv8 you need 4.4. Luckily, this step is easy:

$ yum install gcc44-c++

Next, you need to tell the build to make use of it. The easiest thing to do here, is to export a couple of environment variables:

$ export CC=/usr/bin/gcc44
$ export CXX=/usr/bin/g++

Now if you attempt gem install libv8, you will get an error along the lines of:

$ gem install libv8
creating MakefileUsing compiler:/usr/bin/g++Traceback(most recent call last):File"build/gyp/gyp", line ,in?import gyp
  File"build/gyp/pylib/gyp/__init__.py", line ,in?import gyp.input
  File"build/gyp/pylib/gyp/input.py", line ,in?import gyp.common
  File"build/gyp/pylib/gyp/common.py", line with open(source_path)as source_file:^SyntaxError: invalid syntax
gmake:***[out/Makefile.x64]Error
GYP_GENERATORS=make \
    build/gyp/gyp --generator-output="out" build/all.gyp \
                  -Ibuild/standalone.gypi --depth=. \
                  -Dv8_target_arch=x64 \
                  -S.x64 -Dhost_arch=x64

This is because the version of Python that is shipped with Centos is too old. Upgrading Python is not too hard, but be warned - do not under any circumstance replace the shipped Centos Python - lots of stuff depends on it, and it you replace it, lots of stuff will break.

To install Python 2.7:

$ yum install bzip2
$ yum install bzip2-devel
$ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
$ tar -xf Python-2.7.3.tgz
$ cd Python-2.7.
$ ./configure
$ make
$ make altinstall

The final step is very important - this stops it overwriting the default Centos Python. We are on the home straight now. To get the libv8 install to use Python 2.7 instead of Python 2.4, I thought I could create a symlink in my local directory, and then slip my local directory onto the front of my path:

$ ln -s /usr/local/bin/python2. python
$ export PATH=.:$PATH
$ python --version
Python2.7.

However, that didn't work.

I don't know why - maybe the Makefile explicitly references /usr/bin/python? What I did was move the existing Python executable out of the way, and symlink the Python 2.7 in its place:

$ mv /usr/bin/python /usr/bin/python_
$ ln -s /usr/local/bin/python2./usr/bin/python

Finally:

$ gem install libv8
( about  minutes later)Buildingnative extensions.This could take a while...Successfully installed libv8-3.11.8.4 gem installed
Installing ri documentation for libv8-3.11.8.4...InstallingRDoc documentation for libv8-3.11.8.4...

Now remember, to put Python back the way you found it:

$ rm /usr/bin/python
$ mv /usr/bin/python_ /usr/bin/python

Job done - finally.

关闭

用微信“扫一扫”