対話的で、かつ 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
のユーザは、次の点を考慮してください。
デバイスファイルシステム devfs(5) を使ってなければ、
all_remaining_customization
の中で
MAKEDEV(8) を使い、
ハードウェア用のデバイスファイルを作成するとよいでしょう。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。