Ports/Packages

Packagesとは

Ports からインストールしたアプリケーションをアーカイブにまとめたものが Packages。アーカイブを展開すればインストールされる仕組み。

Ports で make

Ports で使える make のターゲット。

ターゲット 内容
fetch 必要なファイルを取得
extract 取得したファイルを展開
patch パッチを適用
build コンパイル
install インストール
deinstall アンインストール
package インストールを行ってからパッケージを作成する
clean 作業ディレクトリを削除
search key="key" キーワードで検索する
search name="name" 名前で検索する

取得したソースは /usr/ports/distfiles/ に置かれる。

インストールするとき

cd で目的のディレクトリに行き、make install clean する。Javaソースコードが入手できないので、なにやらメッセージが出るのでそれに従うらしい。

アンインストールするとき

cd で目的のディレクトリに行き、make deinstall する。しかし、今のバージョンと ports においてあるバージョンが同じでないと make deinstall ができないのが難点。この場合は pkg_delete を使うべし。

もし /usr/ports/INDEX-* がなかったら

ないはずはないけど、もしなければ、作る。

# cd /usr/ports
# make index

アプリの説明

/usr/ports/***/***/pkg-descr ファイルにアプリケーションの説明がある。

Packages ってどうやって使うのか

Packagesで使うコマンドはこんな感じ。

コマンド 内容
pkg_add アプリケーションパッケージをインストール
pkg_delete Ports/Packagesからインストールされたアプリをアンインストール
pkg_create Ports/Packagesからインストールされたアプリのパッケージ化
pkg_info Ports/Packagesからインストールされたアプリの情報を表示
pkg_version Ports/PackagesからインストールされたアプリをPortsツリーと比較しバージョンを表示
Packages でインストールしてみる
# pkg_add -r mozilla
  • r はインターネットから入手するという意味。
Packges でインストールしたアプリの一覧

/var/db/pkg/ の配下にあるディレクトリ名

Packages でアンインストールする

パッケージ名を指定、あるいはパスを指定して削除する

# pkg_delete mozilla-1.7.7,2
# pkg_delete /var/db/pkg/mozilla-1.7.7,2

他のアプリから要求されている場合、アンインストールができない。強制的にアンインストールする場合は、pkg_delete の後に -f をつける。

sysinstall から Packages をインストール/アンインストールする

sysinstallを起動し、Configure → Packages → HTTP(FTP) と進み必要なパッケージを選択する。後はインストール/アンインストールしてくれる。

Ports/Packages のアップグレード

コマンド portupgrade を使ってアップグレードします。手順は3つ。

  1. Portsツリーを最新の状態にアップデート
  2. インストールされているアプリとのバージョンの差を調べる
  3. 古いアプリは portupgrade でアップデートする
Portsツリーを最新にする

これからもよく使うので便利なように /etc/make.conf を書き直す

SUP_UPDATE=              yes
SUP=                     /usr/local/bin/cvsup
SUPFLAGS=                -g -L 2
SUPHOST=                 cvsup.jp.FreeBSD.org  ←適宜修正
PORTSSUPFILE=            /usr/share/examples/cvsup/ports-supfile
MASTER_SITE_OVERRIDE?=ftp://ftp.jp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR} ←適宜修正

その後 cvsup をインストールする

# cd /usr/ports/net/cvsup-without-gui/
# make install clean

準備はOK。実際に Ports ツリーを最新にしてみる。

# cd /usr/ports/
# make update
------------------------------------------------------------------------
>>> Running /usr/local/bin/cvsup
------------------------------------------------------------------------
Parsing supfile "/usr/share/examples/cvsup/ports-supfile"
Connecting to cvsup.jp.FreeBSD.org
....
Updating collection ports-all/cvs
...
#
# make fetchindex
#
バージョンのチェック

Portsツリーを最新にしたら pkg_version でインストール済みのバージョンと Portsツリーとを比較する。

# pkg_version -v
bsdiff-4.2                             =  up-to-date with port
expat-1.95.8                           <  needs updating (port has 1.95.8_3)
...

このうち "<" のものをアップグレードすればよい。

アップグレード

portupgrade コマンドはアプリの依存関係を壊すことなくアップグレードしてくれます。
まずは portupgrade のインストール。

# cd /usr/ports/sysutils/portupgrade/
# make install clean

アップグレードしたアプリに依存したアプリも再帰的にインストールする (-r)

# portupgrade -r expat-1.95.8 freetype2-2.1.9 ...
...
#

インストールされているアプリをすべてアップグレードする(すごいな)

# portupgrade -a
...
#

バージョンが更新されていなくても -f で再インストール可能

# portupgrade -f firefox-1.0.3,1

とここまで ports を最新にする方法を書いたけど、portsnap というものがあるらしい。