Centom 5.8'e PhantomJS 1.6 yükleyin


2

Centos 5.8 sunucumda PhantomJS v1.6'yı kurmaya çalışıyorum. Phantomjs çalıştırmaya çalışırken aşağıdaki hatayı çalıştırıyorum:

phantomjs: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by phantomjs)
phantomjs: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by phantomjs)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.7' not found (required by phantomjs)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.7' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libQtGui.so.4)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libQtGui.so.4)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libQtGui.so.4)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.10' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libQtNetwork.so.4)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.9' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libQtCore.so.4)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libfreetype.so.6)
phantomjs: /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libc.so.6: version `GLIBC_2.7' not found (required by /usr/phantomjs-1.6.0-linux-x86_64-dynamic/bin/../lib/libfontconfig.so.1)

Bazı araştırmalar, bunların oldukça karışık seviyeli sistem dosyaları olduğuna inanmamı sağlıyor. Bunu sunucumda çalıştırmak için nasıl bir fikrin var mı?

Yanıtlar:


3

Glibc ve libstdc ++ 'da sürümlenmiş semboller arıyor. Sisteminizdeki lib'lerdeki sürümler eski olduğundan eşleşmiyor, bu yüzden CentOS yeni bir yazılım söz konusu olduğunda oldukça muhafazakar olan RedHat AdvancedServer'ı izliyor.

Libstdc ++ 'daki sembolleri şu şekilde kontrol edebilirsiniz:

nm -D /usr/lib64/libstdc++.so.6 | grep GLIBC

nm isimli semboller, dinamik lib'ler için -D ve isimleriniz için grep isimli dökümleri

Hmm, bunlar oldukça çekirdekli lib'ler. libstdc ++, işletim sisteminizde C ++ kullanan herhangi bir uygulama tarafından kullanılır. glibc hemen hemen her şey tarafından kullanılır. Muhtemelen bunları yerinde güncellemek istemezsiniz ve yapsanız bile, bir sonraki sistem güncellemesinde güncellemelerinizi kaybedersiniz.

Firefox'ta da benzer bir sorun yaşadım, bununla başa çıkabilirsiniz:

  • Fedora RPM deposu bulun. Bu site faydalı görünüyor.
  • Bir versiyon seç. Hangisi hakkında çok fazla endişelenme; işe yaramazsa, tekrar deneyeceğiz
  • Seçtiğiniz sürüm için libc ve libstdc ++ x86_64 RPM'lerini bulun. İndir.
  • Bir tmp dir ye gidin ve sıkıştırın: rpm2cpio libstdc++WHATEVER.rpm | cpio -iv --make-directories
  • başka bir dizin hazırlayın, bu biraz kalmalı. / Usr / local veya home dir. Belki bir isim vermek için $ HOME / lib / lib64 diyebilirim. Adı gerektiği gibi değiştirin.mkdir $HOME/lib/lib64
  • Libstdc ++. So.6 dosyasını bulun ve $ HOME / lib / lib64 dizinine kopyalayın.

Şimdi $ HOME / lib / lib64 (ya da her nerede kalmışsa) içinde ihtiyacınız olan lib var. Şimdi uygulamanızı çalıştırdığınızda, yeni lib'i nasıl arayacağınızı söylemelisiniz.

  • LD_LIBRARY_PATH=$HOME/lib/lib64:$LD_LIBRARY_PATH appThatNeedsNewLib arg1 arg2

Bunu birkaç kez yapmaya hazır olun - bunu yaptığımda doğru libstdc ++ sürümünü alırken güncellemeleri indirmek için gereken eski dosyaları da açığa çıkardım.


3

Uygulananlar: PhantomJS 1.6. Ve Centos'ta Test Edildi 5.6

Kaynağından derleyebilirsiniz ve çekicilik gibi çalışacaktır.

./build.sh

Oluşturduktan sonra istediğiniz yerde çalıştırabileceğiniz konuşlandırın, kopyaladığınız dosyaları değiştirin ve bu hata size verilecektir.

Aynı sorunu kaynağından derledim ve gerekli dosyayı kopyaladım. (Yaptığım gibi farz ediyorum: diff sunucuya uyuldu ve dosyaları kopyalandı fakat aynı sunucuda bunu her zaman yapabilirsiniz)

Usr / local / src dosyasına indirildi ve derlendi. gerekli dosyayı orijinal yerine kopyaladı

cp -rP /usr/local/src/phantomjs-1.6.0-linux-x86_64-dynamic/bin/phantomjs* /data/phantomjs/bin/
cp -rP /usr/local/src/phantomjs-1.6.0-linux-x86_64-dynamic/lib/l* /data/phantomjs/lib/

Uyarı: PhantomJS'nin kaynaktan derlenmesi, özellikle de WebKit modülündeki binlerce dosya nedeniyle uzun zaman alıyor. Modern bir makinede 4 paralel derleme işi ile tüm işlem yaklaşık 30 dakika sürer. Eğer varsa, hazır ikili paketi kurmanız önemle tavsiye edilir. Linux

Not 1: build.sh varsayılan olarak 4 (dört) paralel derleme işi başlatır. Sanal bir makinede / sunucuda veya başka bir sınırlı ortamda oluştururken, bir seferde yalnızca bir derleme işi ayarlamak için sayıyı, örneğin ./build.sh --jobs 1'i geçerek işleri azaltın.

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.