Как запустить новое программное обеспечение без обновления GLIBC?

20

Я установил Mathematica 9 в старой системе Red Hat Enterprise Linux AS версии 4. После установки я попытался запустить Mathematica, но вышло следующее сообщение:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: версия `GLIBC_2.4 'не найдена (требуется для / главная / wcbao / M / Вольфрам / Mathematica / 9,0 / SystemFiles / Библиотеки / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: версия `GLIBC_2.4 'не найдена (требуется для / главная / wcbao / M / Вольфрам / Mathematica / 9,0 / SystemFiles / Библиотеки / Linux-x86-64 / libQtCore.so.4)

Я не хочу обновлять систему glibc, потому что это рискованно, и администратор не позволяет мне это делать.

Кто-то предположил, что можно просто установить новую версию glibc в другом месте и запустить программу как

LD_LIBRARY_PATH=/lib/new your_application

и это не повлияет на систему.

Поэтому я спрашиваю, действительно ли этот метод работает. И если это сработает, я хочу знать, как сделать это шаг за шагом (у меня сейчас нет опыта работы с Linux, и я хочу использовать Mathematica на Linux как можно скорее).

Редактировать :

Я заметил, что есть программное обеспечение под названием «Ermine». Кажется, что он может развернуть программное обеспечение как отдельный пакет, который не зависит от внешней среды. К сожалению, это условно. Поэтому я думаю, что, поскольку «Эрмине» может это сделать, должен быть способ использовать новое программное обеспечение на старой системе.

user15964
источник
2
Это будет работать. Скорее всего, это займет много работы (вам нужно установить все библиотеки, от которых зависит Mathematica). Я рекомендую установить rpm-пакеты из более новой версии в подкаталоге вашего дома. Я позволю тому, кто более знаком с RH, написать ответ, объясняющий, как это сделать.
Жиль "ТАК ... перестать быть злым"
@ Жиль Привет, Жиль, большое спасибо !!! Я с нетерпением жду этого.
user15964
Это является рискованным для установки Glibc в другом месте.
BenjiWiebe
@BenjiWiebe - о каких рисках вы конкретно говорите?
FooF
1
Перекрестная публикация от superuser: superuser.com/questions/543249/… Повторяю мой комментарий оттуда: «RHEL4 восемь лет, и он завершил свой нормальный жизненный цикл поддержки. Нет ли другой машины, на которую вы могли бы установить ее? ? Например. Ваш настольный компьютер. "
Бурхан Али

Ответы:

10

Вы определенно можете скомпилировать новую версию GLIBC и сохранить ее в отдельном каталоге. Первое, что вам нужно сделать, это загрузить нужную версию glibc с http://ftp.gnu.org/gnu/glibc/ .

Запустите configureскрипт и установите что- --prefix=то вроде /home/you/mylibs.

После того, как вам удалось установить его в этот каталог, вам нужно будет указать LD_LIBRARY_PATHместоположение нового glibc.

Вам нужно будет выяснить любые зависимости, которые вам могут понадобиться для компиляции. Вы можете создать сценарий оболочки, который устанавливает переменные LD_ * и запускает вашу программу (что вам все равно придется делать), и запускать ее многократно - загружая / перекомпилируя отсутствующие библиотеки по пути.

Вы также можете использовать, lddчтобы определить, какие разделяемые библиотеки нужны программе, а затем использовать lddкаждую из библиотек, чтобы выяснить, требуется ли им glibc.

Это может быть очень трудоемким процессом и не для нетерпеливых или слабонервных - пересечение / перекомпиляция вашего пути через возможные зависимости, необходимые для работы вашего приложения, может иногда вызывать желание вырвать свои волосы.

Обновление 1:

Я скачал glibc-2.4 и попытался скомпилировать его в CentOS 6. Для configureправильной работы мне пришлось изменить проверку версий acи ldверсий, изменив:

2.1[3-9]*)

чтобы:

2.*)

в строках 4045и 4106в самом configureфайле. Я установил переменные окружения * FLAGS следующим образом:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

