FreeBSD でアプリケーションソフトウェアの再インストールや全更新(pkg, portupgrade を使用)

はじめに

FreeBSD でインストール済みソフトウェアを管理する方法は 2 つある.

かつて用いられていた pkg_add, pkg_delete, pkg_info, pkg_deinstall といった pkg_install 系のコマンドは,FreeBSD 10 以降では提供されていない. これらの代わりに pkg のサブコマンドを用いる.

* ports-mgmt/portmaster と ports-mgmt/portmanager は,いずれも DEPRECATED(非推奨)の指定を受けている.多数のソフトウェアを独自オプションでビルドして運用する場合は,ports-mgmt/poudriere で自前のパッケージリポジトリを構築する方法が適する.

pkg を用いた操作

portupgrade を用いた操作

ポーツ・コレクションからビルドしてソフトウェアを導入・更新する場合に用いる. インストールは,端末を開き,管理者権限で次のコマンドを実行する.

pkg install -y portupgrade

portupgrade はポーツ・インデックス・ファイル INDEX と,そのデータベース INDEX.db を参照する. これらが最新のポーツ・コレクションを反映していないときは,端末を開き,管理者権限で次のコマンドを実行する.

cd /usr/ports
make fetchindex
portsdb -u

* INDEX を自分のシステムで生成する場合は「make index」を用いるが,全ポーツの走査を伴うため長い時間がかかる.FreeBSD プロジェクトが配布する INDEX を取得する「make fetchindex」の方が短時間で済む.

主なオプションは次の通りである.

アプリケーションソフトウェアの新規インストール

端末を開き,管理者権限で次のコマンドを実行する.

portupgrade --new --package -v --beforebuild 'make rmconfig' <名前>

省略形は次の通りである.

portupgrade -Npv -B 'make rmconfig' <名前>

インストール済みのアプリケーションソフトウェアの再ビルドと再インストール

* 一旦削除してから,再ビルド,再インストールする手順

端末を開き,管理者権限で次のコマンドを実行する.

pkg delete <名前>
portupgrade --new --package -v --beforebuild 'make rmconfig' <名前>

省略形は次の通りである.

pkg delete <名前>
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' <名前>

インストール済みのアプリケーションソフトウェアの全更新

インストール済みのソフトウェアそれぞれについて,ポーツ・ツリーに新しいバージョンがあれば更新する.新しいバージョンがなければ何もしない. 端末を開き,管理者権限で次のコマンドを実行する.

git -C /usr/ports pull
cd /usr/ports
make fetchindex
portupgrade -aRv

* 「-R」は,更新対象のソフトウェアを必要としているソフトウェアも併せて更新することを指示する.

実行例:japanese/nkf の再インストール

端末を開き,管理者権限で次のコマンドを実行する.

pkg delete ja-nkf
portupgrade -Npv -B 'make rmconfig' japanese/nkf

更新前後の確認

更新の前に,インストール済みソフトウェアの一覧を保存しておくと,更新後の状態と比較できる. 端末を開き,次のコマンドを実行する.

pkg info > ~/pkg-list-before.txt

更新後の一覧は,端末を開き,次のコマンドで得られる.

pkg info > ~/pkg-list-after.txt
diff ~/pkg-list-before.txt ~/pkg-list-after.txt

* ZFS を使用している場合は,更新前にスナップショットを作成しておくと,問題が生じたときに更新前の状態に戻せる. 端末を開き,管理者権限で次のコマンドを実行する.

zfs snapshot -r zroot@before-upgrade