目次

FreeBSDのアップグレード

同じリリース内でセキュリティパッチレベルを上げる。

6.3-RELEASEからは,「upgrade」オプションで異なるリリースに上がることが可能になった.

セキュリティパッチ

パッチをダウンロード。

# freebsd-update fetch

アップデートが不要な場合、以下のような表示

No updates needed to update system......

パッチをインストール。

# freebsd-update install

確認

# freebsd-version -ku
13.2-RELEASE-p2
13.2-RELEASE-p2
# freebsd-version -r
13.2-RELEASE

バージョンが変わっていたら再起動1)

# shutdown -r now

確認。

# uname -a

こんな風に表示されます。2)

FreeBSD hostname 8.2-RELEASE FreeBSD 8.2-RELEASE-p1 #0: Fri Feb 18 02:24:46 UTC 2011…

10.0からfreebsd-versionというFreeBSDのパッチレベルを教えてくれるコマンドが導入されました

リブート前でも確認できます。

# freebsd-version
10.0-RELEASE-p1

カーネルなら3)

# freebsd-version -k
10.0-RELEASE-p2

ユーザランドなら

# freebsd-version -u
10.0-RELEASE-p3

起動中のカーネルなら

# freebsd-version -r
10.0-RELEASE-p1

jailのユーザランドなら

# freebsd-version -j jail((jailname or jid))
10.0-RELEASE-p3

update できない?

unameすると以下のように

# uname -a
FreeBSD ...... 10.2-RELEASE-p9 FreeBSD 10.2-RELEASE-p9 ......

と表示されるのに、以下のようにupdateは不要と出るケースがある

# freebsd-update fetch
......
Preparing to download files... done.
No updates needed to update system to 10.2-RELEASE-p12.

これは、unameで表示されるのがkernelバージョンのため

freebsd-versionで表示するとわかりやすい

# freebsd-version -k
10.2-RELEASE-p9
# freebsd-version -u
10.2-RELEASE-p12

自動的に適用させる

cronで設定

以下の1行を追加

0 5 * * * root /usr/sbin/freebsd-update cron

変更のダウンロードはされますが、適用は手動で行う必要があります

freebsd-update install

バージョン確認

freebsd-version -kur
freebsd-version -k
uname -r 

バージョンが変わっていたら再起動
通常、システムを再起動する必要があります
カーネルアップデートによりシステムの再起動が必要かどうかを調べるには、freebsd-version -k と uname -r を実行し、2 つのコマンドの結果が異なる場合には、システムを再起動します

shutdown -r now

リリースアップグレード

必要なバイナリなどの取得

# freebsd-update upgrade -r 8.2-RELEASE
...
Does this look reasonable (y/n)? y

設定がコンフリクトしたらエディタが起動するのでよさげに直す。

その他は、

Does this look reasonable (y/n)? y

ずっとy

終わったら、カーネルのアップデート

# freebsd-update install

再起動4)

# shutdown -r now

あれやこれやのアップデートをインストール5)

# freebsd-update install

バージョン確認

# freebsd-version
# uname -a

メジャーバージョンアップグレード後の package のアップグレード

メジャーバージョンアップグレード後には、packages, ports をアップグレードする必要があります

パッケージのアップデート

# pkg-static upgrade -f
# pkg bootstrap -f

アプリケーションを再構築するには

# portmaster -af

ソフトウェアのアップグレードが終わったら、最後にもう一度 freebsd-update を実行

# freebsd-update install

portsツリーの更新

# portsnap fetch update && portsdb -u

portsからインストールしたものをアップデート

# portmaster pathto/port

サードパーティーアプリの更新

ただしportsからインストールしたものはpkg lockしてから6)

# pkg upgrade -f

念の為再起動

# shutdown -r now

Bootloaderの更新

FreeBSD のブートローダ を更新するにはを参照

JailのUpgrade

# freebsd-update -b /jail/base -r 10.3-RELEASE upgrade

ただし、母艦側が10.3だとエラーなので、unameを環境変数でごまかす

# setenv UNAME_r 10.2-RELEASE

これで、Upgrade、install

# freebsd-update -b /jail/base -r 10.3-RELEASE upgrade
# freebsd-update -b /jail/base install

環境変数を戻して

# unsetenv UNAME_r 10.3-RELEASE

再度

# freebsd-update -b /jail/base install

作業ファイルの削除

作業ファイルが数百MBあるので消しておきます。7)

# rm -fr /var/db/freebsd-update/files

7.3以前

FreeBSD 7.3-RELEASEかそれ以前のFreeBSDからアップグレードする場合には、サードパーティアプリケーションをリビルドする必要があります。
アップデート後にサードパーティアプリケーションをインストールし、再びfreebsd-updateを実行して、古いライブラリを削除してください。

参考

1)
カーネル、カーネルモジュールに変更がなければ不要
2)
後ろにp1がついています
3)
unameとは違いインストールされているバージョン
4)
カスタムカーネルを使用している場合には、nextboot(8) を使って次回の再起動時のカーネルを、 /boot/GENERIC に設定します
5)
古い共有ライブラリとオブジェクトファイルを削除
6)
lockしたportsをアップグレードする場合、まずunlockしてからなので注意
7)
これを忘れると/varがあふれて寂しいことになります