↑ 「FreeBSDで遊ぼう」のページへ

↑ トップページへ

★ [SilverSackの自画自賛] FreeBSDで遊ぼう

★

 「portmaster」マニュアル


ports collectionを使用するためのツールはいくつか用意されていますが、私はportmasterを使っています。インストールする際に別のportsを入れる必要がないからです。結構利用しているportsですが、マニュアルが和訳されていないので、ちと不便です。で、自分の参照用も兼ねて訳しておこうと思います。


portmaster マニュアル (2011年12月12日版)
PORTMASTER(8) FreeBSDシステム管理者マニュアル PORTMASTER(8)
コマンド名
portmaster  - 外部のデータベースや言語なしにポーツの管理を行うツール
概要
共通コマンドラインオプション : [--force-config -CGHgntvw -[B|b] -[f|i] -[D|d]]
[[[--packages|-P]|[--packages-only|-PP]] | [--packages-build]]
[--packages-if-newer] [--delete-build-only] [--always-fetch]
[--local-packagedir=] [--packages-local] [--delete-packages]
[--no-confirm] [--no-term-title] [--no-index-fetch]
[--index|--index-first|--index-only] [-m arguments for make]
[-x glob pattern to exclude from building]

portmaster [共通コマンドラインオプション] (インストールしたいポーツの/var/db/pkgディレクトリの中のフルパス)
portmaster [共通コマンドラインオプション] (/usr/portsディレクトリの下のインストールしたいポーツのディレクトリのフルパス)
portmaster [共通コマンドラインオプション] (インストールしたいポーツのディレクトリの/var/db/pkgからのグロブパターン)
portmaster [共通コマンドラインオプション] [--update-if-newer] (インストールしたい複数のポーツの/usr/portsもしくは/var/db/pkgからの名前かフルパスの列挙, もしくは/var/db/pkgからの複数のグロブパターン)
portmaster [共通コマンドラインオプション] (ビルドしたいポーツの/usr/ports/foo/barといったパス情報
portmaster [共通コマンドラインオプション] -a
portmaster --show-work [-Gv] [-m (引数)] (単一ポーツ)
portmaster [共通コマンドラインオプション] -o <置き換えるポーツの/usr/portsの中のパス> <現在インストールされているポーツ>
portmaster [共通コマンドラインオプション] [-R] -r (インストールしたいポーツの/var/db/pkgの中の名前またはグロブパターン)
portmaster -l
portmaster [--index-only [-t]] -L
portmaster --list-origins
portmaster [--force-config|-G] [-P|-PP] [-aftv] -F
portmaster [-n|y] [-b] [-D|d] -e /var/db/pkgの中の単一のポーツの名前またはグロブパターン
portmaster [-n|y] [-b] [-D|d] -s
portmaster [-n|y] [-t] --clean-distfiles
portmaster [-n|y] [--index|-index-only] --clean-packages
portmaster [-n|y] [--index|-index-only] [-v] --check-depends
portmaster [-n|y] [-v] --check-port-dbdir
portmaster -h|--help
portmaster --version

上で述べられている「グロブ」パターンは、正規表現ではありません。例えば、「portmaster perl」は、正規表現"/var/db/pkg/perl*"に当てはまる/var/db/pkgの中の全てのポーツディレクトリにマッチします。
クイックスタートガイド
このマニュアルには、portmasterに関する多くの貴重な情報があり、portmasterがどう動くのかやどのような選択肢があるのかに関してよりよく知るためにマニュアル全体を読むべきです。しかし、まず使い始めたいのであれば、このマニュアルの最後の「使用例」に目を通してください。
説明
portmasterユーティリティは、ポーツをアップデートするためのツールです。これは、既に何がインストールされているかを調べるために外部のデータベースを使用しません。そうてはなくて、/var/db/pkgに何が入っているのかといったことを含めた既に存在しているポーツのインフラを使用します。このツールのキモは、インストールされたポーツの依存情報を最新状態に保つということです。これによって、その上の全てのポーツをアップデートすることなく、指定したポーツを安全にアップデートできます。稀にあなたがインストールしようとしているポーツに依存するすべてのポーツをリコンパイルする必要があります。-rオプションは、そういった作業を行うために用意されています。

デフォルトでは、portmasterは、コマンドラインで指定したポーツだけをアップデートします。これは、指定したポーツの新しいバージョンの有無にかかわらずそうなります。portmasterは、まず、指定したポーツとその全ての依存関係を調べ、「make config」インターフェースを通して全てのポーツのオプション設定を扱えるようにします。以前に一度もビルドしたことがないポーツの場合は、オプション設定のダイアログが表示されます。「--force-config」オプションを指定すれば全てのポーツでダイアログが表示されます。

もし、--packages* といったオプションを指定していないのであれば、依存関係を調べている間、「make checksum」プロセスが走り、正しいdistfileを検証するか、新しいものをダウンロードするか、いずれかを行います。portmasterを^Cで終了した場合は、この目的で起動された子プロセスも終了されます。

依存関係を調べている時、ポーツにCONFLICTSがセットされている場合は、既にインストールされているポーツと照合され、もしビルド中のポーツが必要とする別のバージョンの依存関係がある場合は、デフォルトに変わってその別のバージョンの依存関係が使用されます。

オプション設定と依存関係のチェックが終わると、新たにインストールされるか更新されるポーツのリストが表示され、処理を進めるかどうか確認を求められます。この確認は、「--no-config」オプションを指定するとスキップできます。

依存関係のチェックで更新の必要なポーツが一つもなかった場合は、このステップはスキップされ、コマンドラインで指定したポーツとのビルドを始めます。この最適化に加えて、最新の状態になった依存関係、ポーツをビルドする際に指定したオプション選択、既に「make config」を行ったポーツは、パフォーマンスの向上、二重作業の回避のために、全てキャッシュされます。

依存関係のチェック中に、IS_INTARACTIVEとマークされているポーツがあれば、それは記憶されます。このマークがない場合、普通はポーツのビルドが始まった後ユーザーがやらないといけないことは、古い配布ファイルを削除するかどうかの問いに答えることだけです。この質問も「-d」または「-D」オブションを指定することで出なくなります。

ポーツをビルドするために必要な時間を節約するための「--packages*」コマンドが多数用意されています。インストールのスピードと最大のパフォーマンスのバランスに興味があるユーザーは、「--packages-build」オプションを「--delete-build-only」オプションと一緒に使用することを考慮するのがいいでしょう。

もし、「-B」オプションを指定せずにインストールしたポーツをアップデートした場合、pkg_delete(1)が呼ばれる前にパックアップ用のパッケージが作成されます。もし、「-b」オプションを指定した場合は、それらのパッケージは環境変数「PACKAGES」で指定したディレクトリ(通常は、/usr/ports/packagesです。)の中の「portmaster-backup」ディレクトリに保存されています。もし、「-b」オプションが指定されていない場合は、新しいバージョンのポーツのインストールが成功したらすぐ、バックアップ用のパッケージは削除されます。インストールが何らかの理由で失敗した場合は、バックアップ用のパッケージがどこにあるかと一緒に役に立つメッセージが表示されます。

「-w」オプションが指定されている場合は、ポーツがビルドされた後、古いポーツが使用していた共用ライブラリは、/usr/local/lib/compat/pkgディレクトリに保管されます。インストール後、/usr/local/lib/compat/pkgディレクトリに同じ名前のファイルがある場合は古いファイルは削除され、ldconfig(8)コマンドが/etc/rc.d/ldconfig経由で実行されます。

新しいポーツがビルドされた後、確実にアップデートするためにインストール前にランタイムの依存関係がチェックされます。「-g」オプションが指定されている場合は、新しいバージョンの(若しくは新しくインストールされた)ポーツのパッケージが作成されます。

ポーツをインストールしたり、「--check-depends」オプションを指定した場合は、このポーツに依存するポーツがある場合は、依存している方のポーツの「+CONTENTS」ファイルや新しいポーツの「+REQUIRED_BY」がアップデートされます。

インストールが成功すると最後に、インストールされたパッケージのpkg-messageファイルとインストール作業の概要が表示されます。「--delete-build-only」オプションが指定されている場合は、portmasterの今回の実行でインストールされたパッケージ「と」この実行でビルドの依存関係が初めてリストアップされたパッケージが削除されます。

もし処理中に何か問題が起こったら(即ち、ポーツのビルドに失敗した、ポーツにBROKENのマークがついている、等)、portmasterは、どの作業が問題なく行われたのかをレポートして終了します。

このような質問を良くされます。「何のエラーもないポーツを処理できないのは何故なのですか。」と。答えは、(残念ながら)portmasterは全てのことを知っているわけではなく、その問題に対してユーザーがどのような決定をするか分からないからです。それ故、人の介在は必要です。
オプション設定
可能なオプション設定は、次の通りです :
[共通フラグ] :
--force-config
「make config」を全てのポーツに対して実行します。(「-G」に優先します。)
-C
ビルドの前に行われる「make clean」を行わないようにします。
-G
「make config」を行いません。
-H
ポーツをビルドする際の詳細を表示せず、ログファイルに記録します。
-K
ビルドの後に行われる「make clean」を行わないようにします。
-B
既にインストールされているポーツのバックアップパッケージを作成しません。
-b
既にインストールされているポーツのバックアップパッケージを作成し、作業完了後も削除しません。
-g
新しくインストールするポーツのパッケージを作成します。
-n
全ての手順を実行しますが、どのポーツのメイクもインストールもしません。
-t
「all-depends-list」を使用して全ての依存関係を再帰的に調べます。必要なときにだけ使用し、日常的には使用しないことを推奨します。「--clean-distfiles」オブションに使用された場合は、インストールされたポーツだけでなく、最新になっている全てのポーツの配布ファイルが削除されません。
-v
詳細な出力を行います。
-w
アンインストールする前に共有ライブラリを保存します。
[-R] -f
常にポーツを再ビルドします。(「-i」に優先します。)
-i
インタラクティブアップデートモードです。ポーツを再ビルドするかどうか確認されます。
-D
配布ファイルを削除しません。
-d
常に配布ファイルを削除します。
-m
makeに送られる引数を指定します。
-x
ここで指定するパターンに合致するポーツをビルド及びアップデートから外します。一つのコマンドラインで複数回指定することができます。ポーツがインストールされていない場合は、このパターンは「/usr/ports」ディレクトリ下のディレクトリ名に対して実行されます。
--no-confirm
インストール又はアップデートをその対象ポーツのリストの確認をユーザーに行うことなく実行します。
--no-term-title
xtermウィンドウのタイトルバーの表示を更新しません。
--no-index-fetch
INDEXファイルの取得を省略します。
--index
INDEX-[7-9]だけを使用して、ポーツが最新かどうかを調べます。
--index-first
状況の確認をINDEXファイルで行いますが、ポーツとの確認も行います。
--index-only
/usr/portsディレクトリを使用しません。/usr/portsディレクトリが存在しないときにポーツをアップデートするのであれば、「-PP」又は「--packages-only」オプションが必要になります。他の必要要件については、「ENVIRONMENT」セクションを見てください。
--delete-build-only
その実行においてインストールされた場合だけ、ビルドのみの依存関係のポーツを実行が成功した後に削除します。
--update-if-newer
コマンドラインで複数のポーツが指定されている場合のみ)インストールされているポーツが最新であれば、再ビルドも再インストールもしません。
-P|--packages
パッケージを利用します。但し、パッケージがない場合は、ポーツをビルドします。
-PP|--packages-only
パッケージが利用できない場合は、途中終了します。「-PP」オプションは、コマンドラインでは単独で指定してください。言い換えれば、(例えば)「-PPav」といった指定はできないということです。
--package-build
全てのビルドの依存関係にパッケージを使用します。
--poackages-if-newer
利用可能なパッケージがポーツツリー上最新でなくても、インストールされているものよりも新しければパッケージを使用します。
--always-fetch
既にローカルに存在しているときでもパッケージを取りに行きます。
--local-packagedir
ローカルのパッケージの保存場所です。ローカルにパッケージが存在しない場合はサーバーに取りに行きます。このオプションは、「make package」(若しくはportmasterの-gオプション)が行うのと同様の考え方でフルパスで指定してください。即ち、パッケージファイルは指定したディレクトリの下の/Allディレクトリに保管され、指定したディレクトリの下の/Latestディレクトリには「LATEST_LINK」のシンボリックリンクが置かれ、「(指定ディレクトリ)/All」のパッケージに対するシンボリックリンクが、「(指定ディレクトリ)/devel」、「(指定ディレクトリ)/ports-mgmt」といったカテゴリー別のサブディレクトリに置かれます。
--packages-local
--local-packagedirで指定したディレクトリにあるパッケージだけを使用します。
--delete-packages
パッケージを使用してインストールした後、そのパッケージを削除します。
[機能] :
-a
インストールされている全てのポーツを調べ、必要なものはアップデートします。
--show-work
依存しているポーツは何か、その中でインストールされていないものは何かを表示します。
-o (新しいポーツの/usr/portsの中のディレクトリ) (インストールされているポーツ)
インストールされているポーツを別の所にあるポーツと置き換えます。
[-R] -r (/var/db/pkgの中のポーツのディレクトリの名前かグロブパターン)
指定したポーツとそれに依存する全てのポーツを再ビルドします。依存しているポーツのリストは、インストールされているポーツのバージョン番号ではなく、オリジナルの情報(即ち(カテゴリー/ポーツ名)のディレクトリ)に従って構築されます。従って、「portmaster -r fooport-1.23」を実行して、-Rオブションを指定して再起動して新しくインストールされたポーツがfooport-1.24だった場合、「portmaster -R -r fooport-1.24」を実行することが可能で、それによってし漏らした処理が実行されます。「-r」オブションは、1つのコマンドラインの中で複数回指定できます。
-R
「-r」若しくは「-f」オプションと一緒に使用して、前回実行時にアップデートされたポーツをスキップします。「-r」オプションと一緒に使用された場合、そのポーツと全ての依存関係が最新になっている場合、その親ポーツの再ビルドも行いません。
-l
全てのインストールされているポーツをカテゴリー別にリストアップします。
-L
全てのインストールされているポーツをカテゴリー別にリストアップし、アップデートの有無をチェックします。
--list-origins
根ポーツや葉ポーツについて/usr/portsからのディレクトリをリストアップします。このリストは、他のマシンにインストールしたり全てのポーツを再インストールしたする時に、portmasterに指定するのに適しています。下の「使用例」を参照して下さい。
[--force-config|-G] [-aftv] -F
配布ファイルのダウンロードだけを行います。
-n
以降に出てくるコマンドプロンプトでの質問に対して全て「no」と回答します。
-y
以降に出てくるコマンドプロンプトでの質問に対して全て「yes」と回答します。
[-n|y] [-b] [-D|d] -e (/var/db/pkgの中の一つのポーツのディレクトリの名前かグロブパターン)
指定した一つのポーツをpkg_deleteを使用して削除し、オプションで指定があれば、全ての配布ファイルを削除します。そのポーツを削除することにより、依存関係が不要になる場合は、削除後に「-s」オブションを呼びます。
[-n|y] [-b] [-D|d] -s
前は依存されていた不要ポーツを消去します。
[-t] [-n] --clean-distfiles
インストールされているポーツを再帰的に調べ、配布ファイルのリストを作成し、全ての「/usr/ports/distfiles」の中の配布ファイルがインストールされているファイルと関連があることを再帰的に確認します。もし、関連がない場合、不要なファイルを作成するかどうか聞かれます。「-t」オブションを指定した場合は、インストールされているポーツだけでなく、何らかのポーツに利用されている場合、有効だと見なします。
[-t]
「-y」や「-clean-distfiles」は上記の通りに処理しますが、このオプションの指定がある場合は、全てのファイルを確認なしに削除します。
[--index|--index-only] [-n] --clean-packages
不要なパッケージを消去する機能を提供します。ポーツツリーが使用可能でない場合、「-index-only」オプションの指定が必要です。
[--index|--index-only]
「-y」や「-clean-distfiles」は上記の通りに処理しますが、このオプションの指定がある場合は最新でないファイルは確認なしに削除します。
[-n|y] [-v] --check-depends
全てのポーツの依存関係を再確認し、最新にします。
[-n|y] [-v] --check-port-dbdir
「/var/db/ports」の中で不要なものがどれかチェックします。
-h|--help
ヘルプを表示します。
--version
バージョン番号を表示します。
環境変数
PACKAGES変数で指し示されるディレクトリ(デフォルトは/usr/ports/packages)は、新しい、またはバックアップ用のパッケージを保存するのに使用されます。「-g」オプションで「make package」が使用された場合は、ポーツのインフラは、パッケージを${PACKATES}/All、別名PKGREPOSITORYに保存します。「-b」オプションが使用された場合は、同じバージョンであってもバックアップ用のパッケージと新しくインストールしたパッケージの両方を作成できるように、portmasterはバックアップ用のパッケージを${PACKAGES}/portmaster-backupに保存します。

