FreeBSD システムの更新,ポーツコレクションの維持更新

目次

FreeBSD の運用保守でよく使う設定ファイル

FreeBSD のセキュリティアップデート(更新)

freebsd-update は,FreeBSD のベースシステム(world とカーネル)に対して, バイナリ形式でセキュリティ修正と errata 修正を適用するコマンドである. ソースコードのコンパイルは不要である.

  1. システムにシステム管理者(root) でログインする。
  2. 「freebsd-update」コマンドを用いて,FreeBSD のセキュリティアップデート(更新)を実行する.

    fetch」で未適用のパッチをダウンロードし,「install」で適用する.

    freebsd-update fetch
    freebsd-update install
    
  3. カーネルが更新されたかを確認する.

    次の 2つのコマンドの表示が異なるときは,カーネルが更新されている. その場合は,システムを再起動する.

    freebsd-version -k
    uname -r
    
  4. 適用後に問題が発生したときは,直前の変更を取り消すことができる.
    freebsd-update rollback
    

FreeBSD のパッケージシステム (pkg) の初回実行設定

  1. システムにシステム管理者(root) でログインする。
  2. 初回実行設定を行いたいので,/usr/sbin/pkg を実行する

    /usr/sbin/pkg は,パッケージ管理ツール pkg 本体を導入するための小さなプログラムである. 初めて実行するときに,pkg 本体のダウンロードとインストール(ブートストラップ)が行われる. インターネット接続が必要である.

    /usr/sbin/pkg
    
  3. パッケージ管理ツール (package management tool) の設定を行うか聞いてくるので,「y」+ Enter キー
  4. 確認のため「pkg info」を実行してみる.インストール済みパッケージ一覧が表示されたら OK
    pkg info
    
  5. パッケージに関するデータのアップデート(更新)

    pkg update」でリポジトリのカタログを更新し, 「pkg upgrade」でインストール済みパッケージを最新版に更新する.

    pkg update
    pkg upgrade
    
  6. 終了の確認

    * エラーメッセージが出ていなければ OK.

  7. インストール済みパッケージに既知の脆弱性がないかを確認する.
    pkg audit -F
    

FreeBSD のソースコードのダウンロード

次の手順で,FreeBSD のソースコードを設定

https://docs.freebsd.org/ja/books/handbook/cutting-edge/; 第16章 FreeBSD のアップデートとアップグレード の手順に従う

FreeBSD のソースコードの取得と更新には git を使用する. (以前使用されていた svnlite は FreeBSD 14 で削除された)

  1. システムにシステム管理者(root) でログインする。
  2. git のインストール
    pkg install git
    
  3. 使用中の FreeBSD のバージョンを確認する.
    uname -r
    

    確認したバージョンにより,使用するブランチが決まる.

    • X.Y-RELEASE: releng/X.Y(リリース版に,セキュリティ修正と重要なバグ修正のみを加えたもの)
    • X.Y-STABLE: stable/X
    • X-CURRENT: main
  4. 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
    
  5. 終了の確認

    * エラーメッセージが出ていなければ 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
  1. システムにシステム管理者(root) でログインする。
  2. git を用いてダウンロード済みの FreeBSD のソースコードをアップデート
    git -C /usr/src pull
    
  3. /usr/src/UPDATING を確認する

    ビルドの前後に必要な手作業が記載されている場合がある.

    more /usr/src/UPDATING
    
  4. FreeBSD システム(world)のビルド
    cd /usr/src
    make buildworld
    
  5. 終了の確認
  6. カーネルのビルドとインストール

    「make kernel」は「make buildkernel installkernel」と同じ動作である.

    make kernel
    
  7. 終了の確認
  8. システムの再起動

    新しいカーネルで起動する.

    shutdown -r now
    
  9. 再度,システムにシステム管理者(root) でログインする。
  10. installworld の前に必要な /etc の更新
    etcupdate -p
    
  11. システムのインストール
    cd /usr/src
    make installworld
    
  12. 終了の確認
  13. /etc の設定ファイルの更新とマージ
    etcupdate -B
    
  14. 再起動
    shutdown -r now
    

ポーツ・コレクション(ports collection) のダウンロード

https://docs.freebsd.org/ja/books/handbook/ports/; 第4章 アプリケーションのインストール - packages と ports の手順に従う.

ポーツ・コレクション(ports collection) の取得と更新には git を使用する. (以前使用されていた portsnap は FreeBSD 14 で削除された)

ポーツ・コレクションと pkg のパッケージを混在させるときは, 両者のブランチをそろえること. pkg は既定で四半期ごとの quarterly ブランチのパッケージを使用する一方, git で取得したポーツ・コレクションは main ブランチである. 依存関係が食い違い,不具合の原因になることがある.
  1. システムにシステム管理者(root) でログインする。
  2. git のインストール
    pkg install git
    
  3. ポーツ・コレクション(ports collection) のダウンロード
    git clone https://git.FreeBSD.org/ports.git /usr/ports
    
  4. 終了の確認

    * エラーメッセージが出ていなければ 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 の利用を検討するとよい.

  1. システムにシステム管理者(root) でログインする。
  2. 「echo */portmaster」で portmaster を探す
    cd /usr/ports
    echo */portmaster
    
  3. portmaster のインストール

    「make install clean」の clean は,ビルドで使用した作業ディレクトリを削除する指定である.

    cd /usr/ports/ports-mgmt/portmaster
    make install clean
    
  4. 終了の確認

portmaster を用いて一括アップデート

  1. システムにシステム管理者(root) でログインする。
  2. 「portmaster -L」で,更新できるポーツを確認する
    portmaster -L
    
  3. 「portmaster -a」で,一括アップデート
    portmaster -a
    

    * 質問に対しては「y」 + Enter キー

    * ビルドの選択画面を表示させず,既定のオプションを使うときは「portmaster -Ga」を実行する.

パッケージ(バイナリ)を用いた一括アップデート

ポーツからビルドする必要がないときは,パッケージによる更新の方が短時間で終わる.

pkg update
pkg upgrade

FreeBSD のメジャーバージョンを上げたとき(例えば 14.X から 15.X)は, アプリケーションバイナリインタフェース (ABI) が変わるため, インストール済みのすべてのパッケージ,ポーツを更新する必要がある.

pkg-static upgrade -f