GLIBC'yi güncellemeden yeni yazılım nasıl çalıştırılır?


20

Mathematica 9'u eski bir Red Hat Enterprise Linux AS sürüm 4 sistemine yükledim. Kurulumdan sonra Mathematica'yı başlatmaya çalıştım, ancak aşağıdaki mesaj çıktı:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: `GLIBC_2.4 'sürümü bulunamadı (/ tarafından gerekli) ev / wcbao / M / Wolfram / Mathematica / 9.0 / systemfiles / Kütüphaneler / 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 'sürümü bulunamadı (/ tarafından gerekli) ev / wcbao / M / Wolfram / Mathematica / 9.0 / systemfiles / Kütüphaneler / Linux-x86-64 / libQtCore.so.4)

Sistem glibc'sini güncellemek istemiyorum, çünkü riskli ve yönetici bunu yapmama izin vermiyor.

Birisi glibc'nin yeni sürümünü başka bir yere kurmanın ve programı şu şekilde çalıştırmanın mümkün olduğunu önerdi

LD_LIBRARY_PATH=/lib/new your_application

ve bu sistemi etkilemez.

Burada bu yöntemin gerçekten işe yarayıp yaramadığını soruyorum. Ve eğer işe yararsa, bunu adım adım nasıl yapacağımı bilmek istiyorum (şu anda Linux'ta deneyimim yok ve Mathematica'yı Linux'ta en kısa zamanda kullanmak istiyorum).

Düzenle :

"Ermine" adında bir yazılım olduğunu fark ettim. Bir yazılımı harici ortama bağlı olmayan bağımsız bir paket olarak dağıtabileceği anlaşılmaktadır. Ne yazık ki, bir shareware. Bence "Ermine" bunu yapabildiğinden, eski sistemde yeni yazılım kullanmanın bir yolu olmalı.


2
İşe yarar. Kurulması için oldukça fazla iş olması muhtemeldir (Mathematica'nın bağlı olduğu tüm kütüphaneleri yüklemeniz gerekir). Benim tavsiyem, evinizin bir alt dizinine daha yeni bir sürümden rpm paketleri kurmak olacaktır. RH'ye daha aşina olan birinin bunu nasıl yapacağını açıklayan bir cevap yazmasına izin vereceğim.
Gilles 'SO- kötü olmayı bırak'

@Gilles Merhaba, Gilles, çok teşekkür ederim !!! Dört gözle bekliyorum.
user15964

İse başka bir yerde glibc yüklemek için riskli.
BenjiWiebe

@BenjiWiebe - tam olarak ne tür risklerden bahsediyorsunuz?
FooF

1
Superuser'dan cross-posted: superuser.com/questions/543249/… Yorumumu oradan tekrar ediyorum: "RHEL4 sekiz yaşında ve normal destek yaşam döngüsünün sonuna ulaştı. Yükleyebileceğiniz başka bir makine yok mu? ? örn. Masaüstü makineniz. "
Burhan Ali

Yanıtlar:


10

Kesinlikle GLIBC'nin yeni bir sürümünü derleyebilir ve ayrı bir dizinde saklayabilirsiniz. Yapmanız gereken ilk şey, istediğiniz glibc sürümünü http://ftp.gnu.org/gnu/glibc/ adresinden indirmektir .

configureKomut dosyasını çalıştırın ve --prefix=gibi bir şeye ayarlayın /home/you/mylibs.

Bu dizine kurmayı başardıktan sonra LD_LIBRARY_PATH, yeni glibc'nin konumuna ayarlamanız gerekir .

Derlemeniz gerekebilecek bağımlılıkları bulmanız gerekir. LD_ * değişkenlerini ve programınızı çalıştıran (yine de yapmanız gereken) bir kabuk betiği oluşturabilir ve tekrar tekrar çalıştırabilirsiniz - eksik kütüphaneleri yol boyunca indirin / yeniden derleyin.

Ayrıca lddprogramın hangi paylaşımlı kütüphanelere ihtiyacı olduğunu belirlemek için kullanabilirsiniz, daha sonra lddglibc gerektirip gerektirmediğini öğrenmek için kütüphanelerin her birinde kullanabilirsiniz .

Bu çok olabilir zaman alan bir süreç olabilir ve kalbin sabırsızlığı veya zayıflığı için değildir - uygulama işinizi yapmak için gereken olası bağımlılıklar arasında yolunuzu açmak / yeniden derlemek zaman zaman saçınızı çekmek isteyebilir.

Güncelleme 1:

Glibc-2.4'ü indirdim ve CentOS 6'da derlemeye çalıştım. configureDüzgün çalışmak için değiştirerek acve ldsürüm kontrollerini değiştirmek zorunda kaldım :

2.1[3-9]*)

için:

2.*)

çizgilerine 4045ve 4106içinde configuredosyasının kendisini. * FLAGS ortam değişkenlerimi şöyle ayarladım:

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

ve sonra idam edildi ./configure --prefix=/home/tim/masochist . Düzgün yapılandırılmış ... ve düzgün bir şekilde inşa etmeye başladı ... ama sonra hatalarla karşılaşmaya başladım - çoğunlukla derleyici yeniden tanımlanmaktan şikayet ediyor.

O noktadan vazgeçtim ... Çünkü çok zaman alıcı hale geliyordu . ;)


Son satır önemli olsa da, bilgi için +1. OP, ilgili çaba miktarının buna değip değmeyeceğine karar vermelidir.
Burhan Ali

Hepinize teşekkür ederim! Tamam, istifa ediyorum. Sanırım bir uzlaşma olarak Mathematica 8'e sadık kalmak daha iyi olur. Red Hat 4 üzerinde çalışıyor.
user15964

@livingstaccato Merhaba, Ama vonbrand'ın sözlerine nasıl yorum yapılır: "Bazı garip bir yere yeni bir sürüm yüklemek daha risklidir ... Garip bir yerdeki kütüphane rastgele şeyler tarafından alınabilir, ....". Gerçekten daha riskli mi? Hiç cevabınızda anlatılan yolu denediniz mi?
user15964

@ user15964 Yaptığınız şeye dikkat etmiyorsanız root veya oturum başlatma komut dosyasında LD_PRELOAD'unuzu değiştirmek ve kendinizi kilitlemek gibi garip bir şey yapmazsanız riskli değildir .
livingstaccato

@ user15964 Ayrıca - evet - Glibc yolunu, yolunu, gün içinde yeniden kurdum.
livingstaccato

1

Glibc'yi dağıtımınız tarafından desteklenen bir sürüme güncellemek düşük risklidir. Bu sürümleri ile sap uyumluluk bu tarih yazılır kadar geriye ve (böcek barikat) Yeni bir sürümün yerine bir düşüş olması gerekmektedir. Tuhaf bir yere yeni bir sürüm yüklemek daha risklidir, IMHO.


4
ama sorun şu ki, ben yönetici değilim, yetkim yok. İznim olsa bile, sistemde değişiklik yapmaktan korkuyorum, çünkü bu benim bilgisayarım değil, aslında bir küme, birçok insan üzerinde çalışıyor. Bu arada, başka bir yerde yeni bir sürüm neden riskli? Tüm sistemi değil, sadece ihtiyacım olan yazılımı yeni lib'e bağlamam gerekiyor.
user15964

1
Ve rastgele bir paket kurmaktan çekinmeyin? Sistem yönetimi politikaları ciddi bir revizyona ertelendi. Yabancı bir yerde kütüphane rasgele malzeme ile yakalandı ve çalışmasını dışarı ütü olabilir senin tek (ve onun tarafından başlatılan olası süreçler, uygulamanın yok ... standart programlar dahil) zorlu bir mücadele dönüşebilir
vonbrand

1
@vonbrand - Saçmalık, bazı yüksek güvenlikli makinelerden (ve örneğin bazı paylaşılan geliştirici veya test makinesi / kümesinden değil) söz etmiyorsak, bu durumda yabancı denetlenmeyen yazılım hakkında sağlıklı paranoya sahip olmanız gerekir. Rastgele ihlaller açısından, libc'yi güncellemek (tüm sistemi etkileyen, muhtemelen sistem ihlallerine neden olan) sadece güvenilir kaynaklardan yalıtılmış bir uygulama programı kurmaktan (Mathematica'nın rastgele paket olduğu fikrine katılmıyorum) oldukça farklı bir konudur. Kaynakların tükenmesi elbette yetkili sistem yöneticisinin ele alması gereken geçerli bir konudur.
FooF

@FooF, ben çok fazla durumlar gördük "Yönetim iyi bilir, onlar ile istediğiniz gibi kullanıcıların yapalım hiçbir bu alanda yanılması değil destek".
vonbrand

1
@vonbrand - Son yorumunuzu kabul etme eğilimindeyim. Ancak, libc'yi güncellemenin veya iyi bilinen bir yazılımın ("rastgele paket" değil) kurulmasının bir şekilde karşılaştırılabilir olduğunu kabul etmiyorum (kötü niyet yoksayılarak). Burada kesin bir görüş bildirmek için çevrenin doğası ve kullanıcıları hakkında çok az şey biliyoruz. Yazılım geliştirme makinelerinde (birçok yetkili kullanıcıyla), kullanıcıların kendi yazılımlarını çalıştırmalarına izin vermek mantıklı olabilir . Bazen basit bir gerekliliktir (OpenWRT ve OpenEmbedded, hedef gömülü platformların kaynaklardan f / w görüntüsünü oluşturmak için gereken bazı araçları oluşturacağı).
FooF

-3

Bu özel durumda, bu paylaşılan sistemin yöneticilerinden yardım (ve izin) almadığınız sürece rahatsız etmeyin derim.

Mathematica, Windows, Mac ve Linux'ta çalışır, bu yüzden başkalarını etkilemek için endişelenmenize gerek kalmayan masaüstü makinenize yükleyin. Ayrıca işletim sisteminin RHEL4'ten daha yeni olması daha olasıdır ve bu nedenle onu kurmak için herhangi bir eğilme yapmanız gerekmeyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.