и затем казнен ./configure --prefix=/home/tim/masochist. Он правильно настроен ... и начал правильно собираться ... но потом я начал сталкиваться с ошибками - в основном компилятор жаловался на переопределение вещей.

В этот момент я сдался ... Потому что это становилось слишком много времени . ;)

livingstaccato
источник
+1 за информацию, хотя последняя строка важна. ОП должен решить, стоит ли затраченное количество усилий.
Бурхан Али
Спасибо вам всем! ОК, я ухожу в отставку. Я думаю, что было бы лучше придерживаться Mathematica 8 в качестве компромисса. Он работает на Red Hat 4.
user15964
@livingstaccato Привет, но как прокомментировать слова Вонбранда: «Установка новой версии в каком-то странном месте более рискованна ... Библиотека в этом странном месте может быть захвачена случайными вещами, ....». Это действительно рискованно? Вы когда-нибудь пробовали способ, который описан в вашем ответе?
user15964
@ user15964 Это не рискованно, если вы не обращаете внимания на то, что делаете, root или делаете что-то странное, например, измените LD_PRELOAD в своем скрипте инициализации сеанса и заблокируйте себя.
livingstaccato
@ user15964 Также - да - я восстановил glibc, кстати, в тот же день.
livingstaccato
1

Обновление glibc до версии, поддерживаемой вашим дистрибутивом, является низким риском. Он написан для совместимости с версиями, которые датируются очень давно, и (за исключением ошибок) новая версия должна быть просто заменой. Установка новой версии в каком-то странном месте более рискованна, ИМХО.

vonbrand
источник
4
но проблема в том, что я не администратор, у меня нет полномочий. Даже если я получу разрешение, я боюсь вносить изменения в систему, потому что это не мой компьютер, это фактически кластер, над ним работает много людей. Кстати, а почему новая версия в другом месте рискованна? Мне нужно только связать необходимое программное обеспечение с новой библиотекой, а не со всей системой.
user15964
1
И вы можете свободно устанавливать какой-нибудь случайный пакет? Политики системного администрирования подлежат серьезному пересмотру. Библиотека в незнакомом месте может быть подобрана случайным образом, и сглаживание работы только вашего приложения (и возможных процессов, запускаемых им, которые не включают стандартные программы) может оказаться довольно сложной задачей ...
vonbrand
1
@vonbrand - ерунда, если мы не говорим о какой-то машине с высокой степенью безопасности (а не о каком-то совместно используемом разработчике или машине / кластере для тестирования), и в этом случае у вас должна быть здоровая паранойя по поводу иностранного неаудированного программного обеспечения. С точки зрения случайных сбоев, обновление libc (затрагивающее всю систему, возможно, вызывающее сбои системы) - это совсем другой вопрос, чем просто установка изолированной прикладной программы из надежных источников (я не согласен с представлением о том, что Mathematica - это случайный пакет). Разумеется, исчерпание ресурсов - это серьезная проблема, которую должен решить компетентный сисадмин.
FooF
@FooF, я видел слишком много случаев «Администрация знает лучше, пусть пользователи делают так, как они хотят, без поддержки», чтобы иметь иллюзии в этой области.
vonbrand
1
@vonbrand - я склонен согласиться с вашим последним комментарием. Но я категорически не согласен с тем, что обновление libc или установка хорошо известного программного обеспечения (а не «случайного пакета») каким-то образом сопоставимо (при условии отсутствия злых намерений). Мы очень мало знаем о природе окружающей среды и ее пользователях, чтобы высказать здесь однозначное мнение. На машинах разработки программного обеспечения (со многими компетентными пользователями) может иметь смысл позволить пользователям запускать свое собственное программное обеспечение. Иногда это просто необходимо (OpenWRT и OpenEmbedded, предназначенные для встроенных платформ, будут собирать из источников некоторые инструменты, необходимые для создания ч / б образа).
FooF
-3

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

Mathematica работает на Windows, Mac и Linux, поэтому просто установите ее на свой настольный компьютер, чтобы вам не пришлось беспокоиться о влиянии на других. Также более вероятно, что операционная система будет более новой, чем RHEL4, и поэтому вам не придется делать какие-либо искажения для ее установки.

Бурхан Али
источник