遅れに遅れた9.1-RELEASEがついに。



もともとの進捗が悪いうえに、freebsd.orgに[不正アクセスのあったこと](http://www.freebsd.org/news/2012-compromise.html)も遅れをさらに助長した。



加えて後者の要因は、遅れまくった9.1のリリースにあたってもpackageをほとんど揃えられない事態を引き起こしていて、ああやっと出たと思った俺含む一部のユーザを困惑させた訳である。



2013/5/15追記packagesがやっと復活した。<br /> [[FreeBSD-Announce] Binary Packages Are Available Again](http://lists.freebsd.org/pipermail/freebsd-announce/2013-May/001476.html)<br /> 追記ここまで








というのも。



FreeBSDは、apacheやらMySQLやらから、Perlなどの言語系までの、ベースシステムに含まれないソフトウェアを別途インストールする必要がある。



それにはpackage、つまりコンパイル済みバイナリを使うか、portsから自前コンパイルするかのおおよそ二通り。








で、OSメジャーバージョン更新などのイベントでは全ソフトウェアも更新が必要だ。



こういうときにPackageがあるととっても楽なわけだ。



すべて自前コンパイルするとえらく時間がかかるから。



そこで今回の件のように、ごくごく一部のpackageしかありません。欲しけりゃDVDイメージ落としてくださいねと言われるととっても困るわけ。








ただまあ、俺の場合9.0からのアップグレードなので、全更新は必須ではないのだけど、長く使っているうちにぐちゃぐちゃになるportsの依存関係(名前が変わったとか場所が変わったとか)をスッキリさせたいので自発的にやってる。








で、公式ページにある通り、packageのリリース目処は立っていないようなのであきらめて全コンパイルする。



(と思ったけど、一部9-stableのpackageを使った)



以下はそのログ。



[公式ページの指示](http://www.freebsd.org/releases/9.1R/installation.html)に従って作業。



準備








インストール済みpackageを「更新」するといろいろと面倒な事が起こるので、いったん全削除して再インストールする。



そのためにインストール済みpackageリストを作っておき、全削除。



(全削除するとsudoも使えなくなるから、suしてから)
$ pkg_info > pkg.list.txt
$ su
Password:
# pkg_info | cut -f1 -d" " | xargs -n1 pkg_delete -f
手順1. ファイルダウンロード



必要なファイルをダウンロードする。
# freebsd-update -r 9.1-RELEASE upgrade
Looking up update3.freebsd.org mirrors... none found.
Fetching metadata signature for 9.0-RELEASE from update3.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/generic src/src world/base world/games world/lib32
The following components of FreeBSD do not seem to be installed:
world/doc
Does this look reasonable (y/n)?y
yと答える。
Fetching metadata signature for 9.1-RELEASE from update3.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 9.0-RELEASE for merging... done.
Preparing to download files... done.
Fetching 37716 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150....160....170....180....190....200....210....220....230....240....250....260....270....280....290....300....310....320....330....340....350....360....370....380....390....400....410....420....430....440....450....460....470....480....490....500....510....520....530....540....550....560....570....580....590....600....610....620....630....640....650....660....670....680....690....700....710...
<snip>
.37560....37570....37580....37590....37600....37610....37620....37630....37640....37650....37660....37670....37680....37690....37700....37710... done.
Applying patches...Fetching 1758 files... done.
Attempting to automatically merge changes in files... done.
The following changes, which occurred between FreeBSD 9.0-RELEASE and
FreeBSD 9.1-RELEASE have been merged into /etc/defaults/periodic.conf:
/var/yp/Makefile.dist
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
手順2. Kernel差し替えと再起動








インストール。



一回目はカーネルの差し替え。ここから緊張するところ。



これがうまく行ったら、次はユーザランドの更新だが、まずは。
# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
再起動前。
# shutdown -r now
手順3. ユーザランド更新と再起動
# freebsd-update install
Installing updates...
# shutdown -r now
手順4. unameの確認と...
# uname -a
FreeBSD sylph 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
で、ここからpackageの再インストール...
pkg_add -r ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/shells/bash-4.2.37.tbz
pkg_add -r ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/security/sudo-1.8.6.p3_1.tbz
pkg_add -r ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9-stable/All/perl-5.12.4_4.tbz
以降はガチコンパイル。