2015-10-23 3 views
0

Я использую rhel3 с glibc-2.3.2. Я пытаюсь перейти на jdk8 из JDK5, но проблема с GLANC-зависимостью, как показано ниже. В основном JDK1.7 вперед, эта зависимость зависит от GLIBC_2.4.jdk1.8 Проблема зависимости GLIBC

java -version 
Error: dl failure on line 883 
Error: failed /homes/jdk1.8.0_45/jre/lib/i386/server/libjvm.so, because /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by /homes/JDK1.8/jdk1.8.0_45/jre/lib/i386/server/libjvm.so) 

Я не могу установить последнюю GLIBC в моей нынешней системе, поскольку существующая версия Glibc требуется для другого программного обеспечения компиляции. Как я могу продолжить?

+1

К сожалению, помимо обновления всего дистрибутива Linux существуют способы создания изолированной среды с использованием разных библиотек, но это скорее вопрос администрирования Linux, полностью независимый от того, что данное программное обеспечение является JVM, m предлагает перенаправление на [SU] (http://superuser.com/questions/tagged/linux) ... – Holger

+0

попытался 'LD_PRELOAD'? – the8472

+0

@ the8472 Не могли бы вы показать пример использования LD_PRELOAD в моем контексте. – Dil

ответ

0

Я не могу установить последний GLIBC в своей текущей системе, поскольку существующая версия glibc требуется для какой-либо другой компиляции программного обеспечения.

Уверены ли вы? За очень немногими исключениями (__ctype_b - единственное, что я знаю), более новые версии GLIBC совместимы с обратными (старые приложения продолжают работать с новыми версиями GLIBC).

Как я могу продолжить?

Если вы действительно не может обновить систему glibc, вы можете установить новую Glibc в не по умолчанию местоположение, и сделать только JDK использовать его.

Некоторые подробности о том, как это сделать, описаны в этом документе answer.

Другой способ заключается в использовании «явного загрузчика вызов», как это:

GLIBC221LIB=/path/to/glibc-2.21/lib 
$GLIBC221LIB/ld-linux.so.2 --library-path $GLIBC221LIB \ 
    /path/to/jdk8/bin/java ...args... 

Еще одна альтернатива состоит в модернизации системы glibc, но сохранить старый Glibc-2.3.2 в не по умолчанию местоположение, и укажите (надеюсь, несколько) приложения, которые несовместимы с новой версией glibc для старой версии.

+0

Я определенно не могу обновить glibc по многим причинам. Поэтому давайте оставим этот вариант. Я попробовал 'GLIBC221LIB =/path/to/glibc-2.21/lib $ GLIBC221LIB/ld-linux.so.2 --library-path $ GLIBC221LIB \ /path/to/jdk8/bin/java ... args. ..': но получите ошибку как 'FATAL: kernel too old' – Dil

+0

@Dil Различные версии GLIBC имеют разные минимальные требования к ядру. По-видимому, вы выбрали слишком новую версию для ядра, в котором вы работаете. –

Смежные вопросы