web-dev-qa-db-fra.com

Comment démarrer chrome-browser en mode sans tête? extension "RANDR" manquante à l'écran ": 99"

Ubuntu

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:    14.04
Codename:   trusty

Chrome

chromium-browser --version
Chromium 48.0.2564.116 Ubuntu 14.04

Je sers une application Web Flask sur localhost et je souhaite y accéder en mode sans tête.

Après ceci lead on stackoverflow

Prérequis

$ apt-get install xvfb imagemagick

X tampon d'image virtuelle xvfb-run

Lancer Chromium avec les options suivantes

--allow-running-insecure-content    // trying to get passed
--ignore-certificate-errors         // the self-signed certs
--ignore-urlfetcher-cert-requests   //
--disable-gpu                       
--no-sandbox                        

la commande

 xvfb-run --server-args='-screen 0, 1024x768x24' chromium-browser --allow-running-insecure-content --ignore-certificate-errors --ignore-urlfetcher-cert-requests  --disable-gpu --no-sandbox https://admin:password@localhost

Xlib: extension "RANDR" manquante à l'écran ": 99".

[2596:2596:0407/170544:ERROR:browser_main_loop.cc(206)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
Xlib:  extension "RANDR" missing on display ":99".
Xlib:  extension "RANDR" missing on display ":99".
[2596:2596:0407/170544:ERROR:desktop_window_tree_Host_x11.cc(892)] Not implemented reached in virtual void views::DesktopWindowTreeHostX11::InitModalType(ui::ModalType)
[2596:2596:0407/170545:ERROR:logging.h(808)] Failed to call method: org.freedesktop.DBus.ObjectManager.GetManagedObjects: object_path= /: org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedObjects" with signature "" on interface "org.freedesktop.DBus.ObjectManager" doesn't exist
[2596:2596:0407/170545:ERROR:logging.h(808)] Failed to call method: org.freedesktop.DBus.ObjectManager.GetManagedObjects: object_path= /: org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedObjects" with signature "" on interface "org.freedesktop.DBus.ObjectManager" doesn't exist
[2596:2596:0407/170629:ERROR:chrome_browser_main_extra_parts_x11.cc(62)] X IO error received (X server probably went away)

Sans --disable-gpu et --no-sandbox

[3122:3122:0407/172728:ERROR:sandbox_linux.cc(338)] InitializeSandbox() called with multiple threads in process gpu-process
[3062:3099:0407/172728:ERROR:browser_gpu_channel_Host_factory.cc(144)] Failed to create channel.

MISE À JOUR 20160407

$ Sudo Xvfb :1 -screen 0 1024x768x24 -ac +extension GLX +extension RANDR +render -noreset &
$ export DISPLAY=":1"
$ chromium-browser --allow-running-insecure-content --ignore-certificate-errors --ignore-urlfetcher-cert-requests  --disable-gpu --no-sandbox https://admin:password@localhost

obtenir

[3413:3413:0407/174058:ERROR:browser_main_loop.cc(206)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[3413:3413:0407/174058:ERROR:browser_main_loop.cc(256)] Gtk: cannot open display: :1
[3422:3422:0100/000000:ERROR:zygote_linux.cc(674)] write: Broken pipe

Également essayé avec google-chrome

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | Sudo apt-key add - 
Sudo sh -c 'echo "deb [Arch=AMD64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
Sudo apt-get update 
Sudo apt-get install google-chrome-stable

Version

google-chrome --version
Google Chrome 49.0.2623.110 

et j'obtiens les mêmes erreurs, y compris extension "RANDR" missing on display ":99".

Articles Similaires

peu importe le moyen de démarrer, google-chrome-in-headless-mode

comment-ajouter-le-manquant-randr-extension

incapable de lancer chrome-ubunt

7
zabumba

J'ai fait quelque chose de similaire sur une distribution Linux non-Ubuntu. À des fins de test, j'utiliserai mon HTPC sous Ubuntu (14.04) pour m'assurer qu'il fonctionne également avec des modifications minimes.

Informations sur la distribution

htpc@HTPC:[~]:$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:        14.04
Codename:       trusty

S'assurer que l'écran que nous voulons utiliser n'est pas encore présent

htpc@HTPC:[~]:$ DISPLAY=:1 xset q
xset:  unable to open display ":1"

Démarrer Xvfb

Sudo n'est pas nécessaire. Je l'exécute en tant que même utilisateur qui lance également le navigateur.

Xvfb :1 -screen 0 '1280x1024x16' -ac &> /dev/null &

Assurez-vous que l'écran est présent et que vous en êtes le propriétaire

htpc@HTPC:[~]:$ ls -l /tmp/.X11-unix/X1
srwxrwxrwx 1 htpc htpc 0 Apr 15 11:37 /tmp/.X11-unix/X1

Exporter l’affichage actuel vers le : 1 que nous venons de créer.

Nous pouvons également ajouter DISPLAY =: 1 avant chaque commande que nous souhaitons exécuter à l'écran. Cependant, l'exportation garantit que celui-ci sera enregistré pour la session en cours afin que vous n'ayez pas à le fournir pour chaque commande.

export DISPLAY=:1

Une autre vérification pour s’assurer que l’écran est présent et fonctionne (et que le bit d’exportation fonctionne également)

htpc@HTPC:[~]:$ xset q
Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000000
  XKB indicators:
    00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off
    03: Compose:     off    04: Kana:        off    05: Sleep:       off
    06: Suspend:     off    07: Mute:        off    08: Misc:        off
    09: Mail:        off    10: Charging:    off    11: Shift Lock:  off
    12: Group 2:     off    13: Mouse Keys:  off
  auto repeat delay:  660    repeat rate:  25
  auto repeating keys:  00ffffffdffffbbf
                        fadfffefffedffff
                        9fffffffffffffff
                        fff7ffffffffffff
  bell percent:  50    bell pitch:  400    bell duration:  100
Pointer Control:
  acceleration:  2/1    threshold:  4
Screen Saver:
  prefer blanking:  yes    allow exposures:  yes
  timeout:  600    cycle:  600
Colors:
  default colormap:  0x20    BlackPixel:  0x0    WhitePixel:  0xffff
Font Path:
  /usr/share/fonts/X11/misc,/usr/share/fonts/X11/Type1,built-ins
DPMS (Energy Star):
  Display is not capable of DPMS

Étape de débogage supplémentaire

Je vais courir nc ce qui imprimera verbalement si Chrome essaie de le contacter. Nous saurons donc si cette configuration fonctionne. Une autre méthode consiste à exécuter un serveur VNC sur le même écran et à vous y connecter afin que vous puissiez voir ce que fait le navigateur et savoir si Chrome démarre correctement. Ce que je recommanderais! Chrome peut générer différentes erreurs dans l'interface utilisateur qui ne sont pas visibles dans la console dans votre cas.

htpc@HTPC:[~]:$ echo Testing... | nc -l 9999 -v &
[2] 8416
htpc@HTPC:[~]:$ Listening on [0.0.0.0] (family 0, port 9999)

Il est temps de commencer Chrome !

htpc@HTPC:[~]:$ google-chrome --disable-gpu 'http://localhost:9999' &
[3] 8512
htpc@HTPC:[~]:$ [8512:8512:0415/115726:ERROR:browser_main_loop.cc(271)] Gtk: Locale not supported by C library.
    Using the fallback 'C' locale.
Xlib:  extension "RANDR" missing on display ":1".
Xlib:  extension "RANDR" missing on display ":1".
Connection from [127.0.0.1] port 9999 [tcp/*] accepted (family 2, sport 40050)
GET / HTTP/1.1
Host: localhost:9999
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

Comme vous pouvez le voir ci-dessus, l'erreur RANDR est toujours présente, ignorez-la simplement. Ci-dessous, vous voyez la requête HTTP effectuée par Chrome (voir bit Utilisateur-Agent) sur le nc processus que nous avons commencé. Semble Chrome démarre comme prévu et visite l'URL fournie.

Essayer la même chose avec le chrome

htpc@HTPC:[~]:$ chromium-browser --disable-gpu 'http://localhost:9999' &
[3] 13108
htpc@HTPC:[~]:$ Xlib:  extension "RANDR" missing on display ":1".
Xlib:  extension "RANDR" missing on display ":1".
[13108:13108:0415/145854:ERROR:logging.h(813)] Failed to call method: org.freedesktop.DBus.ObjectManager.GetManagedObjects: object_path= /: org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedObjects" with signature "" on interface "org.freedesktop.DBus.ObjectManager" doesn't exist

Connection from [127.0.0.1] port 9999 [tcp/*] accepted (family 2, sport 40542)
[13108:13108:0415/145854:ERROR:logging.h(813)] Failed to call method: org.freedesktop.DBus.ObjectManager.GetManagedObjects: object_path= /: org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedObjects" with signature "" on interface "org.freedesktop.DBus.ObjectManager" doesn't exist

GET / HTTP/1.1
Host: localhost:9999
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

Faire la même chose a à peu près le même effet, avec quelques autres avertissements supplémentaires. L'utilisateur est en chrome comme prévu.

Supplémentaire

Si vous voulez que tout continue à fonctionner, n'oubliez pas de lancer la commande disown par processus et de les laisser fonctionner en arrière-plan pour vous assurer qu'ils ne le sont pas. tué quand vous vous déconnectez. Voir http://www.cyberciti.biz/faq/unix-linux-disown-command-examples-usage-syntax/ pour plus d'informations sur disown .

10
Serrie