Попытка запустить PhantomJS в OpenShift: не удается исправить GhostDriver, чтобы он мог связываться с IP-адресом сервера

ТЛ; др

Как решить version 'GLIBCXX_3.4.15' not found когда я не могу получить права root на сервере Linux?


Я пытаюсь использовать PhantomJS в OpenShift. Как объясняется в этой статье, PhantomJS GhostDriver связывается только с локальным хостом, тогда как в OpenShift вы не можете ничего связывать с локальным хостом (вам нужно указать IP-адрес компьютера). Paolo Bernardi (автор статьи) поделился патчем, исправляющим PhantomJS, чтобы можно было связать IP-адрес.

Проблема в том, что предоставленный патч не работает на моем сервере OpenShift: при запуске ./phantomjs -v на моей исправленной установке PhantomJS я обнаружил ошибку сегментации. Поэтому я решил скомпилировать PhantomJS с исправлением самостоятельно на имеющемся у меня сервере Debian благодаря документации PhantomJS:

sudo apt-get install build-essential g++ flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev python ttf-mscorefonts-installer
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.9
# apply the fix
./build.sh

При беге ./phantomjs -v на скомпилированном бинарном я получаю 1.9.8: это сработало.

При копировании этого двоичного файла в OpenShift и запуске ./phantomjs -vЯ ловлю ошибку:

./phantomjs: /usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found (required by ./phantomjs)

Есть идеи, как это решить? В чем причина этой ошибки? Прошу прощения за отсутствие системы под знаком:)


Обновление (и решение):

Благодаря Molenetear я скомпилировал исправленный двоичный файл на ОС RHEL: больше никаких ошибок!

Рабочий бинарный файл PhantomJS: https://github.com/jrestful/server/blob/master/seo/phantomjs-1.9.8-patched.tar.gz?raw=true


Больше деталей:

Я не могу обновить версию GLIBC в OpenShift, так как я не могу быть пользователем root (если нет обходных путей).

Я не могу скомпилировать PhantomJS в OpenShift напрямую, так как у меня недостаточно места для источников на этом сервере.

Мои картриджи OpenShift: Tomcat 7 (JBoss EWS 2.0) + MongoDB 2.4 + RockMongo 1.1.

На моем сервере Debian:

$ uname -a
Linux servername 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 GNU/Linux

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

На моем сервере OpenShift:

$ uname -a
Linux servername 2.6.32-504.3.3.el6.x86_64 #1 SMP Fri Dec 12 16:05:43 EST 2014 x86_64 x86_64 x86_64 GNU/Linux

$ strings /usr/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

1 ответ

Решение

Поскольку OpenShift Online работает на RHEL, вы должны иметь возможность установить CentOS в виртуальную машину на локальном компьютере (или запустить ее где-нибудь в облаке) и скомпилировать версию PhantomJS с патчем, а затем загрузить его на свой сервер OpenShift и использовать его.,

Если вы не можете этого сделать, воспользуйтесь формой обратной связи по адресу help.openshift.com и ответьте на этот вопрос stackru.

Другие вопросы по тегам