パッケージ・レジストリ・データベースと, ポーツ・インデックス・ファイルと, ポーツ・データベース・ファイルが「実態を反映していない」ような場合になったときは,次のコマンドで対処します.
それで,問題は, 上記のコマンドをいちいち実行するのは面倒だし,時間がかかるし,ということです.
そこで,cd /usr/ports/<ほげほげ>/<ほげ> で make コマンドを直接叩くのはなく, 次のように portupgrade コマンド等を活用することにします. ※ そうしておけば,パッケージ・レジストリ・データベースと, ポーツ・インデックス・ファイルと, ポーツ・データベース・ファイルが,自動的に実態を反映してくれる,ということです. 但し,例外的にエラーが出ることがありますが,そのときは, pkgdb -F, portsdb -uU などで対処です.
portupgrade --new --package -v --beforebuild 'make rmconfig' <名前>
■ pkg_deinstall で一旦消去して再ビルド,再インストールする手順
これは,<名前>で指定するアプリケーションソフトウェアを pkg_deinstall で消して,再度,ビルドしてインストールするということです.
pkg_deinstall <名前> portupgrade --new --package -v --beforebuild 'make rmconfig' <名前> # 省略形は portupgrade -Npv -B 'make rmconfig' <名前>
■ 再ビルドと再インストールを「強行」する手順(上書きインストール)
依存するファイルについても再ビルトと再インストールを行ないたいので, clean-dependsと--recursiveを付けている.
cd /usr/ports/<名前> make clean-depends portupgrade --force --package --recursive -v --beforebuild 'make rmconfig' <名前> # 省略形は portupgrade -fprv -B 'make rmconfig' <名前>
これは,インストール済みのアプリケーションソフトウェアそれぞれについて,ポーツ・ツリーに新バージョンがあれば更新する.新バージョンがなければ何もしない,ということです.
「-R」は upward recursive
pkgdb -F portupgrade -aRv
pkg_deinstall -a
pkg_info -r <名前> pkg_info -R <名前>
pkg_info -a
■ 実行例:japanese/nkf の再インストール
pkg_deinstall japanese/nkf portupgrade -Npv -B 'make rmconfig' japanese/nkf
パッケージ(あるいは DVD 等に付属のパッケージ・コレクション)やポーツ・ツリーを使ってインストールしたアプリケーションソフトウェアの全削除について.
次の判断を行って下さい.
各自で,リスクを判断の上, 今までパッケージ(あるいは DVD 等に付属のパッケージ・コレクション)でインストールしたアプリケーションソフトウェアを全削除してください. 次のような操作です.
■ portupgrade のインストール が済んでいる場合
shutdown now pkg_deinstall -a sync sync sync sync sync reboot
■ portupgrade のインストール が済んでいない場合
shutdown now pkg_info pkg_delete -a pkg_info sync sync sync sync sync reboot
全削除しない,という判断もありえるかも知れません. とは言え,ポーツ・ツリーとパッケージの両方でアプリケーションソフトウェアをインストールしたときのデメリットはあると思います.それも考えて判断してください.
■ portupgrade のインストール が済んでいる場合
shutdown now pkg_deinstall -a sync sync sync sync sync reboot