通常みなさんがpoetsをアップグレードするときは、cvsupを使うのではないだろうか?しかし、俺のやり方はportsを丸ごとwgetしちまって解凍してストアーする。そして、古いportsを全消しみたいな方法をとっている。 portsの全アップグレードを行ってからportupgradeコマンドを使って既存のportsを最新の物にする。 そうしないと、意味なし。
1.portsの全取っ替え
■ その一
bash2.05b# cd /usr
bash2.05b# wget ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
↑実際は一行で!
bash2.05b# rm -rf ports
古いPortsをまとめて削除。
bash2.05b# tar zxvf ports.tar.gz -C /usr
Portsを解凍してストアーする。
■ その二
FreeBSD R6.0には、portsnapと言うコマンドが新たに追加された。この機能はかなり強力でportsの全取っ替えをコマンドで全てやってくれる。
portsnapをインストールする。
root@main# pkg_add -r portsnap
設定ファイルportsnap.confコピーする。
root@main# cd /usr/local/etc
root@main# cp portsnap.conf.sample portsnap.conf
圧縮されてるportsをサイトからゲットする。
root@main# portsnap fetch
圧縮されてるportsを解凍してportsツリーを作る。
root@main# portsnap extract
2.portupgradeのインスコ
bash2.05b# cd ports/sysutils/portupgrade
新しいportsコレクションでportupgradeをリニューアルしまひょ川 ̄∠ ̄川 フフフ
bash2.05b# make deinstall
パッケージをアンインストールする。
bash2.05b# make install clean
パッケージを再インストールする。
bash2.05b# rehash
コマンドキャシュテーブルをフラッシュする。これをやってプログラムを見つけやすくする。
3.portupgradeを実際に使ってみる
まず初めに、念のためパッケージの依存関係を確認する。依存関係がおかしいとアップグレードが正しくできない。
bash2.05b# pkgdb -F
依存関係がおかしいモジュールが出力されるのでそのモジュールをもう一度再インスコする。例えば、dns/bind9の依存関係がおかしいとしたら、
bash2.05b# portinstall dns/bind9
で再インストールできる。
bash2.05b# portsdb -uU
これを実行するとportsのデータベースを更新してくれる。 ただし、portsを最新のものにアップデートしなければ、これをやっても意味なし。なので注意すること。 言っておくが、これマシンのパフォーマンスにもよるけどかなり時間がかかるので覚悟した方が良い(;-_-;)
bash2.05b# portupgrade [モジュール名]
自動的にアップデート開始する。
これもportsが沢山インストされていればそれなりに時間がかかる。 終わったら、portversionで最新のモジュールになっているか?確認する。
bash2.05b# portupgrade -a
現在セットアップされているモジュールに全てに対して、自動アップデートを行う。 そして、以前から「make install」をやって「make clean」を実行しないでほって置いたとすると、
bash2.05b# portsclean -C
で全て掃除する。
bash2.05b# portsclean -D
distfilesに貯まってるソースを消去してくれる。
重要:portsnapを使う場合のportsアップグレード手順は、通常赤の文字の部分の手順でやればOK!
以上
コメント