授業資料/第06回 の変更点

Top / 授業資料 / 第06回

#contents

* OS 全体のアップデート [#l632d982]

カーネルからシステム,  アプリケーションに至るまで一般の unix 系 OS では非常に多くのソフトウェアが含まれている.
これらのソフトウェアのセキュリティ上の脆弱性が日々発見および悪用されている昨今,脆弱性についての情報を半自動的に入手する方法や細かいシステムアップデートの仕方を知らないとセキュリティを固めることは不可能である.
(後日これから様々な daemon をインストールする前に)こうしたシステム更新について学んでおいた方がよい.

そこで,FreeBSD の場合((残念ながら,unix 全体等で通用する汎用的な仕組みはまだない. なぜなら,セキュリティの問題がこんなに深刻になったのは実はつい近年のことであり,各種 OS が "分派" したのはそれよりも過去だからである. セキュリティ問題が深刻でなかった時代には OS/Software のアップデートやパッチ当てという作業の頻度は今よりも格段に低かったため,場当たり的な方法でもそう問題ではなかった.))のこうしたアップデートについて,ある程度一般的なことを学習する.

** FreeBSD のバージョンを確認する [#g8c97220]

まず FreeBSD のバージョン違いにはどのような意味があるのかざっと知っておこう.

まず,
  uname -v
としてみよう. すると皆の今のマシンの状態では

>  FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC

などと表示される. この第二項目の "7.0-RELEASE" がバージョンを表している.
&ref(./warning.png); ただし,uname コマンドの出力は古かったりウソをついたりする可能性があるので,より正しく /usr/src/sys/conf/newvers.sh の REVISION= という部分と BRANCH= という部分をチェックして確かめておこう((というのも,uname はコンパイルされないと更新されないし,しかも,その出力内容は更新時に管理者によって自由に設定できてしまうのだ.)).

これらのバージョンは,FreeBSD が公式にサポートしているシステム群全体に対してどのような状態であるかを示している.
この "7.0-RELEASE" のうち,最初の数字二つがバージョン番号(revision)で,最初の一つがメジャー,二つ目がマイナー番号などと呼ばれる((一般にメジャーが大きければそちらが,同じならマイナーの大きな方がより新しい)). 
そして,最後のハイフン以降が branch と呼ばれ,そのバージョンの「現在の状況」を表している.
branch にはおおよそ次のようなものがある.

: current | 開発中,最前線にあることを意味する. 最新の機能てんこもりではあるが,変更はしょっちゅうだし,バグも多い. コンパイルできないこともままある. 内容は「入手した日時で」ぜんぜん違う((よって,例えば同じ "7.0-current" と言っても入手した時により内容が違うので,内容の詳細に基づかないと人と話が通じない.)).
: stable | 安定して使える状況であることを意味する. current でさんざん試験された機能が統合され,安定性とセキュリティ確保が目的の保守がされている. 内容は「入手した日時で」違う.
: release | stable の中でも特に安定性とセキュリティのために注意深く試験, 保守されたもので,FreeBSD の利用には一般にこの版が推奨される(もちろん stable 版を常に更新しつつ使ってもよい). 内容は入手日時に関係なく基本的に「固定」されている. 

また,release 版では特に「セキュリティのためだけに最小限の変更を行った」バージョン違いもきちんと記述される.
例えば "7.0-RELEASE-p5" などと表記され,これは 7.0-RELEASE にパッチが 5回適用されたバージョンであることを意味する.
現在はこの数字がいくつになっているべきなのかは, [[FreeBSD Security Information:http://www.freebsd.org/ja/security/]](http://www.freebsd.org/ja/security/) などをみて,セキュリティ勧告(FreeBSD-SA-* というやつ)がその Release が公開されてからいくつあるかを数えればよい.

これらの branch の違いは(ある程度使ってみても実感できるが)後述のアップデート方法の違いからも推察されるので,よくわからないというものはその部分まで読み進めればよい.

*** 実習 &ref(./notes.png); [#yd712b4e]
現状の OS のバージョンをきちんと調べ,記録しておけ.
また,今現在は FreeBSD の release branch の最新のものはいくつであるはずか調べよ([[FreeBSD Security Information:http://www.freebsd.org/ja/security/]](http://www.freebsd.org/ja/security/) を探して読んでみよということ)

** FreeBSD のシステムアップデートの方法 [#w2e4e385]

後の説明のために,FreeBSD のシステムのアップデートの方法を先に述べておこう.
これには主に以下のようなものがある.

: 再インストール | 要するに新規インストール. 他に手段がないときの最終手段. アップデートであまりにも変化が大きいときはこの方法が安全ではある. Windows 等と違って FreeBSD では設定ファイルのほとんどがテキストファイルなので, 設定を引き継ぎやすいのがせめてものなぐさめか.
: プログラムソースを更新し,コンパイルしてシステムを入れ替える | ソースからバイナリをその都度作るためかなり汎用性は高いが,時間も手間も結構かかる. 少し前までは発見された(セキュリティ)脆弱性に対応するには事実上この方法しかなかった((面倒なんだこれが)). ソースの更新には "cvsup" を用いるのが一般的. ちなみに,この方法は,コンパイルに使うコマンドから俗に "make world" と言われる((ただし,実際に "make world" としていたのは昔の話. 今は実際には "make buildworld; make buildkernel; make installkernel; make installworld" とする方法が推奨されている.)). なんだかんだ言ってもこの方法を使えないと困ることもあるかと思われる. 詳細は [[ハンドブック:http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html]] を参照すべし.
: sysinstall を用いる | 新しいバージョンのインストールディスクで起動してsysinstall を用いる方法. 隣り合った release 間でしか使えないと思っておいた方がよいが,簡単で楽.
: 特殊なツールを用いる | release バージョン間においては,公式/非公式に特別なアップデートツールが提供されることが多い. これを用いると非常に簡単にアップデートが可能だが,これも適用対象は非常に限定されており汎用性は低い.
: freebsd-update を用いる | これは一種のバイナリアップデートで release 版を,同じ release 版の最新のセキュリティパッチが上がったものに修正してくれるものである.
日々のセキュリティ対策の負荷を大きく下げてくれる嬉しいシステムで,今一番のお奨めだ. ただし,主に release 版にしか使えない((最近のバージョンは stable 版にも適用可能ということになってはいるが必ずうまく行くわけではないようだ)). ただし,ports 関係までは面倒見てくれないので,ports 関係については自分で考えないといけない.

参考のために,いくつかの資料を示しておこう.

*** cvsup コマンド [#d98a7342]
ソースからコンパイルする,という方法をとるばあい,準備に必要なコマンドだ.
何をしてくれるかというと,FreeBSD でシステムを再構築するために必要なソースを更新するコマンドである.
かつては良く使われたコマンドだが,portsnap と freebsd-udpate が使えるようになってからは通常の管理者はあまり使わなくなったのではないだろうか.
というわけで,以下の説明は読んでおくだけでよい.

まず,(使う場合は)入っていなければ ports からサクッとインストールしておく(インストールするのはGUI 不要な "cvsup-without-gui" にしておこう).
例えば,あとは 7.0-Release 内での最新に揃えるためならば /etc/cvsupfile を次のようにする((阪大からはやはり cvsup4.jp.FreeBSD.org が一番近い.これは fastest_cvsup というコマンドで確かめられる. )).

>  *default  host=cvsup4.jp.FreeBSD.org
>  *default  base=/var/db
>  *default  prefix=/usr
>  *default  release=cvs delete use-rel-suffix
>  
>  *default  tag=RELENG_7_0
>  src-all
>  
>  *default tag=.
>  doc-all

こうしておいて,
  nohup /usr/local/bin/cvsup -g -L 2 /etc/cvsupfile
などとすれば,(上の場合は)システムソースとドキュメントが全て更新される.
cvsup で ports を更新することもできるが,ports に関しては portsnap の方が優秀なので(圧倒的に速い),portsnap に任せてしまおう.
// ただし,何も工夫しないでこのまま使うと初回時にやたらと時間を喰うことになる(ports の新旧比較に時間がかかるため((これを防ぐには,ftp4.jp.freebsd.org/pub/FreeBSD/ports/ports.tar.gz を直接持ってきて事前に展開しておくか,portsnap を使うのがよい)) ).

*** make world 系について [#oe736b51]
ソースからコンパイルする方法を一般にこうよぶ.
これも今となってはあまり頻繁に使わない方法だろうから,簡単に述べておこう.

まず,make world の手続きの詳細については [[ハンドブック:http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html]] を見ればよいので,ポイントのみ書いておく.
管理者見習いにとって,システムをコンパイルして入れ替えるこの方法で一番問題になるのは,主に /etc 以下にある設定ファイルの引継ぎだろう((具体的には,mergemaster コマンドが「どうしますか」と全て聞いてくる)).
理想を言えば「何を聞かれているか完全に分かって作業する」ことになるが,どうしても困った場合は,
- 自分で触った記憶のあるファイル … 新旧二つを比べて手で修正することにする
- 自分で触ったことのないファイル … 新しい方を採用

という方針でなんとかなるだろう.
なお,作業所用時間であるが(Pentium 4, 3GHz 程度の古めの PC で),
- 最も時間のかかる buildworld で1時間半程度
- 他はあわせて 1時間弱という程度か

という感じである.

*** freebsd-update について(実習込み) &ref(./notes.png);[#od236e2d]
簡単,スピーディ,半自動といいところが揃っていて今一番のお勧めである freebsd-update についてである.
これを半自動で使いこなせば,特に労せずにFreeBSD のコアシステムのセキュリティパッチを常にほぼ最新に保つことが可能だ.
以下,詳しく見ていこう.

なにはともあれ,まずはマニュアルを読んでみよう.
マニュアルによるとおおよそ5つの使い方がある. 
簡単に説明しておくと,
: freebsd-update fetch | 必要なバイナリ差分を取ってくる.
: freebsd-update cron | cron を使って定期的に fetch を行うにはこのモードで.
: freebsd-update install | 取ってきた差分をインストールする.
: freebsd-update upgrade | OS の Release 間バージョンアップに使う. 例えば,7.0-Release から 7.1-Release にあげるなど.
: freebsd-update rollback | freebsd-update した結果を元に戻す.

というところだ.
upgrade や rollback は普段は使わないだろうから,普段使う残り三つについて説明しよう.

まず,バイナリ差分を取ってくるには 手動の fetch と,cron で自動的に行う cron の二通りがある.
試しに手動の
  freebsd-update fetch
を行ってみよう.
皆の今の状態だと,

>   Looking up update.FreeBSD.org mirrors... 1 mirrors found.
>   Fetching public key from update1.FreeBSD.org... done.
>   Fetching metadata signature for 7.0-RELEASE from update1.FreeBSD.org... done.
>   Fetching metadata index... done.
>   Fetching 2 metadata files... done.
>   Inspecting system... done.
>   Preparing to download files... done.
>   Fetching 43 patches.....10....20....30....40. done.
>   Applying patches... done.
>   
>   The following files will be updated as part of updating to 7.0-RELEASE-p6:
>   /boot/kernel/if_faith.ko
>   /boot/kernel/if_faith.ko.symbols
>   /boot/kernel/if_fwip.ko
>   /boot/kernel/if_fwip.ko.symbols
>   /boot/kernel/if_stf.ko
>   /boot/kernel/if_stf.ko.symbols
>   /boot/kernel/ip_mroute.ko
>   /boot/kernel/ip_mroute.ko.symbols
>   /boot/kernel/ipfw.ko
>   /boot/kernel/ipfw.ko.symbols
>   /boot/kernel/kernel
>   /boot/kernel/kernel.symbols
>   /boot/kernel/pf.ko
>   /boot/kernel/pf.ko.symbols
>   /boot/kernel/random.ko
>   /boot/kernel/random.ko.symbols
>   /usr/bin/dig
>   /usr/bin/host
>   /usr/bin/nslookup
>   /usr/bin/nsupdate
>   /usr/include/netinet/tcp.h
>   /usr/include/netinet6/in6.h
>   /usr/include/netinet6/nd6.h
>   /usr/lib/libssh.a
>   /usr/lib/libssh.so.4
>   /usr/lib/libssh_p.a
>   /usr/sbin/dnssec-signzone
>   /usr/sbin/lwresd
>   /usr/sbin/named
>   /usr/sbin/named-checkconf
>   /usr/sbin/named-checkzone
>   /usr/sbin/named-compilezone
>   /usr/sbin/sshd
>   /usr/src/sys/amd64/amd64/exception.S
>   /usr/src/sys/conf/newvers.sh
>   /usr/src/sys/dev/random/randomdev.c
>   /usr/src/sys/dev/random/randomdev_soft.c
>   /usr/src/sys/kern/vfs_mount.c
>   /usr/src/sys/netinet/tcp.h
>   /usr/src/sys/netinet/tcp_output.c
>   /usr/src/sys/netinet6/icmp6.c
>   /usr/src/sys/netinet6/in6.h
>   /usr/src/sys/netinet6/in6_proto.c
>   /usr/src/sys/netinet6/nd6.h
>   /usr/src/sys/netinet6/nd6_nbr.c

という感じで,(皆の今の素の 7.0-Release から)7.0-Release patch6 までバージョンアップできるよ,その分は以下の通りで,取ってきたよ,という表示が出るだろう.

つぎに,この「バイナリ差分の取得」を自動化しておこう.
それにはマニュアルにも記述があるように,/etc/crontab に

>  0  3  *  *  *  root  /usr/sbin/freebsd-update cron

などと書きこんでおけばよい
&ref(./warning.png); crontab では項目間は原則として「タブ」で区切ることに注意せよ. 最後の update と cron の間は項目間「ではない」ので,スペースで区切ることにも注意せよ.

こうしておけば,上の場合は毎日午前3時に freebsd-update fetch と手動で作業したのと同じ効果が得られる上,「もし新しいパッチがあったら」root 宛にその旨のメールを出してくれるのだ.
つまり,こうしておけば「自分でチェックしなくても新しいパッチがあるかどうか,毎日の情報が分かる」のである((もちろん,root 宛のメールを受け取った人だけだが)).
上でみたように [[FreeBSD Security Information:http://www.freebsd.org/ja/security/]](http://www.freebsd.org/ja/security/) に日々目を通
してチェックしようとすると大変なことを思えば,これがいかに楽かわかるだろう.

&ref(./notes.png); というわけでこの設定も実際にやっておこう.
(実際には,午前 3時 1分に cron で動く他のものがあるので,少し時間を空けて午前 3時30分などに設定しておいた方がよい)

そして,こうして取得したバイナリ差分の適用だが,(情報等を眺めて問題ないと思ったら)手動で
  freebsd-update install
とするだけである(この後念の為にリブートしておくとよい). お気楽だ.  

なお,システムライブラリを静的にリンクしているなどの ports/package がある場合は,それらも更新しないと意味がない.
//これについてはその度にそうしたメッセージが出てくる(はず).

&ref(./notes.png); さて,バイナリ差分の適用作業も実際にやってみよう.
そして,(リブート後) FreeBSD のバージョンを再度確認して,変化を確認しておこう.
もしうまく作業できれば,uname -v の表記は

> FreeBSD 7.0-RELEASE-p6 #0: Mon Nov 24 06:43:33 UTC 2008     root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC

などとなり,"-p6" が加わって patch 6 になったことがわかる.

// *** 実習 [#n2adc1d2]
// cvsup をインストールせよ.
// また,[[ハンドブック:http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/makeworld.html]] をざっと読んで,ソースからコンパイルしてインストールする際の作業の流れを掴んでおけ(いつかやる羽目になるだろうから).

*** FreeBSD システムアップデートの方法の主な構図 [#qfa9ba87]
以上でバージョンとアップデートの関係がざっとわかっただろうから,
それらを大ざっぱな図として以下に示す(ただし,100% この図の通りだというわけではない. 特にアップデートの方法は「優れたツールが開発されて楽になっていく傾向が強い」ので,アップデートが必要なときに調べ直すと嬉しい発見も多いだろう).
&ref(./freebsd-update-figure.png, 65%, "FreeBSD のシステムアップデートの主な構図");
&br;
これをみると分かるが,release branch に留まっていれば何かと楽である.
逆に,労をいとわなければ "make world" によってほとんどのケースで対応が可能なことも分かる.

//*** 実習 [#k90a5847]
//freebsd-update を用いて,自分のシステムをアップデートせよ((腕に自信のある者,チャレンジ魂のある者は代りに "make world" (ソース更新 & コンパイル)で行ってもよい.ただし今日中に帰れないと思う…)).
//うまく行ったならば,その後バージョンを調べてどうなったか記録せよ.
//また,freebsd-update を cron から実行できるように設定せよ(前回の実習を思い出せ).

** ports/packages のアップデートとセキュリティについて [#f2423204]

さて,OS のコアシステムについてセキュリティパッチの情報をほぼ最新にかつ自動的に得つつ,簡単にパッチ当てができるようになったので,今度は ports/packages で似たようなことができないか考えよう.
そのためには,

+ 既にインストールした ports/packages の脆弱性情報を自動的に得る仕組み
+ ソフトのバージョンアップ時に必要になる ports 情報を常に最新に保つ仕組み
+ ソフトのバージョンアップを実際に簡単に行う仕組み

が必要だ((結構沢山ある. /usr/ports/ports-mgmt/ 以下は基本的にこうしたツール類である)).
これらで「簡単」とか「自動的に」という部分は,実際にはとても重要だ.
というのも,これらが難しかったり大変だったりすると作業が行われなくなりがちで,結局,脆弱性を放置したままということになりかねないからだ.

//ports/packages については,udpate は原理的には ports ソースを更新してから各々のソフトウェアを update ないしは再インストールすればよい.
//とはいえ,これは時間がかかるし,ソフトウェア同士の依存関係に沿って更新が必要なことを考えると負担が大きすぎる((ソースを最新にしておくこと自体は意味があるにしても)).
//そこで,ports/packages の状況を管理し,適切にアップデートを補助するツールがいくつかあるので,これらを上手に使おう.

以下に,これらの仕組みについて具体的に記すと,

+ 既にインストールしてある ports/packages の脆弱性情報は,portaudit で知ることができる(cron でも使えるので定期的にできる)
+ ports 情報は portsnap を cron で用いることで常に最新の状態にしておける
+ portupgrade を用いて,脆弱性のみつかった package/ports を更新して安全な最新バージョンに更新する

となる. 
以下,少し詳しく述べよう.
(portsnap と portupgrade については既に簡単な説明がしてあるが,補足込みでここで再度説明しておく).

*** portaudit [#td763c98]
脆弱性報告のあるインストール済み ports/package を見つけてくれるツールだ.
もし入っていなければインストールしよう.

手動での使い方は
  portaudit -adF
とする. 

&ref(./notes.png); 実際にやってみよう.
意外に多くの脆弱性報告があり,驚くだろう.
ただし,何回かダブって報告されるものもあるので,皆の今の状況だと実際には 10〜 個ほどのものだろう((もちろんここから頑張って,脆弱性報告数ゼロを目指すのだ)).

さて,portaudit の自動化だが,実は portaudit をインストールした時点ですでに自動化が完了している.
具体的には,インストール時に /usr/local/etc/periodic/security/410.portaudit という名前のファイルが作られ,これが cron で periodic daily が実行される度に実行されるようになっているのだ.
そして,その結果もやはり root 宛にメールで届くようになっている.
であるから,portaudit をインストールするだけで,ports/packages の脆弱性情報については OK だ.

&ref(./notes.png); 確かに /usr/local/etc/periodic/security/410.portaudit というファイルがあることを確認しておこう.
余力のある者は,そのファイルの中身も見ておこう.

*** portsnap [#x9fea222]
既に何度も使っている ports ソースを更新するためのツール.
cvsup より速いのでお勧め((また,portsnap 「以外」のツールでの ports更新を行った際には Index更新のために portsdb -uU としておくことが(念の為にも)必要だが,これは 20分程度かかりかねない処理であり,苦痛である.しかし,portsdb で更新している限りにおいては Index も一緒に更新されるので(というか持ってくる),portsdb -uU とする必要がないのも利点である.)).

利用し始め,つまり初回のみは
  portsnap fetch
  portsnap extract
とする. ただし,/usr/ports 以下は真新しくなってしまうはずなので,重要なデータは置いておかないこと.
そして,二回目以降は
  portsnap fetch
  portsnap update
とする.
&ref(./warning.png); 手動でやるなら常にこの組み合わせ(fetch, update)で覚えておけばよい.

半自動化するには cron 化する.
具体的には,例えば

>  0 4 * * * root /usr/sbin/portsnap cron

などと /etc/crontab に書いておけば((書き方はこれまで同様)),一日一回,portsnap fetch をしたのと同じ効果がある.

マニュアルからもわかるように portsnap update の自動化についてはあまりお勧めされていないが((理由はマニュアルを読め)),
どうしてもというならば portsnap -I update としておく.
(まあ,実際に何かのソフトを port でインストールするか udpate する時に手動で portsnap udpate すればよいので,これは大した手間ではない)

*** portupgrade [#xa9b87d1]
既にインストールされている ports/packages をアップグレードするツール(とその親戚). 
これ自身が便利な上,これをインストールするとついでに portinstall や portversionコマンドがインストールされて使えるようになるため,とにかくインストールしておこう.
// ただし,X window system をこのツールの対象にいれておくと巨大すぎるうえにトラブリやすいので外しておいた方がよい様に思うし,バックアップファイルも大きくなりそうだ.
これをインストールした後は,port のインストールは
  portinstall ソフト名称
とするだけでよいようになるし,アップグレードも
  portupgrade ソフト名称
だけでよいのでとても楽になる.


*** 実習 &ref(./notes.png);[#i3a8ce5d]
portsnap, portupgrade, portaudit のうち,インストールされていないものがあればインストールせよ.

それから portaudit で脆弱性があると報告されているソフトウェアに対し,なるべく全てを portupgrade を用いてバージョンアップして脆弱性を無くすよう努力してみよ.
要するに,該当するものを portupgrade でコツコツバージョンアップし,portaudit をかけたときに脆弱性報告リストに出ないようにするのだ.
きちんとこの作業をしておけば,

>  >portaudit -adF
>  auditfile.tbz                                 100% of   51 kB   84 kBps
>  New database installed.
>  Database created: 2008年 11月26日 水曜日 21時40分09秒 JST
>  &color(red){0}; problem(s) in your installed packages found.

という感じに,問題のあるパッケージがない状態にできて一安心だ.

&ref(./warning.png); ただし,最新のものにも脆弱性が報告されている場合は,portupgrade はその旨のメッセージを出して停止してしまう.
まあこれはこれで正しい仕様だと思うので(オプションで作業を強制することもできる),その場合はセキュリティ情報を良く調べて「何が危ないのか」「運用でどうカバーするか」「なんならアンインストールしたほうが良いのか」の判断をしたうえで,運用でカバーできる等ならば該当の ports が新しくなるまでしばらく待とう((脆弱性にもいくつかあり,運用形態によっては自分の環境では該当しないものなどもある)).

// 次に cvsup もしくは portsnap を行ない, ports ソースを最新のものにしておけ.
// ただし,だいぶ時間がかかるだろうから,コマンドを仕掛けて帰ってよろしい.

** ちなみに,システムも ports も全てをきちんと update することを考えると… [#fc0ffb74]

全てというならば,まずはどれくらい「最新でないもの」があるかをリストアップしてみよう. 
それには,portupgrade を「実際には何もするな」というオプション付きで実行して,対象数だけ見てみればよい.
具体的には,例えば 「emacs 以外をチェックする」のであれば
 portupgrade -na -x 'emacs*'
とすればよい(-n が「実際には作業するな」 -a が「全て」 -x は「以下を除外」という指定である).

&ref(./notes.png); 実際に以下のようにして調べてみよう.

>  >portupgrade -na
>  --->  Reading default options: -v -L /var/log/ports/%s::%s.log
>  --->  Session started at: Wed, 26 Nov 2008 21:53:39 +0900
>  [Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 625 packages found (-0 +1) . done]
>     …略…
>          - deskutils/deskbar-applet (deskbar-applet-2.22.3.1)
>          - mail/evolution-exchange (evolution-exchange-2.22.3)
>          - x11/gnome2 (gnome2-2.22.3)
>  --->  Packages processed: &color(red){81}; done, 542 ignored, 2 skipped and 0 failed
>  --->  Session ended at: Wed, 26 Nov 2008 22:01:10 +0900 (consumed 00:07:30)

などという表示になって,上の場合,81 個の package が「古い」ことがわかる(("done"となっているが,実際には作業されていない)).

&ref(./notes.png); 余力が有り余っている者は packages/ports で入っているソフトをなるべく新しいものに置き換えよ.
これを頑張ると,portupgrade -na を行うと
>  > portupgrade -na
>  --->  Reading default options: -v -L /var/log/ports/%s::%s.log
>  --->  Session started at: Fri, 28 Nov 2008 22:00:00 +0900
>  ** None has been installed or upgraded.
>  --->  Session ended at: Fri, 28 Nov 2008 22:04:27 +0900 (consumed 00:04:27)

などとなって,全て更新されたことが確認できる.


* レポート [#qee2d59a]
FreeBSD 7.1-Release が公開されたならば((2008.10.13 に公開アナウンスが始まる予定だが多少遅れているようだ…)),今のシステムをそれにアップデートするにはどうしたらよいか,この資料だけでなくweb で調べるなどして((6.1-Release から 6.2-Release へのアップデートツールなどを探してみれば推測ができよう)),なるべく詳細に調べよ.
また,本日行った作業について報告せよ.
もちろん各自の

+ 所属(学部,学科)
+ 学籍番号
+ 学年
+ 氏名
+ 日時
+ 肝心のレポート内容(得た知見,作業について気づいたこと等)

を書くのを忘れないように.

*** about Icons [#v3d7ae04]
Some icons in this page are downloadable at [[ICONFINDER:http://www.iconfinder.net/]].
The "note" icon designed by [[Marco Martin:http://www.notmart.org/]] is distributed with the LGPL licence
and the "warning" icon designed by [[Alexandre Moore:http://nuovext.pwsp.net/]] with the GPL licence.