¿Cómo puedo configurar y ejecutar PhantomJS en Ubuntu?


163

Configuré PhantomJS y lo grabé en video: https://www.dailymotion.com/video/xnizmh_1_webcam

Instrucciones de compilación: http://phantomjs.org/build.html

¿Hay algo malo en mi configuración?

Después de configurarlo, leí el tutorial de inicio rápido e intenté escribir este código

phantomjs hello.js 

Me da el error "comando no encontrado". ¿Como puedó resolver esté problema?


¿Cuál es el resultado de whereis phatomjs?
Alex


me da salida "phantomjs:"
FURKAN ILGIN

Lo intenté, me da el mismo error :(
FURKAN ILGIN

Gracias, resolví el problema. El problema es que no tengo softlink para mi programa. Gracias por tu ayuda :)
FURKAN ILGIN

Respuestas:


360

La respuesta de Guidouil me puso en el camino correcto. Tuve que agregar un enlace simbólico adicional a / usr / bin /, e hice enlaces simbólicos directos para los 3 - ver más abajo.

Estoy instalando en el servidor Ubuntu Natty Narwhal.

Esto es exactamente lo que hice.

cd /usr/local/share
sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo tar xjf phantomjs-1.9.7-linux-x86_64.tar.bz2
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
sudo ln -s /usr/local/share/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/bin/phantomjs

Y finalmente cuando lo hago

phantomjs -v

Consigo 1.9.7

Si alguien ve algún problema con lo que he hecho, avíseme.


77
si necesita ese enlace final, es porque no tiene / usr / local / bin en su RUTA
DrewB

1
Esto funciona, pero ¿alguien puede explicarme por qué no deberíamos simplemente copiar y pegar todo en usr/binlugar de crear un enlace /usr/local?
Heisenberg el

66
¿A alguien también se le niega el permiso?
Usuario

1
Para que phantomjs esté disponible desde cualquier directorio, es suficiente si agrega un enlace simbólico a uno de los directorios enumerados en su variable $ PATH. (ejecute "echo $ PATH" para ver cuáles son).
Juampy NR

55
Me encontré con este problema: bin / phantomjs: error al cargar las bibliotecas compartidas: libfontconfig.so.1: no se puede abrir el archivo de objeto compartido: No existe tal archivo o directorio. Encontré una solución aquí . Ejecute el comando:sudo apt-get install libfontconfig
Neil Hoff

110

PhantomJS está en npm . Puede ejecutar este comando para instalarlo globalmente:

npm install -g phantomjs-prebuilt  

phantomjs -v debería volver 2.1.1


66
+1 en Ubuntu esto le da la versión 1.9.7en lugar de 1.4.0.
opiato

1
+1 por usar npmpero ver mi respuesta
Fery Wardiyanto

1
Si bitbucket.org está bloqueado por su proxynpm install phantomjs --phantomjs_cdnurl=http://cnpmjs.org/downloads
79E09796

1
En Ubuntu 14.04, esto ahora me da 2.1.1.
Joe Mornin el

En ubuntu 18.04 me sale un error, que debería ejecutarlo como root. Con sudoesto funciona:sudo npm install -g phantomjs-prebuilt
rubo77

58

descargue del sitio web de phantomjs el paquete preconstruido: http://phantomjs.org/download.html, luego abra un terminal y vaya a la carpeta Descargas

sudo mv phantomjs-1.8.1-linux-x86_64.tar.bz2 /usr/local/share/.
cd /usr/local/share/
sudo tar xjf phantomjs-1.8.1-linux-x86_64.tar.bz2
sudo ln -s /usr/local/share/phantomjs-1.8.1-linux-x86_64 /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs/bin/phantomjs /usr/local/bin/phantomjs

luego para verificar la instalación phantomjs -vdebe regresar1.8.1


¿Por qué creas un enlace en lugar de copiar y pegar directamente?
Heisenberg el

2
¿Por qué copiarías pegar directamente cuando puedes hacer un enlace simbólico? = /
Jared Markell

1
en un ubuntu nuevo también apt-get install libfontconfig
Ryan Detzel

