4 Jun 2010, 8:27pm
Work:
by

5 comments

  • Compiling Node.js on Solaris – The Issues

    Disclaimer: I’m not a sysadmin, better solutions are welcome.

    Earlier today, I was trying to compile node.js on Solaris (x86, 64-bit), get it installed, and setup a simple OHAI server.

    And as usual, installing stuffs on Solaris is never straightforward and I ended up encountering several issues. I’m sure these issues (specially the errors) will bite me again in the future, hence I’m blogging this.

    First up…

    nom> ./configure
    /usr/bin/env: No such file or directory

    Oh right, I forgot to install python and all of its dependencies. From node.js home page “The build system requires Python 2.4 or better.”

    obj/release/mksnapshot obj/release/snapshot.cc --logfile "~/blah/ry-node-29ca7af/build/default/obj/release/snapshot.log" --log-snapshot-positions
    ld.so.1: mksnapshot: fatal: libstdc++.so.6: open failed: No such file or directory
    scons: *** [obj/release/snapshot.cc] Error -9
    scons: building terminated because of errors.
    Waf: Leaving directory `~/blah/ry-node-29ca7af/build'
    Build failed:  -> task failed (err #2):
            {task: libv8.a SConstruct -> libv8.a}
    *** Error code 1

    ldd is your friend every time you hit this kind of error.
    So I inspected mksnapshot…

    nom> ldd obj/release/mksnapshot
            libpthread.so.1 =>       /lib/libpthread.so.1
            libsocket.so.1 =>        /lib/libsocket.so.1
            libnsl.so.1 =>   /lib/libnsl.so.1
            librt.so.1 =>    /lib/librt.so.1
            libstdc++.so.6 =>        (file not found)
            libm.so.2 =>     /lib/libm.so.2
            libgcc_s.so.1 =>         (file not found)
            libc.so.1 =>     /lib/libc.so.1
            libmp.so.2 =>    /lib/libmp.so.2
            libmd.so.1 =>    /lib/libmd.so.1
            libscf.so.1 =>   /lib/libscf.so.1
            libaio.so.1 =>   /lib/libaio.so.1
            libdoor.so.1 =>  /lib/libdoor.so.1
            libuutil.so.1 =>         /lib/libuutil.so.1
            libgen.so.1 =>   /lib/libgen.so.1

    Turned out that both libstdc++.so.6 and libgcc_s.so.1 were installed in /usr/local/lib but not available from /lib. So I simply created symlinks for /lib/libstdc++.so.6 and libgcc_s.so.1 pointing to /usr/local/lib . Another workaround was to set LD_LIBRARY_PATH=/usr/local/lib, but I heard it’s bad.

    On to the next one…

    ImportError: ld.so.1: python: fatal: relocation error: file /usr/local/lib/python2.6/lib-dynload/_socket.so: symbol inet_aton: referenced symbol not found

    This one was just strange, I couldn’t figure out which library dependency was missing, and it took me a while to find out that the python binary I had wasn’t built correctly (some library links were missing from _socket.so) . At the end I used the binary from Sunfreeware which had the correct links.

    I got this next error when I accidentally compiled node on a SPARC box, which I believe is not a supported architecture. c-ares only has sunos-x86 header files for Solaris.

    ../deps/c-ares/ares_expand_string.c:18:24: ares_setup.h: No such file or directory

    And another one, on the same SPARC box…

    TypeError: cannot concatenate 'str' and 'NoneType' objects:

    This is a similar issue that stevel mentioned on nodejs Google Group. Basically deps/v8/SConstruct couldn’t figure out the compiler and returns ‘None’ which can’t be concatenated to a String, this line here…

    the toolchain to use (' + TOOLCHAIN_GUESS + ')'

    After 3-4 hours, I finally got node.js installed, and a simple server up and running on Solaris.

    OHAI
    KTHXBYE

    Related Posts:

    [...] 5, 2010 One of our happy team of code monkeys wrote up his heroic efforts on getting node.js to build on Solaris x86. Posted by csausdev Filed in Uncategorized Tags: javascript, node.js, solaris Leave a [...]

    22 Jan 2011, 8:47am
    by Bill McNutt

    reply

    I’m having the same issue on a Solaris 10 box. It’s a sunfire x4100 and I’m trying to install mailman-2.1.14. I’m recovering from a system crash using new hardware, I’ve been down for almost four days, and I’ve got a lot of people breathing down my neck.

    I make it through ./configure, but “make install” yields:

    Compiling /usr/local/mailman/Mailman/versions.py …
    Traceback (most recent call last):
    File “bin/update”, line 50, in
    from Mailman import Utils
    File “/usr/local/mailman/Mailman/Utils.py”, line 32, in
    import cgi
    File “/usr/local/lib/python2.6/cgi.py”, line 40, in
    import urllib
    File “/usr/local/lib/python2.6/urllib.py”, line 26, in
    import socket
    File “/usr/local/lib/python2.6/socket.py”, line 46, in
    import _socket
    ImportError: ld.so.1: python: fatal: relocation error: file /usr/local/lib/python2.6/lib-dynload/_socket.so: symbol inet_aton: referenced symbol not found
    *** Error code 1
    The following command caused the error:
    (cd /usr/local/mailman ; test -n “” || bin/update)
    make: Fatal error: Command failed for target `update’

    I tried putting your symbolic links in /lib, but I kept getting the same error.

    22 Jan 2011, 9:54pm
    by Cliffano Subagio

    reply

    That’s a tough situation you’re in, Bill, and it’s hard to suggest anything without accessing the environment. Perhaps try reinstalling python? and also try the different packages out there?

    What I usually do in such situation is to revert back from the last image backup, or rebuild the environment from scratch (I assume you have an installation script that you used when you first set up the server), I think that’s better than being down for 4 days trying to manually fix weird errors one by one.

    Good luck!

    Hi, I want to install node.js in linux, but after execute “make”, it tells me:

    “node-v0.4.12/deps/v8/src/mksnapshot.cc:29.18:error: string: No such file or directory”

    could you help me please?

    19 Oct 2011, 1:45pm
    by Cliffano Subagio

    reply

    Hi, care to provide uname -a and the exact error? Though I would suggest you stop by #node.js on freenode or post the make error to node.js user mailing list.

     

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

     

    Recent Posts

    Recent Comments

    • Cliffano Subagio: Good to hear about your opportunity to visit Japan, I’m sure you will have a great...
    • Kayla: I’m going to Japan for two week this summer. Our sister city is Tsubame, Japan and my school has an...
    • poseidonfu: thanks,Very effective
    • anonymous: I really enjoyed both the last lecture and the book. I don’t think that theres anyone that I look up...
    • dioni: The thing I hate about HK is how people shove and push in the queue. Can’t they be civilized?!! I kept...

    Most Commented Posts

    Linkroll