FreeBSD をゼロから設定するには
Prev |  | Next

# 7. 制限事項

対話的で、かつ `make BATCH=YES install` でのインストールに対応していない port の自動インストールは難しいかも知れません。 対話的にインストールする ports には、ライセンス条項の同意を尋ねられた時に `yes` と入力するだけのものがいくつかあります。 そのように入力が標準入力から読みとられる場合は、 適切な回答をインストールコマンド (通常は `make install`) にパイプで渡すことができます (わたしが `stage_2.conf.default` の `java/linux-sun-jdk14` でとった方法がそうです)。

しかしこの方法は、たとえば `editors/staroffice52` の場合にはうまく動きません。 これは X11 が実行されていることを要求するからです。 インストール手順には多くのクリックや文字入力が必要なので、 他の ports のように自動化することはできません。 わたしは、次のようにして問題を回避しました。 最初に古いシステムで staroffice の package を作成し、

    # cd /usr/ports/editors/staroffice52
    # make package
    ===>  Building package for staroffice-5.2_1
    Creating package /usr/ports/editors/staroffice52/staroffice-5.2_1.tbz
    Registering depends:.
    Creating bzip'd tar ball in '/usr/ports/editors/staroffice52/staroffice-5.2_1.tbz'

その後、第 2 段階で次のようにしたわけです。

    # pkg_add /usr/ports/editors/staroffice52/staroffice-5.2_1.tbz

その他に、設定ファイルのアップグレード問題に気をつける必要があります。 一般的に、設定ファイルの書式や内容がいつ変更されるかを知ることはできません。 新しいグループが `/etc/group` に追加されるかも知れませんし、`/etc/passwd` に新しいフィールドが追加されるかも知れません。 このような例は、実際に過去にありました。 単純に古いシステムから新しいシステムに設定ファイルをコピーするだけで ほとんどの場合は十分なのですが、時には不都合な場合もあります。 古いファイルを上書きする方法でシステムをアップグレードしたら、 ローカルにある設定ファイルに新しく追加されたかも知れない項目を統合する目的で `mergemaster` を使うと思います。 しかし残念なことに、`mergemaster` はベースシステムに存在するファイルだけで、インストールした ports については何も処理を行なってくれません。 サードパーティ製ソフトウェアには、 リリースのたびに設定ファイルのフォーマットが変更され、 わたしをイライラさせるようなものもあります。 このような予告なしの変更を検出するために、 わたしは変更した設定ファイルを `stage_3.mk` と同じディレクトリにコピーしておき、 make ルールを使って結果を比較しています。 たとえば、apache の `httpd.conf` であれば、次のような `config_apache` というターゲットを用意しておきます。

    @if ! cmp -s /usr/local/etc/apache2/httpd.conf httpd.conf; then \
        echo "ATTENTION: the httpd.conf has changed. Please examine if"; \
        echo "the modifications are still correct. Here is the diff:"; \
        diff -u /usr/local/etc/apache2/httpd.conf httpd.conf; \
    fi

差分が無害なものであると確認できたら、 `cp /usr/local/etc/apache2/httpd.conf httpd.conf` を実行するわけです。

わたしは `5-CURRENT` から `5-CURRENT` に更新するために 「FreeBSD をゼロから設定する」方法を数回使いましたが、 `4-STABLE` と `5-CURRENT` の間で更新を行なった経験はありません。 異なるメジャーリリース番号の間は、非常の多数の変更が行なわれているため、 更新作業はもっと複雑なものになると思います。 (試したわけではないのですが) `4-STABLE` から `4-STABLE` への更新であれば、「FreeBSD をゼロから設定する」方法は問題なく動作するはずです。 `4-STABLE` のユーザは、次の点を考慮してください。

> Note: デバイスファイルシステム devfs(5) を使ってなければ、 `all_remaining_customization` の中で MAKEDEV(8) を使い、 ハードウェア用のデバイスファイルを作成するとよいでしょう。

Prev | Home | Next
第 3 段階 |  | ファイル