Tenía phantomjs instalados en mi directorio de usuarios. Selenium no funcionó con eso. Luego moví phantomjs /usr/local/sharey creé estos enlaces simbólicos. Luego funcionó (a pesar de que los permisos de archivo eran los mismos). ¿Alguien puede explicar a este no experto en Linux por qué esto marcó la diferencia?
Peter

38

Instalar desde el administrador de paquetes:

sudo apt-get install phantomjs

2
Lamentablemente, esto ahora instala 1.4, que es tan antiguo que muchas cosas que usan phantom.js simplemente no funcionarán.
Julian Birch

@JulianBirch Sí, creo que si tienes en Ubuntu Saucy Salamander (13.10) puedes obtener la versión 1.9.0 de acuerdo con este [enlace] launchpad.net/ubuntu/+source/phantomjs , que acabo de instalar desde Raring Ringtail (13.04) y obtengo la versión 1.6.0, como también dice en el enlace

3
Instalado 1.9.0 en Ubuntu 14.04
Ionică Bizău

66
Pero recomiendo instalarlo a través de npm install -g phantomjs.
Ionică Bizău

1
Recién instalado Ahora es 1.9.0.
Strabek

14

Estos son los pasos de compilación que utilicé (tenga en cuenta que estas instrucciones son para la versión 1.3. Vea los comentarios a esta respuesta para ver las instrucciones de instalación del último PhantomJS):

sudo apt-get update
sudo apt-get install git-core
sudo apt-get install build-essential
sudo apt-get install libqt4-dev libqtwebkit-dev qt4-qmake
git clone git://github.com/ariya/phantomjs.git && cd phantomjs
git checkout 1.3
qmake-qt4 && make

Ahora instale Xvfb

sudo apt-get install xvfb xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic

Lanzamiento Xvfb:
Xvfb :23 -screen 0 1024x768x24 &

Ahora ejecuta fantasma:
DISPLAY=:23 ./phantomjs hello.js


16
Estas instrucciones ahora son obsoletas, en la versión actual (1.5) no hay necesidad de instalar qt o xfvb. Ver code.google.com/p/phantomjs/wiki/Installation
michelpm

2
Michel tiene razón, la última versión de phantom debería usarse porque no requiere una pantalla virtual (Xvfb)
Vijay Boyapati

La respuesta de Andre fue más rápida y fácil para mí.
fooMonster

12

Para la versión PhantomJS anterior a la 1.5, considere esto (copia literal de las instrucciones de compilación en el sitio web fantasma):

Para Ubuntu Linux (probado en una instalación básica de Ubuntu 10.04 Lucid Lynx y Ubuntu 11.04 Natty Narwhal):

sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.7
./build.sh

3
Creo que debe tenerse en cuenta (como está en el sitio web de PhantomJS) que construir desde la fuente puede llevar mucho tiempo (horas en una máquina pequeña).
Whymarrh

1
También debe tenerse en cuenta que esta respuesta resolvió el problema que tuve con phantomjs cuando fallaron los binarios precompilados. Tomó alrededor de 1 hora compilar en 2 gb ubuntu 10.04 dual core virtual.
Keith John Hutchison

7

Para Ubuntu, puede usar las versiones precompiladas descargables desde el sitio PhantomJS .

Si tienes un tiempo serio en tus manos, también puedes construirlo tú mismo . (Este es exactamente el procedimiento de la respuesta de Nikhil).

Los chicos de PhantomJS recomiendan usar los binarios para ahorrar tiempo:

Advertencia: Compilar PhantomJS desde la fuente lleva mucho tiempo, principalmente debido a miles de archivos en el módulo WebKit. Con 4 trabajos de compilación paralelos en una máquina moderna, todo el proceso dura aproximadamente 30 minutos. Se recomienda descargar e instalar el paquete binario listo para usar si está disponible.

Con una máquina moderna significan> 4 núcleos,> 8 gb de memoria, creo. Lo probé en una instancia de micro AWS y me di por vencido después de 2 horas.

En resumen: instale los paquetes precompilados del sitio PhantomJS según sus instrucciones.


4

Personalmente prefiero usar npm(ver respuesta de Arnel Bucio )

sudo npm install -g phantomjs

