2013-03-03

邪悪なSteamのGNU/Linux対応方法

GNU/Linuxにデジタル制限管理付きの邪悪な不自由ソフトウェアを感染させるソフトウェア流通プラットフォームであるSteamが、正式にGNU/Linuxに対応してからしばらくたつ。一体邪悪なValve社がどのようにGNU/Linuxにプロプラエタリなソフトウェアを蔓延させるのかという技術的な興味はあったものの、私はSteamのようなDRM付き流通プラットフォームの利用が必須になって移行のゲームはやりたくないし、ましてや必要でもないのに不自由ソフトウェアでシステムを汚染したくない。nVidiaの忌々しいバイナリブロブだけでも相当頭が痛いというのに(Nouveauが動かないので仕方なく使っている)、これ以上頭痛の種を増やしたくはないものだ。

さて、GNU/Linuxのユーザーランドで動くバイナリブロブを配布するというのは難しい。一番の理由は動的リンクされるライブラリだ。

環境ごとにライブラリが異なる。多くのディストロでは、独自の改変を施している。これはライブラリが自由ソフトウェアであり、中央管理する権威が存在しないためである。もちろんすばらしいことであるが、バイナリブロブの配布には向かない。

もちろん、自由なソフトウェアの世界では、これは問題にならない。単にソースコードを自前の環境向けにコンパイルすればいいからだ。もちろん、末端ユーザーへの負担はない。ビルドは自動化できるし、ディストロ公式のソフトウェア流通プラットフォームにおいて、そのディストロの環境向けにビルドしたバイナリを配布することで、ユーザー環境で個別にビルドする必要もない。

その理想的な世界に、劣ったバイナリブロブ流通を持ち込もうというのだから、まあ好んで苦労するというべきか。

簡易なゲームであれば、PythonとかHTML/CSS/JavaScriptのような、十分に有名でほとんどの環境に実行環境が存在するような言語を使えばよい。しかし、パフォーマンスが重要なゲームは、そういうわけにもいかない。バイナリブロブを配布する方法としては、ライブラリはすべて静的リンクするか、コンパイル時に想定しているバージョンの必要なライブラリをすべて同梱するかということだ。Steamは後者を選んだようだ。

汚らわしいSteamクライアントを私のnVidiaのバイナリブロブ以外は自由なシステムにいれたくはないので、都合よくこの数日で書かれた他人の記事から邪悪なValveのSteam対応方法を調べることにする。

Ubuntu – Steam Client Installation and Review | Pinehead.TV
Investigating Steam for Linux | Breaking Eggs And Making Omelettes

まず、不自由ソフトウェアの信奉者であるValveは、汚らわしいSteamクライアントの対応環境を、単にUbuntuに固定したようだ。Ubuntuは数あるGNU/Linuxベースのディストロの中でも、かなりのシェアを確保している。Canonicalは最近、ユーザーのプライバシーをリークすることにも熱心であるし、まあ、バイナリブロブ配布先としては妥当な選択だろう。

小汚いSteamクライアントは、Ubuntuの標準パッケージフォーマットであるdebファイルで提供される。このファイルは、なんと2MBにも満たないサイズである。

もちろん、カラクリはある。最初のdebパッケージでインストールされるのは、Steamクライアントのダウンローダーだ。このダウンローダーが、Steamクライアントをダウンロードしてインストールする。Steamクライアント自身のUIは、Webkit上で実装されている。そのため、GNU/Linux上のSteamクライアントは、Windows版とほぼ変わらないUIを提供している。

さて、どうせ環境をUbuntuに固定して、しかも5ヶ月もベータをやっていたのであれば、もう少し頑張って欲しいところがある。というのも、x86-64版のUbuntuでは、デフォルトではx86ライブラリがインストールされない。これはもちろん、普通はx86用のライブラリなんて必要がないからだ。ソースコードが提供されていて、x86-64向けにコンパイルできる環境で、x86向けのライブラリは必要ない。

もちろん、邪悪なSteamには通用しない話だ。steamの最初のdebパッケージは、x86-64環境におけるx86ライブラリパッケージであるia32-libsをインストールしない。そのため、x86-64のUbuntuでは、Steamのdebパッケージをインストールしただけでは動作しない。もし、Valveが本気でゲーマーを取り込みたければ、この手の詳細にユーザーの手を煩わせないようにするべきである。いや、そもそもデジタル制限管理付きのバイナリブロブで配布するのが設計上の欠陥なのだが。

他のディストロでは、有志がSteamクライアントをリパッケージしているものもあるようだ。当初、これはライセンス的に怪しかったが、最近、Valveはこのリパッケージを許諾するよう、ライセンス文を書き換えたらしい。なんだかんだいっても、Linuxカーネルはユーザーランドのバイナリ互換を壊さないよう努力しているし、Steamクライアントは前述の通り、ライブラリをすべて自前で用意しているし、ディレクトリ構造は最近だいぶ統一されてきたしで、まあ動かすことはできるだろう。極めて邪悪だが。

やれやれ、ゲームがSteamのようなデジタル制限管理を要求するようになってからというもの、ゲームといえばレビューやプレイ動画をみるだけで済ますようになってしまった。

1 comment:

  1. なにが言いたいのかよくわからない。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.