FreeBSD の開発サイクルにおいて、 ファイルやシステムの一部が使われなくなることがあります。 それらの機能が別の場所で実装されたり、 ライブラリのバージョン番号が変わったり、 システムから完全に削除されることがあるためです。 システムのアップデート時に削除が必要になるのは、 古いファイル、ライブラリそしてディレクトリです。 これらのファイルを削除すると、記憶媒体 (およびバックアップ媒体) において不必要な容量を占めている古いファイルが、 システム上に散乱することがなくなります。 また、古いライブラリのセキュリティや安定性に問題があると、 ライブラリを新しくしてシステムを安定な状態にし、 古いライブラリの実装からシステムがクラッシュすることを防がなければなりません。 使われなくなったファイル、ディレクトリ、ライブラリは /usr/src/ObsoleteFiles.inc にまとめられています。この節では、 アップグレードの過程でこれらのファイルを削除する方法について説明します。
システムは、項18.7.1 で説明した方法で構築されていると仮定します。 make installworld と、 その後の mergemaster コマンドが無事に終わったら、 以下の方法で使われなくなったファイルやライブラリを確認してください。
# cd /usr/src # make check-old
見つかった古いファイルは、以下のコマンドで削除できます。
# make delete-old
ティップ: その他のターゲットについては /usr/src/Makefile をご覧ください。
使われなくなったファイルを削除する際、ファイルごとに確認が求められます。 以下のように make の BATCH_DELETE_OLD_FILES 環境変数を設定すると、 確認が省略され、自動的にファイルが削除されます。
# make -DBATCH_DELETE_OLD_FILES delete-old
yes をコマンドへパイプでつなげても省略できます。
# yes|make delete-old
Warning使われなくなったファイルを削除すると、 削除したファイルに依存していたアプリケーションは壊れてしまいます。 特に、古いライブラリを削除する場合に起こり得ます。 通常、make delete-old-libs を実行する前に、 これらの古いライブラリを使っているプログラム、ports、 ライブラリを再構築する必要があります。
共有ライブラリをチェックするユーティリティとして、 Ports Collection の sysutils/libchk や sysutils/bsdadminscripts を利用できます。
使われなくなった共有ライブラリは、 新しいライブラリと競合し、以下のようなメッセージを表示することがあります。
/usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5
この問題を解決するには、 まずライブラリがどの port によってインストールされたかを調べて下さい。
# pkg_info -W /usr/local/lib/libtiff.so /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 # pkg_info -W /usr/local/lib/libXext.so /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1
見つかった port をアンインストールし、 再構築、再インストールしてください。 この過程は ports-mgmt/portmaster や ports-mgmt/portupgrade ユーティリティで自動化できます。 すべての ports が再構築され、 古いライブラリがどこにも使われていないことを確認したら、 以下のコマンドで古いライブラリを削除してください。
# make delete-old-libs
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <[email protected]> まで (英語で)
連絡してください。
本文書に関する質問については、<[email protected]> まで電子メールを (英語で)
送ってください。