¿Cómo puedo ejecutar Firefox en Linux sin cabeza (es decir, sin requerir libgtk-x11-2.0.so.0)?

17

Tengo el alojamiento compartido Dreamhost, y estoy tratando de ejecutar Firefox 3.0 sin cabeza para usar con Selenium.

Cuando intento ejecutarlo ( ~/local/bin/firefox/firefox), aparece el siguiente mensaje de error:

error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory

¿Cómo puedo ejecutar Firefox en Linux sin requerir este archivo de objeto compartido?

Paul D. Waite
fuente

Respuestas:

8

Sé que esta es una pregunta bastante antigua, pero quería agregar una respuesta más reciente, ya que Google me dirigió aquí y tuve que buscar un tiempo para encontrar la respuesta.

A partir de Firefox 57, puede ejecutar en modo sin cabeza simplemente instalando Firefox y ejecutando:

firefox -headless http://test.com/

Vea los documentos de desarrollo de Firefox aquí.

AlaskaJoslin
fuente
Excelente: gracias por agregar una respuesta actualizada y de alta calidad; para eso está diseñado Stack Exchange.
Paul D. Waite
14

No puede ejecutar Firefox sin todas las bibliotecas Gtk que requiere, pero eso se resuelve fácilmente instalando las bibliotecas. Normalmente, instalarías Firefox a través de un sistema de administración de paquetes y esto atraería todas las bibliotecas necesarias.

Para ejecutar Firefox normalmente, necesita un servidor X (esa es la parte que muestra las ventanas y sus contenidos, a diferencia de cosas como Gtk, que son bibliotecas que la aplicación usa para construir el contenido). Eso es algo que normalmente no ejecutarías en un servidor. Hay muy pocas cosas que puedes hacer en Firefox sin un servidor X, no sé si Selenium es una de ellas.

Para ejecutar Firefox en su servidor, ejecute un servidor X "virtual". Un sencillo es Xvfb ( v irtual f rame b Uffer X servidor). Está en la distribución del servidor X.org . Uso de la muestra:

Xvfb :19 -screen 0 1024x768x16 &
export DISPLAY=:19
firefox &
Gilles 'SO- deja de ser malvado'
fuente
1
Excelente, salud Gilles, ya está. También encontré estos artículos útiles para que Xvfb se ejecute: alittlemadness.com/2008/03/05/running-selenium-headless y blog.kabisa.nl/2010/05/24/…
Paul D. Waite
7

No puedes; está vinculado con las bibliotecas de cliente X y Gtk +, y no creo que sea posible construirlo sin ellas.

Incluso en la versión sin cabeza de Firefox, todavía se necesita GTK + .

geekosaur
fuente
2

Como Selenium es una herramienta de prueba de GUI, me resultaría difícil creer que pueda funcionar sin X.

Entonces, mi mejor suposición es que su servidor sin cabeza requiere una instalación X como la sugerida por Gilles. Hay varias alternativas similares.

asoundmove
fuente
2

Usted puede

  • usa un Firefox en un framebuffer virtual: xvfb-run -a firefox
  • use SlimerJS (un motor Gecko / rendering integrado de Firefox) con xcfb,
  • use PhantomJS como WebKit incorporado sin la necesidad de una pantalla y soporte de selenio a través de GhostDriver , si WebKit está bien para usted.
flob
fuente
Creo que te refieres a 'xvfb-run -a ...' y no a xvfb, ¿verdad?
Kutzi
Gracias :-) ¿Tal vez cambió mientras tanto?
flob