Instale o PhantomJS 1.6 no Centos 5.8

2

Estou tentando instalar o PhantomJS v1.6 no meu servidor Centos 5.8. Estou correndo para o seguinte erro ao tentar executar o phantomjs:

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)

Algumas pesquisas me levam a acreditar que são arquivos de sistema de baixo nível que não tenho certeza se devo mexer. Alguma idéia de como fazer isso funcionar no meu servidor?

    
por starsinmypockets 03.07.2012 / 20:28

2 respostas

3

Ele está procurando por símbolos versionados em glibc e libstdc ++. As versões nas libs do seu sistema são mais antigas, então não combina, o que faz sentido, já que o CentOS rastreia o RedHat AdvancedServer, que é bastante conservador quando se trata de um novo software.

Você pode verificar os símbolos em seu libstdc ++ desta maneira:

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

nm nomeia símbolos, -D para bibliotecas dinâmicas e grep para seus nomes

Hmm, essas são lindas bibliotecas do núcleo. O libstdc ++ é usado por qualquer aplicativo que use C ++ no seu sistema operacional. O glibc é usado por praticamente tudo. Você provavelmente não quer atualizá-los e, mesmo que o fizesse, provavelmente perderia suas atualizações na próxima atualização do sistema.

Eu tive um problema semelhante com o Firefox, você pode lidar com isso desta maneira:

  • Encontre um repositório do Fedora RPM. This site parece útil.
  • Escolha uma versão. Não se preocupe muito com qual deles; se não funcionar, tentaremos novamente
  • Encontre os RPMs libc e libstdc ++ x86_64 para a versão escolhida. Faça o download.
  • Vá para um diretório tmp e descompacte: rpm2cpio libstdc++WHATEVER.rpm | cpio -iv --make-directories
  • crie outro diretório, este precisa ficar por aqui um pouco. Encontre um local em / usr / local ou no diretório inicial. Eu diria, talvez, $ HOME / lib / lib64 apenas para dar um nome. Substitua o nome conforme necessário. %código%
  • Encontre o arquivo libstdc ++. so.6 e copie para $ HOME / lib / lib64.

Agora você tem a lib que você precisa em $ HOME / lib / lib64 (ou onde quer que esteja). Agora, quando você executa seu aplicativo, precisa informar como procurar a nova biblioteca.

  • mkdir $HOME/lib/lib64

Esteja preparado para fazer isso várias vezes - quando eu fiz isso, obtendo a versão correta da libstdc ++ expôs outros arquivos antigos que eu precisava para baixar atualizações também.

    
por 03.07.2012 / 20:56
3

Aplica-se a: PhantomJS 1.6. E testado no Centos 5.6

Você pode compilar a partir da fonte e funcionará como um charme.

./build.sh

Após a criação, implante o que você pode executar em qualquer lugar, simplesmente copie e substitua os arquivos onde ele está causando esse erro.

Eu tive o mesmo problema que eu compilei a partir do código-fonte e copiei o arquivo necessário. (Eu estou assumindo como eu fiz: cumprido no servidor diff e copiou arquivos através, mas você sempre pode fazer isso no mesmo servidor também)

Transferido para usr / local / src e compilado. copiou o arquivo necessário para o local original

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/

Warnning: Compilar o PhantomJS a partir do código leva muito tempo, principalmente devido a milhares de arquivos no módulo WebKit. Com 4 tarefas de compilação paralela em uma máquina moderna, todo o processo leva aproximadamente 30 minutos. É altamente recomendável instalar o pacote binário pronto se estiver disponível. Linux

Nota 1: o build.sh, por padrão, lançará 4 (quatro) tarefas de compilação paralela. Ao criar uma máquina virtual / servidor ou outro ambiente limitado, reduza os trabalhos passando um número, por exemplo, /build.sh --jobs 1 para definir apenas um trabalho de compilação por vez.

    
por 05.07.2012 / 15:09