「--packages*」オプションを使っている時は、パッケージ用のファイルは、${PACKAGRS}/portmaster-downloadディレクトリに保存されます。portmasterは、PACKAGESITE及びPACKAGEROOT(デフォルトは、http://ftp.freebsd.org)変数を尊重します。portmasterは、この二つの変数をpkg_addと同じ方法で取り扱います。

UPGRADETOOL変数は、「portmaster」にセットされ、UPGRADE_PORT変数は、パッケージのフルネームに、UPGRADE_PORT_VER変数は、置き換えられるパッケージが存在する場合は、そのバージョンがセットされます。

「--index-only」オプションが使用された場合は、PACKAGES変数には、スーパーユーザーが書き込みアクセス権を持っているディレクトリがセットされなければいけません。そのほかの有用な変数には、
MASTER_SITE_INDEX (デフォルトは、http://www.FreeBSD.org/ports/)
FETCHINDEX (デフォルトは、fetch -am -o)
INDEXDIR (デフォルトは、$PORTSDIR若しくは「--index-only」には$TMPDIR)
INDEXFILE (デフォルトは、FreeBSDの各バージョン毎にそれぞれ)
があります。

もし、パッケージのビルドのために標準とは異なるOPTIONSの設定を使用していて、ポーツツリーなしで「--index-only」オプションを使いたい場合、依存関係が一致するように自分でINDEXファイルを作成しなければなりません。

もしポーツ毎にビルド環境をカスタマイズしたいのであれば、/usr/ports/ports-mgmt/portconfを見るのが良いでしょう。

タイムスタンプに従ってportmasterが行った処理のログを取りたいのであれば、rcファイルにログを書き込みたいファイルのフルパスでPM_LOGを定義して下さい。もし、sudoでportmasterを実行しているのであれば、そのファイルを権限のないユーザーでも書き込みできるようにすることを忘れないで下さい。

portmasterは、アップデートの間デフォルトでpkg_deleteを走らせる前にバックアップ用のパッケージを作成します。そのパッケージの作成に失敗した場合は、それは重大なエラーとして扱われ、ユーザーに知らされます。しかし、スクリプトによるportmasterの使用の場合は、これは問題になることがあります。ユーザーがバックアップ用のパッケージがないことが致命的なエラーにならないことが絶対的に確実なのであれば、rcファイルでPM_IGNORE_FAILED_BACKUP_PACKAGEを任意の値で定義して下さい。

特定のポーツはパッケージからではなく、必ずコンパイルしてインストールしたいのであれば、PT_NO_INSTALL_PACKAGE変数をmake環境の中に定義して下さい。これは、/usr/ports/ports-mgmt/portconfを使用している場合は恐らく/usr/local/etc/ports.conf、そうでなければ/etc/make.confになります。これは、「-PP/--packages-only」オプションとは両立しません。
ファイル
/usr/local/etc/portmaster.rc
$HOME/.portmasterrc
システムオプションとユーザー設定のファイルです。スクリプトによるgetoptsのルーティン処理の中で設定される変数は、これらのファイルで指定して利用可能になります。これらのファイルは、親のportmasterプロセスで読み込まれて、その中の変数は全てエクスポートされます。portmaster.rcファイルがportmasterのスクリプトそれ自身と同じディレクトリにある場合は、上で説明したのと同じように読み込まれます。
/var/db/pkg/*/+IGNOREME
このファイルが既にインストールされたポーツのために存在しているのであれば、いくつかの事態が発生します。
  1. そのポーツは、全てのプロセスを無視します。/usr/portsにそのポーツのディレクトリがなくても、/usr/ports/MOVEDにエントリーがなくても依存関係の更新を含めてそうなります。「-v」オプションが指定されている時は、ポーツが無視されているということが表示されるだけです。
  2. 「-L」オブションが使用されていて、新しいバージョンが存在する場合、+IGNOREMEファイルが存在することが告げられます。
  3. そのポーツの通常のアップデート、若しくは「-a」オプションが使用されている場合は、そのポーツをアップデートするかどうか確認されます。
/var/db/pkg/*/PM_UPGRADE_DONE_FLAG
「-R」オプションを含む「-a」「-f」「-r」オプションの実行の後、ポーツが既に再ビルドされたことを示します。それが既に最新である場合は、安全に無視されます。
/tmp/port_log-*
「-H」オプションが使用されていて、インストールまたはアップグレードに失敗した場合、ビルドとインストールの結果がこのファイルに保存されます。環境のTMPDIRの値は、適切に置き換えられます。
終了時の状態
portmasterユーティリティは、成功した場合は、0を返し、エラーが発生した場合は0より大きい値を返します。
高度な機能 : SU_CMD
ポーツのインフラは、権限のないユーザーに対しては、行える作業を制限しています。これはこのことをSU_CMD(典型的には「su(1)」ですが)を定義することによって行っています。権限のないユーザーとしてポーツに関する全ての管理を行うためには、必要な時に「root」権限に昇格して、昇格した権限を扱うためにportmasterが「sudo(1)」を使えるようにします。これを行うためには、以下のディレクトリを権限のないユーザーがアクセスできるように以下のように構成する必要があります。
1. WRKDIRPREFIX
これは、通常、「/usr/ports/category/port/work」に設定されます。しかし、権限のないユーザーがアクセスできるようにポーツツリーの外に作成して、それを/etc/make.confの中で割り当てることを推奨します。
2. DISTDIR
これは、通常、「/usr/ports/distfiles」に設定されます。これを権限のないユーザーのアクセスに対しても安全に設定してもいいですし、上記のように新しいディレクトリを設定しても構いません。
3. TMPDIR
通常「/tmp」です。しかし、望むのであれば、シェルの環境で別のディレクトリを設定することもできます。
また、以下のディレクトリも「root」ユーザーが所有しています:
 /var/db/pkg
 /var/db/ports
 LOCALBASE - 通常「/usr/local」
 PACKAGES - 通常「/usr/ports/packages」
 PKGREPOSITORY - 通常「${PACKAGES}/All」

従って、「sudo(1)」をインストールして、構成する必要があります。これは、/usr/ports/security/sudoで簡単にできます。次に「/etc/portmaster.rc」ファイルか「${HOME}/.portmaster.rc」ファイルでPM_SU_CMDを定義する必要があります。例えば、
 PM_SU_CMD=/usr/ports/security/sudo
です。portmasterがPM_SU_CMDを使用する度にあなたに通知するよう、PM_SU_VERBOSEオプションを設定することもできます。これは、試しにsudo(1)以外のツールを権限昇格処理に使用している場合に有用です。現在は、sudo(1)だけが選択可能なオプションですが。

[注意] sudo(1)ポーツそれ自体をこの方法でアップグレードすることはできません。
使用例
以下が、portmasterコマンドの典型的な使用例です。

一つのポーツをアップデートにする:
 portmaster fooport-1.23 または
 portmaster fooport または
 portmaster foo/fooport

利用可能であればパッケージを使用する
 portmaster --packages fooport-1.23

複数のポーツのアップデートにする
 portmaster fooport-1.23 barport baz/blahport

ローカルでビルドするが、ビルドの依存関係にはパッケージを使用し、その後削除する
 portmaster --package-build --delete-build-only fooport-1.23

システムをローカルで利用可能なパッケージだけを使ってアップデートする
 portmaster -PP --local-packagedir= -a

アップデートが必要なポーツを全てアップデートする
 portmaster -a

アップデートが必要なポーツを全てアップデートし、アップデートが完了した後、不要な配布ファイルを削除する
 1. portmaster -aD
 2. portmaster -clean-distfiles

より複雑な処理(オプションの詳細は上の説明を参照して下さい)
 portmaster -r fooport-1.23
 portmaster -r fooport-1.23 -r barport-2.34
 portmaster -o emulators/linux_base-fc4 linux_base-8-8.0_15
 portmaster -a -x gstreamer -x linux

アップデート可能なポーツだけを表示する。これは、シェルでエイリアスとして使用できます。改行を適切に考慮して下さい。
 portmaster -L | egrep -B1 '(ew|ort) version|Aborting|installed|dependencies| IGNORE|marked|Reason:|MOVED|deleted|exist|update' | grep -v '^--'

portmasterを利用して、インストールされている全てのポーツの完全な再インストールを行う
 1. portmaster --list-origins > ~/installed-port-list
 2. ポーツツリーを最新にする
 3. portmaster -ty --clean-distfiles
 4. portmaster --check-port-dbdir  5. portmaster -Faf
 6. pkg_delete -a
 7. rm -rf /usr/local/lib/compat/pkg
 8. 「/usr/local/etc」の中の設定ファイルのような「/usr/local」の中の取っておきたいファイルを全てバックアップする。
 9. 「/usr/local」と「/var/db/pkg」の中をマニュアルチェックし、確実に空にする。
 10. portmasterを再インストールする。
 11. portmaster `cat ~/installed-port-list`

あなたは、恐らくインストールの際は、「-D」オプションを使用し、それが終わったら「--clean-distfiles [-y]」を走らせるでしょう。新しいポーツをインストールする時は、「--force-config」オブションを使いたいと思うかも知れません。

もしくは、「適切な」ポーツのアップデートにために「portmaster -a -f -D」を使用するかも知れません。何らかの理由で処理が中断してしまった場合は、「portmaster -a -f -D -R」を使うと前の実行で再ビルドされたポーツの再ビルドを回避できます。しかし、最初の方法(全て消去して、再インストールする)が好ましいです。
こちらも参照のこと
make(1), pkg_add(1), pkg_delete(1), su(1), ports(7), ldconfig(8), sudo(8)
執筆者
このマニュアルは、Doug Barton によって書かれました。
FreeBSD 9.2 2011年12月12日 FreeBSD 9.2

(2014年 2月 8日 記)