アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » LIFESTYLE STAGE » 連載 » 玩式草子─ソフトウェアとたわむれる日々 » 第7回 ビルド,ビルド,ビルド! ─あるいは賽の河原の小石積み[その2]

玩式草子─ソフトウェアとたわむれる日々

第7回 ビルド,ビルド,ビルド! ─あるいは賽の河原の小石積み[その2]

前回までにX11R7.5のproto/, lib/, app/の各部分をビルド,インストールしてきました。このあたりまでビルドできれば,X Window Systemの中心となるソフトウェアであるXサーバ(xorg-server)もビルドできます。

Xサーバについて

Xサーバはディスプレイ画面を描画すると共に,キーボードやマウスからの入力を受けとって適切なクライエントソフトウェアに送信する,という重要な処理を担っています。

「Xサーバ」という名称が示すように,X Window Systemはサーバ/クライアントモデルを採用しています。通常のサーバ/クライアントモデルの場合,手元ではクライアント側のソフトウェアを動かして,サーバはネットワーク上のどこかで黙々とクライアントからのリクエストを処理するような構成を取りますが,Xの場合は逆で,「Xサーバ」は常に手元のマシン上で動いてディスプレイに描画したりキーボードやマウスからの入力を受けつけており,画面を操作したいクライアントソフトウェアはXプロトコルを用いてサーバに話しかけて,必要な処理をしてもらうことになります。

画面描画などウィンドウ操作に必要な処理はハードウェアを直接操作する必要があるため,GUIを前提に設計されたMacOSやMS Windowsではカーネルレベルに必要な機能を組み込んでいます。一方,X Window Systemでは,UNIXの簡潔な設計を守るため,Xサーバは独立した1つのプロセスとして動作する設計になっており,その結果,Xサーバはずいぶん複雑で大規模なソフトウェアになっています。

加えて,PC UNIX環境では画面描画用のビデオカードにもさまざまなメーカが存在するので,Xサーバもハードウェア的に異なる多数の種類のビデオカードに対応する必要があります。

伝統的な一枚岩的設計のサーバでは,周辺機器用のすべてのドライバもXサーバと共に開発されていましたが,最近のモジュール的設計に変更されたXサーバ(xorg-server)では,各種ドライバはXサーバ本体とは分離され,独立したソフトウェアとして開発,配布されています。

今回ダウンロードしたファイルのうちdriverディレクトリに収められているのが,それらドライバ類のソースコードです。xorg-serverでは,linuxカーネルと同じように,これら周辺機器用のドライバはモジュールとして用意され,検出したハードウェアに応じたドライバを動的に組み込むようになっています。そのためxorg-serverを更新する際は,Xサーバ本体だけではなく,そのサーバに対応したドライバ類も忘れずにインストールしてやる必要があります。

ビルド,ビルド,ビルド!(その2)

それではxorg-serverをビルドしてみましょう。xserverディレクトリに移動し,ビルドスクリプトを起動します。

% ./PlamoBuild.xorg-server-1.7.1 
autoreconf: Entering directory `.'
...
checking for SHA1Init in -lmd... no
checking for XSERVERCFLAGS... configure: error: Package requirements (randrproto >= 1.2.99.3 renderproto >= 0.11 
  fixesproto >= 4.1 damageproto >= 1.1 xcmiscproto >= 1.2.0 xextproto >= 7.0.99.3 xproto >= 7.0.13 xtrans >= 1.2.2 
  bigreqsproto >= 1.1.0 fontsproto inputproto >= 1.9.99.902 kbproto >= 1.0.3 videoproto compositeproto >= 0.4 
 scrnsaverproto >= 1.1 resourceproto xineramaproto xkbfile xfont xau pixman-1 >= 0.15.20 hal dbus-1 xdmcp openssl) were not met:

Requested 'pixman-1 >= 0.15.20' but version of Pixman is 0.15.12

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

おっと,configureの段階でエラーになってしまいました。

configureスクリプトはxorg-serverをビルドするのに必要なソフトウェアの有無やバージョンをチェックしますが,その際にpixmanと呼ばれるピクセル操作用ライブラリのバージョンが,求められている0.15.20よりも低い0.15.12だったことが見つかってしまいました。

configureスクリプトはpkgconfigコマンドを用いてそれぞれのソフトウェアの有無やバージョンをチェックします。pkgconfigコマンドが利用する各種pcファイル(前回紹介したxpm.pc等)は,通常/usr/lib/pkgconfig ディレクトリに 収められますが,ビルド時の設定によってインストール先は変わります。/usr/lib/pkgconfig/以外にインストールされたpcファイルを探すには,PKG_CONFIG_PATHという環境変数にpcファイルを収めたディレクトリのリストを設定します。

pixmanのビルドスクリプトを調べてソースコードの配布元へ行ってみると0.17.2というバージョンが公開されていたので,まずそれをビルド,インストールして再度ビルドスクリプトを流すと,無事configureの処理は通過しました。

libuuidの祟り

続いてビルド作業に移ると,コンパイルは問題なく進んでいくものの,リンクの時点でlibuuid.la が無い,というエラーが再発しました。

...
 /usr/bin/install -c -m 644 xorg.conf.5 '/home/kojima/X11R75/xserver/work/usr/X11R7/share/man/man5'
  LINK  libxorg.la
copying selected object files to avoid basename conflicts...
  LINK  Xorg
libtool: link: cannot find the library `/usr/lib/libuuid.la' or unhandled argument `/usr/lib/libuuid.la'
make[4]: *** [Xorg] エラー 1
make[3]: *** [install-recursive] エラー 1
...

