FreeBSD システムの更新,ポーツコレクションの維持更新
FreeBSD の運用保守でよく使う設定ファイル
- /etc/rc.conf: ホスト名,ネットワーク,システム起動時に開始するサービスの設定
- /etc/make.conf: ソースコードやポーツをビルドするときのコンパイルオプションの設定
- /etc/src.conf: ベースシステム (world, カーネル) をビルドするときの構成の設定
- /etc/fstab: ファイルシステムのマウントの設定
- /etc/sysctl.conf: システム起動時に設定するカーネルパラメータ
- /etc/freebsd-update.conf: freebsd-update によるバイナリアップデートの対象と動作の設定
FreeBSD のセキュリティアップデート(更新)
freebsd-update は,FreeBSD のベースシステム(world とカーネル)に対して, バイナリ形式でセキュリティ修正と errata 修正を適用するコマンドである. ソースコードのコンパイルは不要である.
- システムにシステム管理者(root) でログインする。
- 「freebsd-update」コマンドを用いて,FreeBSD のセキュリティアップデート(更新)を実行する.
「fetch」で未適用のパッチをダウンロードし,「install」で適用する.
freebsd-update fetch freebsd-update install
- カーネルが更新されたかを確認する.
次の 2つのコマンドの表示が異なるときは,カーネルが更新されている. その場合は,システムを再起動する.
freebsd-version -k uname -r - 適用後に問題が発生したときは,直前の変更を取り消すことができる.
freebsd-update rollback
FreeBSD のパッケージシステム (pkg) の初回実行設定
- システムにシステム管理者(root) でログインする。
- 初回実行設定を行いたいので,/usr/sbin/pkg を実行する
/usr/sbin/pkg は,パッケージ管理ツール pkg 本体を導入するための小さなプログラムである. 初めて実行するときに,pkg 本体のダウンロードとインストール(ブートストラップ)が行われる. インターネット接続が必要である.
/usr/sbin/pkg
- パッケージ管理ツール (package management tool) の設定を行うか聞いてくるので,「y」+ Enter キー
- 確認のため「pkg info」を実行してみる.インストール済みパッケージ一覧が表示されたら OK
pkg info
- パッケージに関するデータのアップデート(更新)
「pkg update」でリポジトリのカタログを更新し, 「pkg upgrade」でインストール済みパッケージを最新版に更新する.
pkg update pkg upgrade
- 終了の確認
* エラーメッセージが出ていなければ OK.
- インストール済みパッケージに既知の脆弱性がないかを確認する.
pkg audit -F
FreeBSD のソースコードのダウンロード
次の手順で,FreeBSD のソースコードを設定
https://docs.freebsd.org/ja/books/handbook/cutting-edge/; 第16章 FreeBSD のアップデートとアップグレード の手順に従う
FreeBSD のソースコードの取得と更新には git を使用する. (以前使用されていた svnlite は FreeBSD 14 で削除された)
- システムにシステム管理者(root) でログインする。
- git のインストール
pkg install git - 使用中の FreeBSD のバージョンを確認する.
uname -r確認したバージョンにより,使用するブランチが決まる.
- X.Y-RELEASE: releng/X.Y(リリース版に,セキュリティ修正と重要なバグ修正のみを加えたもの)
- X.Y-STABLE: stable/X
- X-CURRENT: main
- git を用いて,FreeBSD のソースコードをダウンロードする.
「releng/15.1」のところは,先ほど確認した FreeBSD のバージョンに読み替えること.
/usr/src に既存のファイルがあるときは,退避してから実行する. 終了までしばらく待つ.
mv /usr/src /usr/src.bak git clone --branch releng/15.1 https://git.FreeBSD.org/src.git /usr/src - 終了の確認
* エラーメッセージが出ていなければ OK.
FreeBSD のソースコードを用いた FreeBSD のアップデート(更新)
https://docs.freebsd.org/ja/books/handbook/cutting-edge/; 第16章 FreeBSD のアップデートとアップグレード の手順に従う
設定ファイルのマージには etcupdate を使用する. (以前使用されていた mergemaster は FreeBSD 14 で削除された)
mergemaster を使っていたシステムで初めて etcupdate を使うときは, ソースコードの更新とビルドを行う前に,次を実行して 標準の /etc のデータベースを作成しておく. これを行わないと,最初の実行時に誤ったマージや不要な衝突が起きることがある.
etcupdate extract
etcupdate diff
- システムにシステム管理者(root) でログインする。
- git を用いてダウンロード済みの FreeBSD のソースコードをアップデート
git -C /usr/src pull - /usr/src/UPDATING を確認する
ビルドの前後に必要な手作業が記載されている場合がある.
more /usr/src/UPDATING - FreeBSD システム(world)のビルド
cd /usr/src make buildworld
- 終了の確認
- カーネルのビルドとインストール
「make kernel」は「make buildkernel installkernel」と同じ動作である.
make kernel
- 終了の確認
- システムの再起動
新しいカーネルで起動する.
shutdown -r now
- 再度,システムにシステム管理者(root) でログインする。
- installworld の前に必要な /etc の更新
etcupdate -p - システムのインストール
cd /usr/src make installworld
- 終了の確認
- /etc の設定ファイルの更新とマージ
etcupdate -B - 再起動
shutdown -r now
ポーツ・コレクション(ports collection) のダウンロード
https://docs.freebsd.org/ja/books/handbook/ports/; 第4章 アプリケーションのインストール - packages と ports の手順に従う.
ポーツ・コレクション(ports collection) の取得と更新には git を使用する. (以前使用されていた portsnap は FreeBSD 14 で削除された)
- システムにシステム管理者(root) でログインする。
- git のインストール
pkg install git - ポーツ・コレクション(ports collection) のダウンロード
git clone https://git.FreeBSD.org/ports.git /usr/ports - 終了の確認
* エラーメッセージが出ていなければ OK.
ポーツ・コレクション(ports collection) のアップデート(更新)
端末で次のコマンドを実行
git -C /usr/ports pull
更新の後,インストール済みで最新でないポーツの一覧は,次のコマンドで確認できる.
pkg version -l "<"
ポーツ・コレクションを使ってインストールされたパッケージの一括アップデート(更新)
アップデートの前に /usr/ports/UPDATING を確認する. 設定ファイルの場所の変更や,以前のバージョンとの非互換など, 更新時に必要となる追加手順が記載されている.
more /usr/ports/UPDATING
portmaster のインストール
portmaster は,ポーツからインストールしたソフトウェアを一括で更新するツールである. ports-mgmt/portmaster は,メンテナ不在のため ports ツリーで DEPRECATED(非推奨)と表示される. 多数のマシンを扱う場合や確実性を重視する場合は, ビルド環境を分離してパッケージを自作する ports-mgmt/poudriere の利用を検討するとよい.
- システムにシステム管理者(root) でログインする。
- 「echo */portmaster」で portmaster を探す
cd /usr/ports echo */portmaster
- portmaster のインストール
「make install clean」の clean は,ビルドで使用した作業ディレクトリを削除する指定である.
cd /usr/ports/ports-mgmt/portmaster make install clean
- 終了の確認
portmaster を用いて一括アップデート
- システムにシステム管理者(root) でログインする。
- 「portmaster -L」で,更新できるポーツを確認する
portmaster -L - 「portmaster -a」で,一括アップデート
portmaster -a
* 質問に対しては「y」 + Enter キー
* ビルドの選択画面を表示させず,既定のオプションを使うときは「portmaster -Ga」を実行する.
パッケージ(バイナリ)を用いた一括アップデート
ポーツからビルドする必要がないときは,パッケージによる更新の方が短時間で終わる.
pkg update
pkg upgrade
FreeBSD のメジャーバージョンを上げたとき(例えば 14.X から 15.X)は, アプリケーションバイナリインタフェース (ABI) が変わるため, インストール済みのすべてのパッケージ,ポーツを更新する必要がある.
pkg-static upgrade -f