+++ This bug was initially created as a clone of Bug #1104922 +++ Description of problem: [rhfp-syndicateme.rhcloud.com repo]\> node index.js node: error while loading shared libraries: libv8.so.v8314-3.14.5: cannot open shared object file: No such file or directory Version-Release number of selected component (if applicable): Node js 10.0 How reproducible: happens every time I deploy in my post receive hook. I also get the error when I try to run manually (see above) Steps to Reproduce: 1. 2. 3. Actual results: node: error while loading shared libraries: libv8.so.v8314-3.14.5 Expected results: see a list of the indexed files Additional info: --- Additional comment from Michal Fojtik on 2014-06-05 08:53:44 EDT --- Rich: You can try to prefix the 'node' with "scl enable node010 'node'". Also can you please provide more info, like the output of 'env' command in the script where do you execute 'node' command? --- Additional comment from Michal Fojtik on 2014-06-05 09:12:52 EDT --- FYI, this works when I do 'rhc ssh': [node-mfojtik.rhcloud.com 539069e6e0b8cd999a00011e]\> echo $LD_LIBRARY_PATH /opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 [node-mfojtik.rhcloud.com 539069e6e0b8cd999a00011e]\> node -v v0.10.25 --- Additional comment from francois roland on 2014-06-05 10:17:47 EDT --- I'm having the same error anytime I type a 'node' or 'npm' command in the rhc ssh command line tool. I tried both propositions from Michal, and here are the results I get : $ scl enable node010 'node' Unable to open /etc/scl/prefixes/node010! $ echo $LD_LIBRARY_PATH /opt/rh/nodejs010/root/usr/lib64 $ node -v node: error while loading shared libraries: libv8.so.v8314-3.14.5: cannot open shared object file: No such file or directory $ env MANPATH=/opt/rh/nodejs010/root/usr/share/man:: OPENSHIFT_SECRET_TOKEN=[hidden] OPENSHIFT_GEAR_MEMORY_MB=512 SELINUX_ROLE_REQUESTED= GEM_HOME=/var/lib/openshift/5389ccff50044672510000c2/.gem OPENSHIFT_DEPLOYMENT_TYPE=git TERM=xterm-256color SHELL=/bin/bash OPENSHIFT_MONGODB_DB_USERNAME=admin OPENSHIFT_MONGODB_DB_LOG_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/logs/ OPENSHIFT_LOG_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/logs/ TMPDIR=/tmp/ SSH_CLIENT=80.215.167.182 16582 22 OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/5389ccff50044672510000c2//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin OPENSHIFT_DEPLOYMENTS_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-deployments/ OPENSHIFT_TMP_DIR=/tmp/ SELINUX_USE_CURRENT_RANGE= OPENSHIFT_REPO_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/runtime/repo/ OPENSHIFT_HOMEDIR=/var/lib/openshift/5389ccff50044672510000c2/ OPENSHIFT_MONGODB_DB_PASSWORD=5bzWYi14kJbw OPENSHIFT_GEAR_NAME=devconitv OPENSHIFT_NODEJS_PORT=8080 OPENSHIFT_PYPI_MIRROR_URL=http://mirror1.ops.rhcloud.com/mirror/python/web/simple SSH_TTY=/dev/pts/1 OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64 OPENSHIFT_NODEJS_IDENT=redhat:nodejs:0.10:0.0.18 OPENSHIFT_APP_SSH_PUBLIC_KEY=[path to key] OPENSHIFT_CLOUD_DOMAIN=rhcloud.com USER=5389ccff50044672510000c2 LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64 TMP_DIR=/tmp/ TMOUT=300 OPENSHIFT_BUILD_DEPENDENCIES_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/runtime/build-dependencies/ OPENSHIFT_MONGODB_IDENT=redhat:mongodb:2.4:0.2.11 MAIL=/var/mail/5389ccff50044672510000c2 PATH=/var/lib/openshift/5389ccff50044672510000c2//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin PWD=/var/lib/openshift/5389ccff50044672510000c2 OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/logs/ OPENSHIFT_MONGODB_DB_HOST=127.7.108.130 OPENSHIFT_APP_DNS=devconitv-conitv.rhcloud.com LANG=fr_FR.UTF-8 OPENSHIFT_PRIMARY_CARTRIDGE_DIR=/var/lib/openshift/5389ccff50044672510000c2/nodejs/ OPENSHIFT_NODEJS_IP=127.7.108.129 OPENSHIFT_GEAR_DNS=devconitv-conitv.rhcloud.com PS1=[devconitv-conitv.rhcloud.com \W]\> OPENSHIFT_CARTRIDGE_SDK_BASH=/usr/lib/openshift/cartridge_sdk/bash/sdk SELINUX_LEVEL_REQUESTED= OPENSHIFT_APP_SSH_KEY=[path to key] SHLVL=1 OPENSHIFT_DEPLOYMENT_BRANCH=master HOME=/var/lib/openshift/5389ccff50044672510000c2/ OPENSHIFT_MONGODB_DB_URL=mongodb://admin:[password]@127.7.108.130:27017/ OPENSHIFT_MONGODB_DB_PORT=27017 OPENSHIFT_NODEJS_PID_DIR=/var/lib/openshift/5389ccff50044672510000c2/nodejs//run/ OPENSHIFT_DEPENDENCIES_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/runtime/dependencies/ OPENSHIFT_KEEP_DEPLOYMENTS=1 OPENSHIFT_APP_NAME=devconitv OPENSHIFT_DATA_DIR=/var/lib/openshift/5389ccff50044672510000c2/app-root/data/ TMP=/tmp/ LOGNAME=5389ccff50044672510000c2 OPENSHIFT_NAMESPACE=conitv OPENSHIFT_AUTO_DEPLOY=true OPENSHIFT_GEAR_UUID=5389ccff50044672510000c2 OPENSHIFT_BROKER_HOST=openshift.redhat.com SSH_CONNECTION=80.215.167.182 16582 10.82.241.44 22 OPENSHIFT_APP_UUID=5389ccff50044672510000c2 OPENSHIFT_NODEJS_VERSION=0.10 OPENSHIFT_UMASK=077 OPENSHIFT_NODEJS_DIR=/var/lib/openshift/5389ccff50044672510000c2/nodejs/ HISTFILE=/var/lib/openshift/5389ccff50044672510000c2/app-root/data/.bash_history OPENSHIFT_CARTRIDGE_SDK_RUBY=/usr/lib/openshift/cartridge_sdk/ruby/sdk.rb OPENSHIFT_MONGODB_DIR=/var/lib/openshift/5389ccff50044672510000c2/mongodb/ _=/bin/env OLDPWD=/var/lib/openshift/5389ccff50044672510000c2/ I can see the libv8.so.v8314-3.14.5 in the /opt/rh/v8314/root/usr/lib64 folder, so I tried to change the LD_LIBRARY_PATH using rhc set-env, but it doesn't work (rhc set-env says 'done', but using echo $LD_LIBRARY_PATH in ssh still prints the old value) The app is still running but I need node command line to work for some bash scripts and cron jobs --- Additional comment from francois roland on 2014-06-05 10:46:12 EDT --- Some more info... when doing $rhc set-env LD_LIBRARY_PATH=/opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 -a appname it adds a file to the ~/.env/user_vars/ folder with the declared value, but it doesn't change the $LD_LIBRARY_PATH variable unfortunately I noticed there's no mention of the v8314 lib in the /etc/ld.so.conf.d folder, but I can't change it since I don't have root access. I've also been looking for a place like ~./bashrc to add a line like export LD_LIBRARY_PATH=/opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 but haven't find anything --- Additional comment from francois roland on 2014-06-05 11:26:46 EDT --- update : don't know if you guys changed anything but LD_LIBRARY_PATH is now /opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64 and node command is working again I also ran $ scl enable nodejs010 v8314 'node' but I'm not sure what fixed things up --- Additional comment from Michal Fojtik on 2014-06-05 12:07:35 EDT --- Francois, we haven't touched anything AFAIK ;-) Have you tried to stop/start? Yeah, if you have custom script that runs 'node' command, that it is good idea to use 'scl enable' wrapper to assure it will get proper env vars, independent on the OpenShift LD_LIBRARY_PATH. --- Additional comment from francois roland on 2014-06-05 12:16:20 EDT --- Michal, No, I didn't stop/start the app before noticing things were back to normal. So it seems the scl line did the trick. I just checked scl --help to get the correct name for node (was nodejs010 and not node010 as you said earlier) what do you mean by 'scl enable' wrapper ? Do I have to include this line anytime I need to run a node script ? I started using the services a few days ago and never had this issue before. Is there a way to 'fix' things permanently ? --- Additional comment from Michal Fojtik on 2014-06-05 12:22:07 EDT --- Francois: Yes, this should work without any 'scl enable', I will fix this tomorrow morning but it will not go into production immediately. In meanwhile, using the 'scl enable' is a 'good' workaround as it make sure everything (LD_LIBRARY_PATH/PATH) is set correctly. --- Additional comment from francois roland on 2014-06-05 12:23:20 EDT --- Alright, thank you very much Michal :) --- Additional comment from Michal Fojtik on 2014-06-06 05:53:47 EDT --- https://github.com/openshift/origin-server/pull/5480 --- Additional comment from openshift-github-bot on 2014-06-06 06:29:42 EDT --- Commit pushed to master at https://github.com/openshift/origin-server https://github.com/openshift/origin-server/commit/e6c3518635e8916cd88dc25a7a237c65b74465a8 Bug 1104922 - Add v8314 collection list of enabled SCL for nodejs cart --- Additional comment from Rich Hildred on 2014-06-06 23:25:51 EDT --- still not working for me env: MANPATH=/opt/rh/nodejs010/root/usr/share/man: OPENSHIFT_SECRET_TOKEN=fhHntICnYoeXK-WGrA9wLKofh-7u7W2iBQc9AqJFAI2ECMeVxZW0ZjhBKT8hFb2wRvE4KS7tYUCRrkbgC9CmOogFCUHHE1f6yswtUcoh8wRwuqLNoTSmxrgQm1A1KIV5 OPENSHIFT_GEAR_MEMORY_MB=512 SELINUX_ROLE_REQUESTED= GEM_HOME=/var/lib/openshift/52544d70e0b8cd9fba00000e/.gem TERM=xterm-256color SHELL=/bin/bash OPENSHIFT_LOG_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/logs/ TMPDIR=/tmp/ SSH_CLIENT=174.88.149.75 57851 22 OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/52544d70e0b8cd9fba00000e//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin OPENSHIFT_DEPLOYMENTS_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-deployments/ OPENSHIFT_TMP_DIR=/tmp/ SELINUX_USE_CURRENT_RANGE= OPENSHIFT_REPO_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/repo/ OPENSHIFT_HOMEDIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/ OPENSHIFT_GEAR_NAME=rhfp OPENSHIFT_NODEJS_PORT=8080 OPENSHIFT_GEAR_NAME=rhfp OPENSHIFT_NODEJS_PORT=8080 OPENSHIFT_PYPI_MIRROR_URL=http://mirror1.ops.rhcloud.com/mirror/python/web/simple SSH_TTY=/dev/pts/0 OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64 OPENSHIFT_NODEJS_IDENT=redhat:nodejs:0.10:0.0.18 OPENSHIFT_APP_SSH_PUBLIC_KEY=/var/lib/openshift/52544d70e0b8cd9fba00000e/.openshift_ssh/id_rsa.pub OPENSHIFT_CLOUD_DOMAIN=rhcloud.com USER=52544d70e0b8cd9fba00000e LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64 TMP_DIR=/tmp/ TMOUT=300 OPENSHIFT_BUILD_DEPENDENCIES_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/build-dependencies/ MAIL=/var/mail/52544d70e0b8cd9fba00000e PATH=/var/lib/openshift/52544d70e0b8cd9fba00000e//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin PWD=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/repo OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/logs/ OPENSHIFT_APP_DNS=rhfp-syndicateme.rhcloud.com OPENSHIFT_NODEJS_LOG_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/logs/ OPENSHIFT_APP_DNS=rhfp-syndicateme.rhcloud.com LANG=en_CA.UTF-8 OPENSHIFT_PRIMARY_CARTRIDGE_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/nodejs/ OPENSHIFT_GEAR_DNS=rhfp-syndicateme.rhcloud.com OPENSHIFT_NODEJS_IP=127.13.15.129 PS1=[rhfp-syndicateme.rhcloud.com \W]\> OPENSHIFT_CARTRIDGE_SDK_BASH=/usr/lib/openshift/cartridge_sdk/bash/sdk SELINUX_LEVEL_REQUESTED= OPENSHIFT_APP_SSH_KEY=/var/lib/openshift/52544d70e0b8cd9fba00000e/.openshift_ssh/id_rsa SHLVL=1 HOME=/var/lib/openshift/52544d70e0b8cd9fba00000e/ OPENSHIFT_NODEJS_PID_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/nodejs//run/ OPENSHIFT_DEPENDENCIES_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/runtime/dependencies/ OPENSHIFT_APP_NAME=rhfp OPENSHIFT_DATA_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/data/ TMP=/tmp/ LOGNAME=52544d70e0b8cd9fba00000e OPENSHIFT_GEAR_UUID=52544d70e0b8cd9fba00000e OPENSHIFT_NAMESPACE=syndicateme OPENSHIFT_BROKER_HOST=openshift.redhat.com SSH_CONNECTION=174.88.149.75 57851 10.108.9.149 22 OPENSHIFT_APP_UUID=52544d70e0b8cd9fba00000e OPENSHIFT_NODEJS_VERSION=0.10 OPENSHIFT_UMASK=077 OPENSHIFT_NODEJS_DIR=/var/lib/openshift/52544d70e0b8cd9fba00000e/nodejs/ HISTFILE=/var/lib/openshift/52544d70e0b8cd9fba00000e/app-root/data/.bash_history OPENSHIFT_CARTRIDGE_SDK_RUBY=/usr/lib/openshift/cartridge_sdk/ruby/sdk.rb _=/bin/env OLDPWD=/var/lib/openshift/52544d70e0b8cd9fba00000e when I try to do the scl thing: [rhfp-syndicateme.rhcloud.com repo]\> scl enable node010 'node' node index.js Unable to open /etc/scl/prefixes/node010! this has worked properly for months, and just stopped working on the 4th. --- Additional comment from Rich Hildred on 2014-06-06 23:32:37 EDT --- ok ... I got it to work I did: scl enable nodejs010 'node' then at the node prompt require('./index.js'); --- Additional comment from Yan Du on 2014-06-09 04:32:58 EDT --- Test on devenv_4850, issue can't be reproduced. [n10a-111.dev.rhcloud.com repo]\> echo $LD_LIBRARY_PATH /opt/rh/v8314/root/usr/lib64 [n10a-111.dev.rhcloud.com repo]\> node -v v0.6.20 Move bug to verified. --- Additional comment from Michal Fojtik on 2014-06-09 08:29:25 EDT --- Rich: The problem is that LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64 is missing the V8 path as the V8 became part of Software Collection... My patch should correct this, but it is not in production yet.
June 23 In starting to use OpenShift via SSH, I find node errors out, such as with a simple version request: > echo $LD_LIBRARY_PATH /opt/rh/nodejs010/root/usr/lib64 > node -v node: error while loading shared libraries: libv8.so.v8314-3.14.5: cannot open shared object file: No such file or directory
https://github.com/openshift/enterprise-server/pull/327
Check on puddle [2.1.4/2014-07.15.1] 1.Create a nodejs app #rhc app create nodejs nodejs 2.log in the app, check the env >env|grep LIB OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/v8314/root/usr/lib64 LD_LIBRARY_PATH=/opt/rh/v8314/root/usr/lib64 3.run the command 'which node' > which node which: no node in (/var/lib/openshift/53c5dff808c291a77000005e//.node_modules/.bin::/bin:/usr/bin:/usr/sbin) The LIB path doesn't contain the nodejs path.
Seem like OSE does not include node bin path in ENV. [nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> scl enable nodejs010 'echo $LD_LIBRARY_PATH' /opt/rh/v8314/root/usr/lib64:/opt/rh/nodejs010/root/usr/lib64:/opt/rh/v8314/root/usr/lib64 [nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> echo $LD_LIBRARY_PATH /opt/rh/v8314/root/usr/lib64 [nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> scl enable nodejs010 'echo $PATH' /opt/rh/v8314/root/usr/bin:/opt/rh/nodejs010/root/usr/bin:/var/lib/openshift/53c60eb3be739b17ff000001//.node_modules/.bin::/bin:/usr/bin:/usr/sbin [nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> echo $PATH /var/lib/openshift/53c60eb3be739b17ff000001//.node_modules/.bin::/bin:/usr/bin:/usr/sbin [nodejsapp-jialiu.ose-21.com.cn 53c60eb3be739b17ff000001]\> scl enable nodejs010 v8314 'which node' /opt/rh/nodejs010/root/usr/bin/node The path for node bin should included in $PATH.
I missed some later cherry-picks for the upstream bug. I've verified this in a devenv and $PATH and $LD_LIBRARY_PATH are now properly set. https://github.com/openshift/enterprise-server/pull/338
Verify this bug with openshift-origin-cartridge-nodejs-1.24.3.7-1.el6op.noarch Create a nodejs application, ssh into this app: [apptest-11.ose21z-auto.com.cn 53d082a708c2917794000001]\> node > (^C again to quit) > [apptest-11.ose21z-auto.com.cn 53d082a708c2917794000001]\> node -v v0.10.25 [apptest-11.ose21z-auto.com.cn 53d082a708c2917794000001]\> env|grep PATH MANPATH=/opt/rh/nodejs010/root/usr/share/man:/opt/rh/v8314/root/usr/share/man:: OPENSHIFT_NODEJS_PATH_ELEMENT=/var/lib/openshift/53d082a708c2917794000001//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin OPENSHIFT_NODEJS_LD_LIBRARY_PATH_ELEMENT=/opt/rh/nodejs010/root/usr/lib64:/opt/rh/v8314/root/usr/lib64 LD_LIBRARY_PATH=/opt/rh/nodejs010/root/usr/lib64:/opt/rh/v8314/root/usr/lib64 PATH=/var/lib/openshift/53d082a708c2917794000001//.node_modules/.bin:/opt/rh/nodejs010/root/usr/bin:/bin:/usr/bin:/usr/sbin
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2014-0999.html