前回紹介したように,このエラーはXorgがリンクしようとしているライブラリのいずれかにlibuuid.laを必要とするものがあることを示します。/usr/X11/lib/以下のライブラリはlibuuid.laを削除後にビルドしているので,libuuid.laを必要とするライブラリは/usr/lib/以下にあるのでしょう。

grepコマンドで調べてみると,確かにいくつかのライブラリがヒットしています。

% grep libuuid.la /usr/lib/*.la | cut -f1 -d':'
/usr/lib/libMagick++.la
/usr/lib/libMagickCore.la
/usr/lib/libMagickWand.la
/usr/lib/libggadget-gtk-1.0.la
/usr/lib/libggadget-npapi-1.0.la
/usr/lib/libgnomeuimm-2.6.la
/usr/lib/libgstgl-0.10.la
/usr/lib/libhal-storage.la
/usr/lib/libhal.la
/usr/lib/libparted.la
/usr/lib/libvlc.la
/usr/lib/libvlccore.la
/usr/lib/libxfce4kbd-private.la
/usr/lib/libxfcegui4.la
/usr/lib/libxfprint.la
/usr/lib/libxfsm-4.6.la

/usr/lib/以下では,これら16個のライブラリがlibuuid.laをリンクしているようです。前回紹介したようにlibuuid.laの無い,e2fsprogs版のlibuuid.so.1に移行するには,これらのライブラリは再ビルドする必要がありそうです。

だんだんと影響範囲が広がっているlibuuid問題に恐れながら,該当のライブラリをざっと見ると,これらはxorg-serverの動くレベルよりも上位層のライブラリが多そうです。たとえばlibMagick系のライブラリはImageMagickという画像処理ソフト用のライブラリだし,libvlc系のライブラリはVLCメディアプレイヤのライブラリ,libxf系のライブラリはXfceデスクチップ環境のライブラリなので,xorg-serverがそれらX用のアプリのライブラリを参照することはないはずです。

そう考えてライブラリのリストを改めて眺めると,これらの中でもxorg-serverが依存しそうなのはlibhal.laくらいのようです。

HAL(Hardware Abstraction Layer)とは,DBus等と共に提唱されたデスクトップ環境用の機能で,各種周辺機器の情報を仮想化してデスクトップ用アプリケーションに提供します。xorg-serverでは,キーボードやマウスといった入力機器に関する情報をHAL経由で入手していますが,Plamoの場合,xorg.confでInputDevice節の指定をしているのでHALを使って自動検出させる必要は無さそうですし,xorg-server付属のconfigureスクリプトのヘルプ情報を調べると--disable-halというHAL機能を使わないオプションが用意されていました。

そこで,このオプションをビルドスクリプトに追加すると,無事xorg-serverのビルドが完了しました。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたのが,いつの間にかミイラ取りがミイラになってOSSを仕事にするようになってしまいました。最近はスペシャリスト養成を目的とした専門職大学院で教壇に立ったりもしています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス