LINUX.ORG.RU

Java 7 & CentOs 4.8

 , ,


0

1

Такая проблема: есть ОС CentOs 4.8, в ней работает java 6, все нормально. Стоит задача перейти на java 7.

Установил java 7, пытаюсь выполнить любую (даже самую простейшую) команду, хотя бы:

java --version
Появляется ошибка:
Error: failed /opt/jdk1.7.0_79/jre/lib/i386/server/libjvm.so, because /lib/tls/libc.so.6: version `GLIBC_2.4` not found (required by /opt/jdk1.7.0_79/jre/lib/i386/server/libjvm.so)

Т.е. для работы java 7 требуются библиотеки GLIBC_2.4. В данный момент (по умолчанию в CentOs 4.8) стоит GLIBC_2.3.

Я немного погуглил и понял, что апгрейд библиотеки сам по себе сильно проблематичен, и по сути влечет за собой переустановку всей системы. А это крайне нежелательно.

Вопрос:

Можно ли как-то безболезненно для системы прикрутить GLIBC_2.4, чтоб ее использовала java 7 ?


Собери в отдельный каталог, настрой загрузчик, чтобы использовал её. Может быть даже chroot туда.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

А поподробнее можно? Просто не очень силен в линуксе.

1. «Собери» - это перекомпилировать как-то (слышал такой термин). Или имеется ввиду просто скопировать папку? И к чему именно относится «собрать» - java 7 или glibc новый?

2. «Настрой загрузчик» - что под этим понимается? В сторону каких команд (либо конфигурационных файлов) смотреть?

mux1
() автор топика

Я бы не стал с этим возиться. Так ли важен переезд на java 7 (в 2015-м то году, когда это тоже старьё уже)? Если перелезать, лучше сразу на java 8 (и с обновлением центоси тогда уж) - чтобы была ощутимая польза (и запас времени поддержки технологии - исправления уязвимостей и т.п.). То есть чтобы следующее обновление понадобилось, к примеру, не через 2-3 года, а через >5-10 лет.

Или лучше и оставаться на java 6.

Это половинчатое обновление придаст больше проблем, создаст больше лишней работы.

BattleCoder ★★★★★
()
Ответ на: комментарий от mux1

