web-dev-qa-db-ja.com

X11とMountainLion:MacPorts xorg-serverの使い方は?

OK、X11はMountainLionに含まれなくなりました。大丈夫です、大したことはありません。どこにでもいる誰もがX11用のXQuartzパッケージを入手するように言っています。

私は開発者ですが、MacPortsを介して大量のソフトウェアを管理しています。 XQuartzパッケージではなくxorg-serverパッケージをインストールして、すべてのパッケージ管理の利点(更新、構成管理、追加のソフトウェアがインストールされた1つの場所など)を取得したいと思います。

問題は、OS X 10.7以下では、起動されたエージェントがX11ディスプレイの要求をインターセプトし、OS XでX11を起動することでした。自動起動されたX11を置き換えるには、Apple X11plistとMacPortsX11 plistをロードします。これにより、$ DISPLAY変数を設定するユーザーと、起動されるX11デーモンが変更されます。

これは、X11がxorg-serverパッケージから起動される方法の場合のようです。理論的には、X11またはdbusに接続しようとすると、launchctlがMacPortsX11デーモンを起動します。

この部分は問題ありません。以下を参照してください。

echo $DISPLAY
/tmp/launch-K8CDIi/org.macports:0

ただし、X11を起動するAppleからの古い起動エージェントplistはもう存在しないようです。XQuartzをインストールするためのダイアログがポップアップし、そのダイアログがX11の起動をインターセプトしています。アプリ。起動デーモンによって制御されていないように見えるため、「XQuartzをインストールしますか」というおかしなメッセージを置き換える方法がわかりません。X11の正常なインストールが使用されるのを待っていますが、 Launchedでは発生しないDISPLAYのリクエストの傍受がありますが、Mountain Lionにそれが悪い子猫であり、すでにインストールしたものをインストールするように求めないようにするには、どうすればよいでしょうか。

3
Matt

私はあきらめて、パッケージのインストール後にXQuartzをインストールするという簡単な方法を取りました。ログアウトして再度ログインするだけで、MacPortsからインストールしたGimp2.8を起動できました。

私も開発者ですが、Gimpを実行するためにX11を使用しているだけなので、他のオプションをさらに調査する必要はありません。したがって、それを受け入れて、それ以上のクロックサイクルを無駄にしないことをお勧めします;-)

3
Thomas Bindzus

これはそれを修正する方法です:

Sudo mv /usr/X11 /usr/X11.xstub
Sudo ln -s /opt/X11 /usr/X11 

(これは、デフォルトのmacportsの場所にxorg-serverがインストールされていることを前提としています)

それが起こる理由については、在庫のOSXインストールのすべてがxstubまたはlibxstubを指しているため、ダイアログボックスがポップアップします。

アプリケーションは/ usr/X11/lib内のライブラリに直接リンクする傾向があるため、次のようにポップアップがトリガーされます。

ldd /Applications/Games/Hotline\ Miami.app/Contents/MacOS/HotlineMiami.app/Contents/MacOS/HotlineMiami 
    ...
    /usr/X11/lib/libGL.1.dylib (compatibility version 1.2.0, current version 1.2.0)
    ...       

Libxstubにリンクするもの:

ldd /usr/X11/lib/libGL.1.dylib
    ...
    /usr/X11/lib/libxstub.dylib (compatibility version 1.0.0, current version 1.0.0)
    ...
1
ged