¡pero! Noté que algunos npmmódulos todavía no pueden verlo como ejecutable global.

ingrese la descripción de la imagen aquí

¡entonces!

  • Crear nuevo /usr/share/phantomjs/enlace de directorio

    cd /usr/share
    sudo ln -s ../lib/node_modules/phantomjs/lib/phantom phantomjs
    
  • Elimine el /usr/bin/phantomjsenlace ejecutable anterior y cree el nuevo.

    cd /usr/bin
    sudo mv phantomjs phantomjs.old
    sudo ln -s ../share/phantomjs .
    

1
Hacer los comandos después me lo rompió en Ubuntu 14.04. Funciona solo con la npminstalación y sudo apt-get install libfontconfigdespués.
Akshat

4

en mi vagabundo bootstrap:

apt-get install -y build-essential chrpath git-core libssl-dev libfontconfig1-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.9
echo y | ./build.sh
ln -s /home/vagrant/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
cd ..

@artjom b: esto sería mejor como comentario que como edición. "No tiene que olvidar colocar el ejecutable resultante de ./build.sh en un directorio que se encuentra en la variable de entorno PATH. Esto se puede hacer a través del enlace simbólico como en este ejemplo".
rev

No tiene que olvidar colocar el ejecutable resultante ./build.shen un directorio que se encuentra en la variable de entorno PATH. Esto se puede hacer a través del enlace simbólico como en este ejemplo.
Artjom B.

Eso es lo que todas las otras respuestas olvidan al usar build.sh. Solo quería mejorar tu respuesta haciendo que este hecho sea más visible. Si no lo quieres allí, bien.
Artjom B.

2

He terminado con esto.

sudo apt-get update
sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.9
./build.sh


1

Desde el sitio oficial: sitio phantomjs

sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 1.8
./build.sh

1

Para Ubuntu, descargue el archivo adecuado de http://phantomjs.org/download.html . CD a la carpeta descargada. Luego:

sudo tar xvf phantomjs-1.9.0-linux-x86_64.tar.bz2
sudo mv phantomjs-1.9.0-linux-x86_64 /usr/local/share/phantomjs
sudo ln -s /usr/local/share/phantomjs/bin/phantomjs /usr/bin/phantomjs

Asegúrese de reemplazar el nombre del archivo en estos comandos con el archivo que ha descargado.


1

Tenga en cuenta que esta es definitivamente una forma de hacerlo:

$ sudo apt-get install phantomjs
$ phantomjs -v
1.6.0

Lamentablemente, instala 1.6 y no la última, pero esto funciona para mis propósitos.


Esta versión de instalación 1.9.0-1ahora
Sean

1

Sé que esto es demasiado viejo, pero, en caso de que alguien llegue a esta pregunta de Google ahora, puede instalarlo escribiendo apt-get install phantomjs


Instala X11
eozzy

0

O la última versión de 32 bits de Linux

sudo wget http://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-i686.tar.bz2

sudo ln -s /usr/local/share/phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/local/share/phantomjs

sudo ln -s /usr/local/share/phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/local/bin/phantomjs

sudo ln -s /usr/local/share/phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/bin/phantomjs


0

A continuación el procedimiento de instalación de Julio Napurí https://gist.github.com/julionc

Versión: 1.9.8

Plataforma: x86_64

Primero, instale o actualice al último software del sistema.

sudo apt-get update
sudo apt-get install build-essential chrpath libssl-dev libxft-dev

Instale estos paquetes necesarios para que PhantomJS funcione correctamente.

sudo apt-get install libfreetype6 libfreetype6-dev
sudo apt-get install libfontconfig1 libfontconfig1-dev

Consíguelo en el sitio web PhantomJS.

cd ~
export PHANTOM_JS="phantomjs-1.9.8-linux-x86_64"
wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2
sudo tar xvjf $PHANTOM_JS.tar.bz2

Una vez descargado, mueva la carpeta Phantomjs a / usr / local / share / y cree un enlace simbólico:

sudo mv $PHANTOM_JS /usr/local/share
sudo ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin

Ahora, debería tener PhantomJS correctamente en su sistema.

phantomjs --version

