FreeBSD におけるパッケージのインストール方法や管理方法の一例.
主にFreeBSD ハンドブック第4章を参考します.


FreeBSD のパッケージ管理

FreeBSD では、主に2つのパッケージ管理の方法があって
  • packages
  • ports

という2つの方法があります。

packages は、すでにコンパイルされたパッケージをインストールする形なのであまり時間がかからない反面、最新のバージョンを得られない可能性があります。

ports は、ソースをダウンロードしてコンパイルする形になるので時間はかかりますが、最新のバージョンを得られて高度な編集ができます(ソースに手を加えることができる)。あと、アップデートが比較的簡単に思えます。

今回は、ports で管理する方法を掲載していきます。


ports ツリーの作成

もっとも正確で信頼できる情報はFreeBSD ハンドブックに記載されています。
URL: http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/ports-using.html


最初にやるべきことで、結構時間がかかるのが ports ツリーの作成です。
portsnap がすでに存在すれば以下の3行で ports ツリーが構成されます。

# portsnap fetch
# portsnap extract
# portsnap update

あるかないか分らないときは、以下のコマンドで存在するか確認してみる。

$ which portsnap
/usr/sbin/portsnap    # 存在するとこのような返答がくる

存在しない場合は、

# pkg_add -r portsnap

あたりでportsnap をインストールしましょう。
最初は、ツリーが存在しないためpackages からインストールする必要があります。

また、FreeBSD そのものを更新したい、いわゆる make world を行いたいんだという人は
CVSup(csup) で FreeBSD のソースもダウンロードしましょう。
CVSupは、

# pkg_add -r cvsup-without-gui

からインストールすることができます。


実際に ports から適当な物をインストールしてみる

インストール方法もまた、make を使う滂滂と portinstall を使う方法があるのですが、
今回は、portinstall の方を掲載します。実際には、

# portinstall <ほしいパッケージのパス>

でインストールできます。

まずは、参考になるページ

東風記録帳: http://d.hatena.ne.jp/ton-boo/20060414
AirKnights: http://iris.homeunix.net/yayoi/freebsd/inst/portupgrade.asp
恐らく上記ページの方が参考になるでしょう。

ツリーの更新

portsnap では以下の3つの手順で ports ツリーを作りました。

# portsnap fetch
# portsnap extract
# portsnap update

portsnap は、最初の一回は上記の3つの作業が必要ですが、
2回目以降(ツリー作成後)は、extract オプションを省いた以下2つの命令でツリーの更新が行えます。

# portsnap fetch
# portsnap update

適当な物をインストールする前に必ずツリーの更新を行いましょう。

ツリーの更新後は、

# portsdb -Fu

で、ports ツリーのデータベースを更新しておきます。

# portsdb -Uu

と方法もありますが、これは時間がかかるので余裕がある方は-Uu オプションの方がよいでしょう。
各オプションは、
-F は、オフィシャルから INDEX ファイルを取得する
-u は、INDEX.db を更新または作成する
-U は、INDEX ファイルを更新または作成する
と言う意味みたいです。

この手順は、portsnap を用いても必要だと思っていましたが、
必要ないみたいです。ports のバージョンやらがおかしくなったときは
portsdb を使って正しいデータベースを作成すると解決します。



目的のパッケージを探す

ツリーの更新を行った後、適当な物をインストールするには、ports ツリーの根に行ってどのパッケージが存在するか確認する必要があります。
デフォルトでは、/usr/ports/ がports ツリーのルートかと思います。

$ cd /usr/ports/

これで移動できたところで

$ pwd
/usr/ports    # 現在地
$ make search key=<キーワード>

とコマンドすると全力でキーワードに従ったパッケージを検索してくれます。
また、パッケージ名が分っているときは、

$ find . | grep <パッケージ名>

と言う方法もあります。実感としては、 make search の方が速いと感じました。
では、実際にエディタのVim を探すときは以下のようにします

$ make search key=vim  
Port:   agide-0.124_2
Path:   /usr/ports/devel/agide
... 以下略

結果は、上記のようにかなり長い返答が帰ってきます。そのため、

$ make search key=vim  | less -X

とページャーを介して見る方がよいでしょう。
目的のVim の情報はこのように出力されるでしょう。

Port:   vim-7.2.166_1
Path:   /usr/ports/editors/vim
Info:   Vi "workalike", with many additional features
Maint:  obrien@FreeBSD.org
...以下略

これでVim の場所が/usr/ports/editors/vim と分りました。
さて、もう1つの方法では、

$ find . | grep vim
./devel/agide/files/check_vim
./editors/vim
./editors/vim6+ruby
./editors/vim5
./editors/vim6
./japanese/jvim3
... 以下略

とこのような返答が帰ってきてこれも、目的の場所が判明します。

Vim の場所は、/usr/ports/editors/vim でした。
パスのから分るように、/usr/ports 以下のディレクトリは各パッケージの種類とパッケージ名を表しています。

実際にインストール

何はともあれ vim の格納場所は、/usr/ports/editors/vim です。
というわけで、いよいよインストールするときは、

# portinstall editors/vim

とすれば全行程を自動でVim をインストールしてくれます。非常に簡単です。

pkgdb が壊れる

ときたま、パッケージデータベースが壊れることがある。
そんなときは、

# pkgdb -F

で解決を試みるとよい。
目安箱バナー