FreeBSD Daily Topics
2011年12月22日 独立性の高い軽量ports管理ツール「portmaster」
ports
- Independent ports tool "portmaster"
日本ではPorts Collectionをベースとしたアプリケーション管理にportupgrade (ports-mgmt/
portupgrade)が使われることが多いと思います。Ports Collectionベースの管理ではportmaster (ports-mgmt/ portmaster) もよく使われます。portmasterの特徴は次のとおりです。 - ベースシステムの機能とシェルスクリプト
(/bin/ sh) で開発されており, ほかのライブラリやツールに依存せず独立性が高い - 開発が活発に継続されている
なんといってもシェルスクリプトで開発され依存が少ないのが最大のポイントです。portupgradeはRubyで開発されているので,
どうしてもRubyをインストールする必要があります。調べてみるとわかると思いますが, portupgradeを使うためだけにrubyがインストールされている環境は少なくないと見られます。このため, ベースシステムにrubyをインストールしたくない場合などはportmasterを選択することになります。インストールされるサードパーティアプリやライブラリを最小限に抑えたい場合などに便利です。 portupgradeとportmasterはデフォルトの動作が少々異なります。portupgradeは自動的に処理を進めますが,
portmasterはユーザにインタラクションを求める傾向があります。portupgradeのように自動的に処理を進めるにはオプションを指定する必要があります。もっともよく使われると思われる操作に対して, portupgradeとportmaster双方の操作方法を紹介します。 portsnap fetch updateなどを実施してports treeを更新したら,
次のようにインストールされているアプリやライブラリをアップデートします。 portupgrade -a portmaster -D --no-confirm -a
「-D」 はダウンロードしたソースコードを削除しない指定, 「--no-confirm」 はユーザにインタラクションを求めない指定です。試しにこの2つのオプションを指定しないでportmasterを実行してみるとわかりますが, portmasterはユーザにy/ nのアクションを求めるようになります。逆に, インタラクティブに作業したい場合にはこれらオプションを外せば良いということになります。 BATCH=yesを指定してコンフィグ画面を表示せずすべて自動的に処理させるというのもよくやるテクニックです
(この場合オプションは/etc/ make. confで事前に指定します)。portmasterはこの指定だけではダメで, 「-G」 も追加する必要があります。ページャがlessなどになっているとそこでインタラクションが発生するものが出てきますので, 次のようにすればほぼ自動で処理を進めることができるようになります。 env BATCH=yes portupgrade -a env BATCH=yes PAGER=cat portmaster -D -G --no-confirm -a
再インストールが必要なケース,
依存するライブラリが変更されたため再構築が必要なケースなどではportupgradeでは 「-f」 を指定しますが, portmasterでは不要です。デフォルトの動作がアップデートが必要か否かに関係なくビルド作業をするようになっています。 portupgrade -f アプリケーション名 portmaster -D --no-confirm アプリケーション名
ライブラリとそのライブラリに依存するアプリケーションなどを再帰的にすべて再構築するには次のように操作します。なお,
portmasterでは 「-r」 を指定すると必ず最初にインタラクションが発生します。 portupgrade -f -r ライブラリ名 portmaster -D --no-confirm -r ライブラリ名
portupgradeには不要なビルドディレクトリ
「work」 などを削除するためのportscleanといったコマンドが用意されていますが, portmasterにはその機能はありません。同様の作業をしたい場合, 次のようにfind(1)コマンドを実行すれば良いでしょう。 find /usr/
ports -type d -name work -depth 3 -exec rm -r '{}' ';' portupgradeを使ってできる操作はだいたいportmasterでもできますので,
状況に応じてどちらのツールを採用するか検討できると覚えておくと良いのではないかと思います。 - ベースシステムの機能とシェルスクリプト
バックナンバー
FreeBSD Daily Topics
- 2011年12月28日 VirtualBox 4.1.8をインストールする方法
- 2011年12月26日 NFSv4クライアントがロックした場合の問題解決方法例
- 2011年12月22日 独立性の高い軽量ports管理ツール「portmaster」
- 2011年12月21日 次世代パッケージ管理システムpkgngの特徴と使用例の紹介
- 2011年12月20日 FreeBSD次世代パッケージ管理システム「pkgng」
- 2011年12月19日 FreeBSD NFSv4.1クライアント,基本実装パッチ(9系,current系)登場
- 2011年12月16日 FreeBSD VirtIO-Net / VirtualBoxベンチマーク結果 - 19倍の高速化確認
- 2011年12月15日 VirtualBox上のFreeBSDでVirtIOネットワークを有効にする方法
- 2011年12月14日 VirtIOの提供する機能 - virtio(4),virtio_pci(4),virtio_blk(4),virtio_balloon(4),if_vtnet(4)
- 2011年12月13日 VirtIO,FreeBSD 10-CURRENTに登場