Glibc ikili yapılarını kurmak için kolay bir yöntem var mı?


13

Tekrar tekrar şu gibi sorular görüyorum:

Ve bunlar tipik olarak ittiğimiz çözüm türleridir:

Bu gerçekten yapabileceğimiz en iyisi mi? GLIBC gibi basit bir dizine açabileceğimiz /opt/myglibcve $LD_LIBRARY_PATHherhangi bir şeyi ayarlayabileceğimiz ve herhangi bir uygulamayı sorunsuz bir şekilde çalıştırabileceğimiz ikili GLIBC yapıları yok mu?

GLIBC 2.14 gerektiren yeni Chrome (28+) sürümleri gibi bir uygulama mı?

NOT: Bu konu başlıklı: Google Chrome 29 Released - tecmint.com üzerinde RHEL / CentOS 6 ve Fedora 19/15 üzerine yükleyin, sonuçta beni bu konuda düşündürdü.

Referanslar

Yanıtlar:


1

Başka bir kütüphane için olsa, ama glibc ... sanırım hızlı yollar olamaz, çünkü glibc bir şeyin "sabit kodlanmış" olduğu yerdir. Glibc çekirdek sürümünüze uyar ve yükleyicisi aslında doğru olanı (TM) yapan örnektir LD_LIBRARY_PATH.

Sanırız yanlış oldu, doğrusu şunlar olabilir mi?

LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`

Bu işe yarayıp yaramadığından emin değilim.

Her halükarda, alternatif bir glibc kullanmanın henüz çerçeve uygulamak için henüz gerektirmediğini düşünüyorum, çünkü arama yolları bazen kabloludur ve glibc her zaman OS / çekirdeğinize uymalıdır, bu nedenle genel ikili dosyalar, IMO olamaz. Debian'ın çok kolu, bunun önemsiz olmadığını, ancak yine de yapılabileceğini gösteriyor. Birisi hedef mimarinin yanı sıra kütüphaneleri ayırt etmek için başka araçlara sahip olsaydı.

Web sitesi bana diğer ilgili konuyu verdi:

Burada, kabul edilen cevap , glibc sorununu çözen rtldi adlı bir programa bağlantı içerir . 2004 yılından itibaren artık linker dışında çalışmayabilir, ama belki de değer. Kaynağı GPLv2'dir.

Yehova, Yehova

Bir arkadaşım bir zamanlar paylaşılan kütüphanelerin gerçek kullanımının abartıldığı fikrini ortaya attı. Ve bir anlamı var: paylaşılan kütüphaneler bilgisayarınızın belleğini kopyalarla doldurmamak için iyidir, ancak bireysel uygulama örneği göz önüne alındığında bu sadece birkaç MB'dir.

Kendi glibc'lerini sağlamak gibi eylemlere başvuracağımız sadece birkaç uygulama var. Bize uzun bir analiz kaydetmek, işlerini halletme anlamında onlara "kendileri tarafından kullanılan" anında uygulamalar "diyelim. Örneğin, web tarayıcıları, posta kullanıcı aracıları, ofis kıyafetleri ve müzik çalarlar kullanıcının istediklerini almasına izin verir ve kullanıcı başına yalnızca birkaç örnek vardır. Diğer tarafın portresini çizmek için, sistem hizmetleri, pencere yöneticileri, hatta tüm masaüstü ortamları bile çok önemlidir, ancak sadece destekleyici ve genellikle nadiren veya kritik olmayan, böylece insanlar onlara kendi glibc'lerini vermeye istekli olacaklardır.

"Anında uygulama" sayısı, kullanıcı başına kesinlikle azdır ve bu günlerde "temel" işletim sistemleri ve DE'lerin ürettiklerine kıyasla nispeten daha azdır. Chrome, Firefox gibi anlık uygulamalar statik olarak derlenmişse, ortalama sistem için ek bellek gereksinimi birkaç 100 MB olacaktır. Günümüzün birçok GB sisteminde çok fazla yer almayan bir argüman, bu nedenle acil uygulamalar için statik bağlantı bir seçenek olabilir.

Ayrıca, takas alanı ve SSD'lerin çok hızlı bir şekilde hızlı bir şekilde takas / çıkarılmasına izin veren kavramları da vardır, bu da artan bellek gereksiniminin ele alınmasına yardımcı olur.

Burada tartışılan glibc sorunu statik bağlantı olsa da gerçekten çözülmemiştir, ancak web tarayıcısı gibi uygulamalar için bir tür bağımsız dağıtım formatı düşünülebilir, burada X protokolü, bazı ses arka plan programı ve bazı çekirdek tek arayüz olarak buluşur. Avantajı daha az kütüphane versiyonu uyumsuzluğu olacaktır.


2
"Burada birkaç 100MB'den bahsediyoruz" Uh, hayır. Her ne kadar kütüphanelerin büyük bir kısmı o kadar çok olmasa da (ama muhtemelen bir büyüklük sırası veya 100 MB'tan fazla - deneyin du -h /lib), eğer bunlar statik olarak derlenmişse, her biri için bu miktarda RAM gerekli olacağını unutmayın. ve her uygulama onlarla derlendi. Yani, örneğin. aynı kitaplık yığınını kullanan iki uygulamanız var, şimdi iki kat daha fazla belleğe ihtiyacınız olacak. Üç uygulama mı? Üç kat daha fazla. Bahsetmiyorum bile önbellekleme faydalarını büyük ölçüde olumsuz etkileyecek ...
goldilocks

2
... elbette, sadece glibc'yi önbellekleyemezsiniz - çalışan her uygulamanın kopyalarını önbelleğe almanız gerekir (== gülünç). Kısacası, modern işletim sistemleri , paylaşılan nesneler gibi modern teknikler olmasaydı modern donanımda tamamen imkansız olurdu . Biraz daha fazla belleğe ihtiyacınız olmayacak - 10 veya 100 kat daha fazla belleğe ihtiyacınız olacak.
goldilocks

Debian'ımın 235MB'ı var /lib, bunların 202MB'ı çekirdek modülleri. Evet, /usr/lib4GB, ancak bu, bireysel programın ne kadar gerektirdiğine dair kesin bir sonuca izin vermez. İşlemcilerin önbellekleri yalnızca birkaç MB'dir. Yeni bir web tarayıcısı gibi bir şeyin bellek tüketimi ile, statik olarak bağlı ikili dosyaların önbellekleme üzerindeki etkisi de aynı anda çalışan programların miktarı ile o kadar büyük ve azalan değildir; ayrıca nispeten küçük önbellekler nedeniyle. Tahminlerim sizinkinden daha doğru görünüyor. Ah, evet.
Bananguin

Statik bağlantı ile ilgili diğer büyük sorundan bahsetmiyoruz bile - güncellemeler bir PITA. Glibc'de bir güvenlik sorunu varsa, önemli değil: glibc'yi yükseltin, programlarınızı yeniden başlatın. OTOH, programlarınız statik olarak bağlıysa, her programın yeni bir sürümünü indirmeniz gerekir . Ve dağıtımınız tüm dağıtımın yeniden derlenmesi (veya en azından tüm .o dosyalarını saklaması durumunda büyük olasılıkla yeniden bağlanması) yeniden dağıtmak zorunda kalacaktı.
derobert

1
@derobert: Adil görünüyor. Açıkçası iddialarım hiperbolikti - burada 1.8 GB ile 521 MB tükürdü taahhüt edildi. Yani bu% 30'luk bir artış olacak. Tabii ki, bu hala hiçbir avantajı olmayan bir strateji için bir satış noktası değil (ancak "sadece% 30 daha fazla RAM gerektirir").
goldilocks
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.