web-dev-qa-db-ja.com

FirefoxでXvfbを実行する

このコマンドSudo xvfb-run -a firefox http://google.comを使用してheadlesless firefoxを実行しようとしているので、このエラーが発生します

(process:9000): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Xlib:  extension "RANDR" missing on display ":113".

私はこのリンクを参照してこの問題を解決するために検索しました https://stackoverflow.com/questions/17944234/xlib-extension-randr-missing-on-display-21-trying-to-run-headless-googl

Xvfb :113 -screen 0 1024x768x24 -extension RANDR &

同じコマンドを再実行すると、Xlib: extension "RANDR" missing on display ":114".などが得られます

どうすればこの問題を解決できますか?どんなソリューションでも感謝します

5
Bessa

Xvfb-runを次のように実行します。

xvfb-run -a -s "-screen 0 1024x768x24" firefox http://google.com

Xvfbを実行してからxvfb-runを実行しても、前者のXvfbのディスプレイで後者のインカネーションが実行されることはありません。 Xvfbを手動で実行する場合は、他のディスプレイで実行するアプリのDISPLAY変数を設定する必要があります。

とにかくFirefoxのRANDR拡張機能は必要ありません。実行中にディスプレイのサイズを変更する必要はありません。

2
dobey

ディスプレイ番号を明示的に設定する場合は、次のようなものを使用します。

xvfb-run -n 113 --server-args='-screen 0, 1024x768x24' firefox http://google.com > /dev/null &

このようにして、x11grab itや別のプログラムをそのディスプレイに追加するなど、既知の数値に基づいて後で実行できます。

最新のパッケージを使用している場合、RANDRエクステンションはデフォルトでインストールされます。つまり、Ubuntu Server 16.04の場合:

$Sudo apt-get install xvfb
$Xvfb :99 -screen 0 1024x768x24 > /dev/null &

$ xdpyinfo -display :99 | grep "number of extensions"  -A 25
number of extensions:    25
    BIG-REQUESTS
    Composite
    DAMAGE
    DOUBLE-BUFFER
    DPMS
    GLX
    Generic Event Extension
    MIT-SCREEN-SAVER
    MIT-SHM
    Present
    **** RANDR ****
    RECORD
    RENDER
    SECURITY
    SGI-GLX
    SHAPE
    SYNC
    X-Resource
    XC-MISC
    XFIXES
    XINERAMA
    XInputExtension
    XKEYBOARD
    XTEST
    XVideo
0
TomSchober