ヘッドレス サーバーに xvfb サーバーをセットアップしましたが、DISPLAY=:99 Firefox を実行しているときに、RANDR 拡張機能が見つからないという例外が発生します。
彼らの多くは、xorg.conf ファイルからいくつかの xinerna を無効にするように言っていますが、私の場合、このファイルは作成されません。
そこで、不足している RANDR 拡張機能を追加する方法を探しています。
xvfb を使用してセレン経由で Firefox ヘッドレスを実行すると、このエラー メッセージが表示されます。そのメッセージは私にとって厄介なものだったことが判明しました。このメッセージは単なる警告であり、エラーではありません。Firefox が正しく起動しなかったのはそのためではありません。
Firefox が起動しない理由は、使用していた Selenium ドライバーとの互換性がなくなったバージョンに更新されたためです。Selenium ドライバーを最新のものにアップグレードすると、Firefox は再び正常に起動します (RANDR に関するこの警告メッセージが表示されても)。
多くの場合、Firefox の新しいリリースは、1 つまたは 2 つのバージョンの Selenium としか互換性がありません。ときどき、互換性のないバージョンの Seleniumを含む Firefox がリリースされます。その場合、Selenium の新しいバージョンがリリースされるまでに 1 ~ 2 週間かかる場合があります。このため、インストールした Selenium のバージョンで動作することがわかっている Firefox のバージョンを保持しています。パッケージ マネージャーによって最新の状態に保たれている Firefox のバージョンに加えて、/opt/
(たとえば/opt/firefox31/
) にバージョンがインストールされています。Selenium Java API は、使用する Firefox バイナリの場所の引数を取ります。欠点は、古いバージョンの Firefox には既知のセキュリティ上の脆弱性があり、信頼できないコンテンツで使用すべきではないことです。
まず、Xvfb は xorg.conf から構成を読み取りません。Xvfb は KDrive X サーバーの変種であり、そのファミリーのすべてのメンバーと同様に、コマンド ラインから構成を取得します。
確かに XRandR と Xinerama は相互に排他的ですが、Xvfb の場合、そもそも Xinerama はありません。少なくとも次のコマンド ライン オプションを使用して Xvfb を開始することにより、XRandR 拡張機能を有効にできます。
Xvfb +extension RANDR [further options]
Firefox 30 + Selenium 2.49 + Ubuntu 15.04でも同じ問題がありました。
Ubuntu 14では問題なく動作しましたが、 15.04にアップグレードした後、Xfvbを使用して Firefox を起動すると、同じRANDR
警告と問題が発生しました。
追加+extension RANDR
した後、再び機能しました。
$ vim /etc/init/xvfb.conf
#!upstart
description "Xvfb Server as a daemon"
start on filesystem and started networking
stop on shutdown
respawn
env XVFB=/usr/bin/Xvfb
env XVFBARGS=":10 -screen 1 1024x768x24 -ac +extension GLX +extension RANDR +render -noreset"
env PIDFILE=/var/run/xvfb.pid
exec start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $XVFB -- $XVFBARGS >> /var/log/xvfb.log 2>&1