0

He encontrado esta forma más simple: dependencias fantasma + Npm

sudo apt-get update
sudo apt-get install build-essential chrpath libssl-dev libxft-dev
sudo apt-get install libfreetype6 libfreetype6-dev
sudo apt-get install libfontconfig1 libfontconfig1-dev

y npm

[sudo] npm install -g phantomjs

Hecho.


0

En Linux para ejecutar hello.js, no olvide agregar la ruta de hello.js:

phantomjs YourPathToPhantomjsFolder / examples / hello.js


0

Si desea usar phantomjs fácilmente, puede usarlo en phantomjscloud.com Puede obtener el resultado simplemente por solicitud http.


2
Esto no fue lo que el OP pidió en absoluto.
Sujal Mandal

Gracias por tu comentario. Fue mi culpa
Shin Kim

0

En Ubuntu para Windows, no encontré apt-getni las npmversiones funcionaron para mí. Lo que funcionó fue el guión de este comentario .

Para facilitar su uso, pegué todo en un archivo de script llamado install_phantomjs.sh, lo hice ejecutable ( chmod u+x install_phantomjs.sh), y luego lo ejecuté ( ./install_phantomjs.sh)


0

Así es como coloco una versión específica de phantomjs en / usr / local / bin en mis contenedores acoplables.

curl -Ls https://github.com/Medium/phantomjs/releases/download/v1.9.19/phantomjs-1.9.8-linux-x86_64.tar.bz2 \
    | tar jxvf - --strip-components=2 -C /usr/local/bin/ ./phantomjs-1.9.8-linux-x86_64/bin/phantomjs

o sin ./depender del sistema operativo.

curl -Ls https://github.com/Medium/phantomjs/releases/download/v1.9.19/phantomjs-1.9.8-linux-x86_64.tar.bz2 \
    | tar jxvf - --strip-components=2 -C /usr/local/bin/ phantomjs-1.9.8-linux-x86_64/bin/phantomjs

0

Puede ponerse en marcha sin sudoo npm. Simplemente descargue , extraiga y agregue a la ruta .

Esto tiene la ventaja adicional de una copia de seguridad fácil si tiene la costumbre de hacer una copia de seguridad de toda su carpeta de inicio, lo que le recomiendo encarecidamente. Esto también funciona con cualquier versión de Linux.

➤  cd ~
➤  wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
➤  mkdir phantomjs
➤  tar xjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C phantomjs
➤  echo 'export PATH="$PATH:$HOME/phantomjs/bin"' >> .profile
➤  source .profile
➤  phantomjs -v
2.1.1

Las desventajas son:

  1. Deberá actualizar manualmente
  2. Otros usuarios no tendrán acceso a esto.

Puede usar un script de shell muy simple para instalar / actualizar

#!/bin/sh
# install_phantomjs.sh $VERSION

$VERSION = $1
printf "Downloading PhantomJS $VERSION...\n"
wget "https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$VERSION-linux-x86_64.tar.bz2"

printf "Extracting PhantomJS $VERSION to ~/phantomjs...\n"
mkdir ~/phantomjs
tar xjf phantomjs-$VERSION-linux-x86_64.tar.bz2 -C ~/phantomjs

printf "Done! Make sure $HOME/phantomjs/bin is in your path.\n"

O en un Dockerfile

# Download and setup PhantomJS
ENV PHANTOMJS_VERSION 2.1.1
RUN curl -fSL "https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2" -o /tmp/phantomjs.tar.bz2 && \
  mkdir ~/phantomjs && \
  tar xjf /tmp/phantomjs.tar.bz2 -C ~/phantomjs && \
  rm /tmp/phantomjs.tar.bz2
ENV PATH /home/$USERNAME/phantomjs/bin:$PATH

0

Esto es lo que hice en mi máquina ubuntu 16.04

sudo apt-get update
sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
sudo mv path/where/you/downloaded/phantomjs  /usr/bin

y finalmente cuando lo hago

phantomjs -v

Consigo 2.1.1

Después de pasar por cada respuesta de este hilo. Creo que esta es la mejor solución para instalar y ejecutar phantomjs en ubuntu.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.