top page > X Window System > here

FreeBSD における X Window System (導入)


概要

対象は次のようなものです.

  1. PC-98 (とはいえ AT 互換機と共通の情報も多いです.)
  2. XFree86 の 4 系,X.Org の 6 系,7 系
  3. FreeBSD は 4 系までは FreeBSD(98),5 系以降は FreeBSD/pc98

目的は次のようなものです.

  1. X Window System の導入法を提示する.
  2. FreeBSD に標準採用されていない X の利用に関する資料を提示する.

目次

1. はじめに
2. FreeBSD の標準の X Window System の導入
3. FreeBSD の標準でない X Window System の導入
4. FreeBSD が採用していない X Window System の導入

1. はじめに

導入に先立って行なうべきことは,どの X Window System を使うかの選択です. 判断基準として,以下のものが考えられます.

  1. X を使う目的に即した機能が備わっているか否か. (TrueType font の表示を行なえるか等々.)
  2. そのハードウェアに適応しているか. (手持ちのグラフィックボードにて動作するか等々.)
  3. FreeBSD がその X を採用しているか否か.すなわち ports/packages にあるか否か.
    (以下では packages は略して「ports にある,ない」という言い方をします.)

FreeBSD が採用している場合であっても,さらに次のような区別があります.

  1. 標準のもの (必ず 1 種類.)
  2. 標準ではないもの (たいていは 1 種類だが,無い場合もある.)

一方,FreeBSD が採用していない場合にも,次のような差異を把握しておく必要があります.

  1. packages と同じ形式の binary が用意されているか否か.
    (binary は導入が楽ですが,ソースを見たり修正したりできないことが難点です.)
  2. ports に依らずに自力で導入できるか否か.
    (原理的には可能ですが手間が掛かります. X.Org 7 系はこの方法で導入を試みない方が良いでしょう.)

選択可能な X は FreeBSD の version により異なります. いくつか例を挙げれば,次表のような状況です.

採用状況 FreeBSD 4.11 FreeBSD 5.3 FreeBSD 6.2 FreeBSD 7.2
標準XFree86 4.4.0X.Org 6.7.0X.Org 6.9.0X.Org 7.4.0
非標準X.Org 6.8.1XFree86 4.4.0XFree86 4.5.0なし
採用されずXFree86 3XFree86 3XFree86 3XFree86 3, 4, X.Org 6

私の見解は「格段の理由がない限り FreeBSD が標準としている方の X Window System を選択するべき」です.

2. FreeBSD の標準の X Window System の導入

以下は FreeBSD 7.2 + X.Org 7.4 における例ですが,ports でも packages でも核となるものがあって,それを導入すれば関連するすべての ports/packages を自動的に導入してくれます.

ports の場合には次のようにします.

# cd /usr/ports/x11/xorg
# make                   ← make config-recursive を利用すると便利です.
# make install

また,packages の場合には次のいずれかの方法で導入します.
(1) FreeBSD のインストーラーに X 導入のメニューがあるなら,それを活用することができる.
(2) pkg_add を用いる. packages のファイルのあるディレクトリーにて,次のようにします.

# pkg_add xorg-7.4_1.tbz

ファイルを ftp server から取得する pkg_add -r も便利です. (2014.9.1 以後,この機能は使えなくなりました.)

(2') pkgng の場合,pkg add を用いる. packages のファイルのあるディレクトリーにて,次のようにします.

# pkg add xorg-7.4_1.tbz

ファイルを ftp server から取得する pkg install も便利です.

# pkg install xorg

ソース等の修正の必要性の有無にかかわらず,先ず ports/packages そのままの状態で install しておく方が合理的です.
注意しなければならないのは,X Window System が依存するものが意外と多いので,通信環境によってやり方を変えた方が良いということです. 通信環境が遅い場合 (ISDN 等),perl や X Window System の lib, font, manual などは CD-ROM, DVD-ROM に収録された packages から install しておくべきです.

3. FreeBSD の標準でない X Window System の導入

この節では,ports にはあるが標準ではない X Window System の導入について述べます.

FreeBSD の ports/packages は,お互いの依存関係を厳しくチェックしています. 例えば FreeBSD 6.2 の標準は X.Org 6.9.0 であり,X Window System を使う ports/packages (例えば kterm) はこれと依存関係にあります. それらが XFree86 4.5.0 の ports からの導入によってどうなるのか,私は試したことがないので分かりません.

この点に関しては,次のような記述を見たことがあります. (すみません.出所の記録が残っておりません.)

(1) /etc/make.conf というファイルを新規作成し,その中に次のように書く. (既にそのファイルが存在すれば最後の行に追加.)
  X_WINDOW_SYSTEM=xfree86-4
(2) XFree86 を ports/packages から install する.
(3) ports/sysutils/portupgrade のコマンドである pkgdb を用いて % pkgdb -F を実行し,pkg データベースを変更する.

X Window System を利用するものは packages を使ってはだめで,すべて各々の ports で make, make install するべしという意味に解釈していますが,実際にやってみないと何とも言えません.
少なくとも,すべての ports が標準でない X Window System との組合わせで無事に make でき,動作する保障はありません.

(補足 1) 当然ですが,X Window System を使う ports を利用しないならば,あるいはそれらも ports を利用せずに make するのであれば,上述の依存関係に悩む必要はありません.

(補足 2) FreeBSD 6.4, 7.2, 8.0 およびこれら以降においては X.Org 7 系が標準採用になり,同時に X.Org 6 系や XFree86 は ports からはずされています. 上記のように非標準の X に切り換える仕組みは提供されておりません.

4. FreeBSD が採用していない X Window System の導入

この節では,ports にもない X Window System の導入について述べます.

この場合,次のような方法が考えられます.

  1. 供給元が binary を用意していれば,それを利用する.
  2. ソースから make する. (必ず make できるという保証も,動作するという保証もありません.)

どちらの方法に依る場合でも,X Window System を使うプログラムは ports も packages も利用できず,自前で make する必要があります. なぜなら,それらを導入すると依存関係から自動的に標準の X が導入されてしまい,自前で導入した X と汚なく混じり合ってしまうからです.[1][2] また,混じらないように工夫して導入したとしても動作する保証はありません. (動作する場合もあるでしょうが,それは幸運であると解釈する方が良いでしょう.)

[1] ソースから make する場合,X を /usr/X11R6/ 以外に導入したければ,host.def に例えば次のように設定します.

#define ProjectRoot             /usr/X11R6.3

(この例では /usr/X11R6.3/ に導入されます.) 複数の X を導入する場合にはこれが不可欠です.

この ProjectRoot はファイルの置き場だけでなく,種々のプログラムの動作に影響があるので,

# mv /usr/X11R6 /usr/X11R6.3

このようなやり方で X の置き場を変えてはいけません.

[2] ports/packages を利用しないので,複数の X の混在が抑制されないのです.