як запустити нове програмне забезпечення без оновлення 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 'не знайдено (потрібно / home / wcbao / M / Wolfram / 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 'не знайдено (потрібно / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Бібліотеки / Linux-x86-64 / libQtCore.so.4)

Я не хочу оновлювати систему glibc, тому що це ризиковано, і адміністратор не дозволяє мені це робити.

Хтось припустив, що можна просто встановити нову версію glibc деінде та запустити програму як

LD_LIBRARY_PATH=/lib/new your_application

і це не вплине на систему.

Тому я запитую тут, чи справді цей метод працює. І якщо це працює, я хочу знати, як це зробити поетапно (мені зараз бракує досвіду роботи в Linux, і хочу якомога швидше використовувати Mathematica в Linux).

Редагувати :

Я помітив, що є програмне забезпечення під назвою "Ermine". Здається, він може розгорнути програмне забезпечення як окремий пакет, який не покладається на зовнішнє середовище. На жаль, це безкоштовне програмне забезпечення. Тому я думаю, оскільки "Ermine" може це зробити, повинен бути спосіб використання нового програмного забезпечення на старій системі.


2
Це спрацювало б. Для налаштування, ймовірно, буде досить багато роботи (вам потрібно буде встановити всі бібліотеки, від яких залежить Mathematica). Моєю рекомендацією було б встановити пакети rpm з новішої версії у підкаталозі вашого будинку. Я дозволю тому, хто більше знайомий з RH, написати відповідь, що пояснить, як це зробити.
Жил "ТАК - перестань бути злим"

@Gilles Привіт, Жилле, дуже дякую !!! Я з нетерпінням чекаю цього.
користувач15964

Це є ризикованим для установки 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 . Він налаштований належним чином ... і він також почав будуватися належним чином ... але потім я почав стикатися з помилками - в основному компілятор скаржився на те, що речі переосмислюються.

У той момент я здався ... Тому що це занадто трудомістко . ;)


+1 для інформації, хоча останній рядок важливий. ОП повинна вирішити, чи варто докладати зусиль.
Бурхан Алі

Дякую всім! Гаразд, я подаю у відставку. Думаю, я б краще дотримувався Mathematica 8 як компроміс. Він працює на Red Hat 4.
user15964

@livingstaccato Привіт, Але як коментують слова фонбранда: "Встановлення нової версії в якомусь дивному місці є більш ризикованим ... Бібліотеку в дивному місці можна підібрати випадковими речами, ....". Це справді ризиковано? Ви коли-небудь спробували так, як описано у вашій відповіді?
user15964

@ user15964 Це не ризиковано, якщо ви не звертаєте уваги на те, що ви робите, root або ви робите щось дивне, як, наприклад, змінити LD_PRELOAD у своєму сценарії сеансу init та закрити себе.
livingstaccato

@ user15964 Також - так - я відновив шлях glibc, шляхом, назад у той день.
livingstaccato

1

Оновлення glibc до версії, що підтримується вашим дистрибутивом, є низьким ризиком. Він написаний, щоб вирішити сумісність з версіями, які датуються далеко , і (забороняючи помилки) нова версія повинна бути просто краплею заміни. Установка нової версії в якомусь дивному місці є більш ризикованою, IMHO.


4
але проблема в тому, що я не адміністратор, я не маю повноважень. Навіть якщо я отримав дозвіл, я боюся вносити зміни в систему, тому що це не мій комп’ютер, це насправді кластер, на ньому працює багато людей. До речі, чому нова версія в іншому місці є ризикованою? Мені потрібно лише пов’язати потрібне програмне забезпечення з новою lib, а не цілою системою.
користувач15964

1
І ви сміливо встановлюєте якийсь випадковий пакет? Політика системного адміністрування прострочена до серйозного перегляду. Бібліотеку в дивному місці можна назбирати випадковими речами, і прасування запуску вашої програми (а можливі процеси, розпочаті нею, які не передбачають стандартних програм), може стати досить складним завданням ...
vonbrand

1
@vonbrand - нісенітниця, якщо ми не говоримо про якусь машину підвищеної безпеки (а не, наприклад, про якийсь спільний розробник або тестувальну машину / кластер), у цьому випадку вам потрібно мати здорову паранойю щодо закордонного програмного забезпечення. Що стосується випадкових зривів, то оновлення libc (це стосується всієї системи, можливо, спричиняє поломки системи), зовсім інша справа, ніж просто встановлення ізольованої прикладної програми з надійних джерел (я не погоджуюся з думкою, що Mathematica є випадковим пакетом). Звичайно, вичерпання ресурсів є вагомою проблемою, з якою повинен вирішити компетентний системний адміністратор.
FooF

@FooF, я бачив занадто багато випадків, коли "Адміністрація найкраще знає, нехай користувачі роблять так, як хочуть, без підтримки", щоб у цій галузі були ілюзії.
vonbrand

1
@vonbrand - я погоджуюся з вашим останнім коментарем. Але я категорично не погоджуюся з тим, що оновлення libc або встановлення відомого програмного забезпечення (а не "випадкового пакета") якимось чином порівнянне (припускаючи жодних злих намірів). Ми дуже мало знаємо про природу довкілля та його користувачів, щоб висловити будь-яку остаточну думку тут. У машинах для розробки програмного забезпечення (з багатьма компетентними користувачами) може бути доцільним дозволити користувачам запускати власне програмне забезпечення. Іноді це просто необхідність (OpenWRT і OpenEmbedded, що цільові вбудовані платформи будуватимуть із джерел деякі інструменти, необхідні для створення f / w зображення).
FooF

-3

У цьому конкретному випадку я б сказав, що не турбуйтеся, якщо у вас немає допомоги (і дозволу) адміністраторів цієї спільної системи.

Mathematica працює на Windows, Mac та Linux, тому просто встановіть її на робочий стіл, де вам не доведеться турбуватися про вплив інших. Також більш імовірно, що ОС буде останнім часом, ніж RHEL4, і тому вам не доведеться робити жодних викривлень для її встановлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.