Всё, что посоветовал регистрант выше - конечно реализуемо и работать будет - но стоит ли с этим возиться? :(

Проще всего - собрать отдельную систему в chroot (песочница), можно хоть новый centos - пусть это будет каталог /mnt/centos-new, внутри него будут такие же /usr, /lib, /opt и т.п.

Скрипт запуска сделать - который будет запускать chroot /mnt/centos-new, а уже оттуда запускать java.

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

java 8 тоже пойдет.

Вообще, проблема возникла (если уж зашла тема, расскажу) изза того, что в tomcat надо реализовать поддержку tls 1.1, 1.2. Из этого следует что надо поднять версию java до 7+. Т.к. опять же, я погуглил - в java 6 это не поддерживается.

Поэтому подошло бы какое-то решение, как заставить работать tls 1.1 на java 6 (т.к. это собсно изначальная цель). Но это вроде уж точно нереализуемо.

Вот и возник вопрос, как заставить работать java 7 (или 8) в данных условиях.

Обновлять центос сильно бы не хотелось - сильно критично на живой системе, простой опять же.

mux1
() автор топика
Ответ на: комментарий от BattleCoder

Вот это интересно:

«собрать отдельную систему в chroot (песочница), можно хоть новый centos - пусть это будет каталог /mnt/centos-new, внутри него будут такие же /usr, /lib, /opt и т.п.»

Вопросы:

1. Не повлияет ли это на работоспособность остальной системы? Т.е. не получится ли так, что новая встанет как-то «поверх» старой и получится каша? Просто я опять же где-то читал что установкой нового glibc можно чуть ли не всю систему загубить.

2. Если с 1ым вопросом все ок, то как это сделать (как можно подробнее)? Т.е. что скачать-инсталлировать? Отдельно новый центос? Или все же можно отдельно только glibc (это было бы предпочтительнее)? Как организовать эту «песочницу», чтоб это никак не затронуло основную систему?

Извините если вопросы наивные, просто ни разу с этим не сталкивался. Общие принципы, вроде, понимаю. А вот в плане уже конкретики (что в каком файле конфигурить, какие конкретно команды вводить, и прочее) - у меня пробелы, к сожалению.

mux1
() автор топика
Ответ на: комментарий от mux1

Не, не. Каши не будет. Будет просто система внутри системы. В каком-то смысле как виртуалка. Проблемы с glibc должны решиться (теоретически). А ядро будет тоже самое. Проблемы могут быть, если понадобится зачем-то именно свежее ядро.

Я бы подсказал, но на практике такой сценарий никогда не реализовывал. Только gentoo в chroot собирал (естественно). а вот чтобы жонглировать разными glibc-библиотеками... это нет.

http://unix.stackexchange.com/questions/12522/installing-two-glibc-alongside-...

может тут что-то полезное найдёте

P.S. Совет - если возможно, склонируйте образ вашей рабочей машины (например, через clonezilla) куда-нибудь на другую машину (или на виртуалку), и поиграйтесь на ней (чтобы ОС была идентичная)... А уже потом перенесёте всё на рабочую.

BattleCoder ★★★★★
()
Последнее исправление: BattleCoder (всего исправлений: 1)
Ответ на: комментарий от mux1

1. «Собери» - это перекомпилировать как-то (слышал такой термин). Или имеется ввиду просто скопировать папку? И к чему именно относится «собрать» - java 7 или glibc новый?

Собрать это значит скачать архив с исходным кодом glibc, распаковать архив, вдумчиво почитать документацию, как его компилировать, выполнить команды

./configure --много-разных-опций make make install

но надо быть аккуратным, т.к. легко поломать систему, если библиотеки установятся не в отдельный каталог, а перезапишут текущие.

2. «Настрой загрузчик» - что под этим понимается? В сторону каких команд (либо конфигурационных файлов) смотреть?

Сходу не скажу. Можно попробовать через переменную окружения LD_PRELOAD, но не факт, что получится.

Вообще идея с установкой более нового линукса в chroot-окружение звучит более разумно. Скорее всего это будет проще и меньше возни.

Legioner ★★★★★
()
Ответ на: комментарий от mux1

Поэтому подошло бы какое-то решение, как заставить работать tls 1.1 на java 6 (т.к. это собсно изначальная цель). Но это вроде уж точно нереализуемо.

1. В томкате есть два варианта сетевого стека: через Java-библиотеку и через библиотеку apr. Советую покопать в этом направлении, возможно через apr (может быть через его новую версию) можно заставить работать нужные протоколы.

2. Томкат можно пустить через HTTP а перед ним поставить какой-нибудь reverse-proxy. nginx, apache httpd, может ещё что-нибудь. Они, соответственно, будут уметь нужные TLS-стандарты, а томкат как работал так и дальше будет работать.

Legioner ★★★★★
()
Ответ на: комментарий от mux1

2. Если с 1ым вопросом все ок, то как это сделать (как можно подробнее)? Т.е. что скачать-инсталлировать? Отдельно новый центос? Или все же можно отдельно только glibc (это было бы предпочтительнее)? Как организовать эту «песочницу», чтоб это никак не затронуло основную систему?

Выделить новый раздел на диске. Установить на этот раздел линукс (остальные, конечно, никак не трогать). Загрузчик тоже трогать не надо и грузиться в установленный линукс. Загрузиться с основного линукса, примонтировать этот новый раздел куда-нибудь и сделать туда chroot. Вот и всё.

https://wiki.debian.org/Debootstrap тут тоже можно почитать, но это для дебиана работает, для Centos такого я не видел.

Legioner ★★★★★
()

как вариант можно запустить яву через докер. Но на таком старом ядре докер трудно завести.

snaf ★★★★★
()
Ответ на: комментарий от Legioner

Они, соответственно, будут требовать новую версию openssl для того чтобы работали нужные TLS-стандарты.

поправил, не благодари

maloi ★★★★★
()
Ответ на: комментарий от mystery

Вот понаставят себе центоси, а потом проблемы. Софт старьё мамонта, а ещё на дебиан прут. Имхо, у людей c ubuntu server lts таких проблем никогда не возникнет, что там jvm сложно последнюю установить. Уже 8-ая на дворе полгода как, а у людей руки тока до 7-ки доходят...

menangen ★★★★★
()
Ответ на: комментарий от menangen

Дак у него 4.8
Это как Ubuntu 8.04, Debian 5, а то и 4
Уже старое и не поддерживаемое

mystery ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.