「MacPorts」の版間の差分

提供: MacWiki
移動: 案内検索
(MacPorts とは?)
(MacPorts 1.5 に準拠)
行10: 行10:
  
 
2005 年 4 月 28 日にバージョン 1.0 がリリースされ、その当時でおよそ 2500 本のソフトウェア (ports) が導入可能でした。
 
2005 年 4 月 28 日にバージョン 1.0 がリリースされ、その当時でおよそ 2500 本のソフトウェア (ports) が導入可能でした。
最新版は 2007 年 3 26 日にリリースされたバージョン 1.4 で、3400 以上の ports が利用可能となっています。
+
最新版は 2007 年 7 9 日にリリースされたバージョン 1.5 で、4100 以上の ports が利用可能となっています。
  
 
[[MacPorts]] を使って新しくソフトウェアをインストールするには、ターミナル上で「sudo port install パッケージ名」などと入力します。
 
[[MacPorts]] を使って新しくソフトウェアをインストールするには、ターミナル上で「sudo port install パッケージ名」などと入力します。
行60: 行60:
  
 
  $ port variants pTeX
 
  $ port variants pTeX
 
  
 
=== 構造化された Portfile ===
 
=== 構造化された Portfile ===
行89: 行88:
 
*はこべにっき - [[MacPorts]]でステキなUNIXツールをインストール
 
*はこべにっき - [[MacPorts]]でステキなUNIXツールをインストール
 
**http://d.hatena.ne.jp/hakobe932/20061208/1165646618
 
**http://d.hatena.ne.jp/hakobe932/20061208/1165646618
 
  
 
== Q & A ==
 
== Q & A ==
行112: 行110:
  
 
一概には言えませんが、
 
一概には言えませんが、
3000+ というパッケージの総数だけを見てそのように判断されているのでしたら、
+
4000+ というパッケージの総数だけを見てそのように判断されているのでしたら、
 
まずその間違った先入観を先に捨てる必要があるでしょう。
 
まずその間違った先入観を先に捨てる必要があるでしょう。
  
行124: 行122:
 
たった一つの Portfile から導入できるようになっています。
 
たった一つの Portfile から導入できるようになっています。
  
{| border="1" cellpadding="10"
+
{| border="1"
 
|-
 
|-
 
|qt3
 
|qt3
行214: 行212:
 
*GUI によるパッケージ管理ソフトPort Authority(シェアウェア)もあります。
 
*GUI によるパッケージ管理ソフトPort Authority(シェアウェア)もあります。
 
**http://dpgui.sourceforge.net/
 
**http://dpgui.sourceforge.net/
 
  
 
== トラブルシューティング ==
 
== トラブルシューティング ==
行266: 行263:
 
   #endif
 
   #endif
  
*基本的なところですが、このパッチの使い方がわかりません。/opt/local/var/db/dports/sources/rsync.rsync.darwinports.org_dpupdate_dports/devel/subversion/files/ に置いて Port を編集すれば良いのでしょうか... 今回の件は、ちょっと根が深そうなので、LANG=... で誤魔化せばそれで良いと思っています。(ただ、この対策は FAQ に加えるべき)- ぜ
+
*基本的なところですが、このパッチの使い方がわかりません。/opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/subversion/files/ に置いて Port を編集すれば良いのでしょうか... 今回の件は、ちょっと根が深そうなので、LANG=... で誤魔化せばそれで良いと思っています。(ただ、この対策は FAQ に加えるべき)- ぜ
  
 
*その方法でも構いませんが、よりアドホックに済ます方法もあります。sudo port patch subversion をおこなうと、
 
*その方法でも構いませんが、よりアドホックに済ます方法もあります。sudo port patch subversion をおこなうと、
${worksrcpath} (/opt/local/var/db/dports/sources/rsync.rsync.darwinports.org_dpupdate_dports/devel/subversion/work/subversion-1.4.3) 以下にソースが展開され、標準のパッチがあればそれらが適用された状態で停止します。このとき手動でソースツリーに変更を加えて構いません。その後、sudo port install subversion するとインストールまで自動で進みます。patch フェーズで一旦停止というこの方法は、FreeBSD の ports collection などでも同様に有効です。-たちゃな
+
${worksrcpath} (/opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/subversion/work/subversion-1.4.3) 以下にソースが展開され、標準のパッチがあればそれらが適用された状態で停止します。このとき手動でソースツリーに変更を加えて構いません。その後、sudo port install subversion するとインストールまで自動で進みます。patch フェーズで一旦停止というこの方法は、FreeBSD の ports collection などでも同様に有効です。-たちゃな
  
 
関連チケット
 
関連チケット
行285: 行282:
 
**http://www.forever5yearsold.net/archives/11
 
**http://www.forever5yearsold.net/archives/11
 
**>Fink と [[MacPorts]] の両方を使ってたのですが、Fink いらないやと思って rm -rf /sw とかしたところ...
 
**>Fink と [[MacPorts]] の両方を使ってたのですが、Fink いらないやと思って rm -rf /sw とかしたところ...
 
  
 
== 関連サイト ==
 
== 関連サイト ==

2007年7月11日 (水) 00:35時点における版

MacPorts とは?

MacPorts <http://www.macports.org/> は MacOSX 上で利用可能なパッケージシステムの一つで、 主に UNIX 向けに開発されたオープンソース・ソフトウェアを手軽にインストールすることができます。 OpenDarwin プロジェクトの一部として 2002 年より始められ、 Landon Fuller, Kevin Van Vechten, Jordan Hubbard といった Apple inc. の従業員も多数参加しています。

以前は DarwinPorts と呼ばれていましたが、OpenDarwin プロジェクトの休止に伴い、MacPorts と改称(2006 年 8 月~)されました。 そのため、一部の配布物にはまだ DarwinPorts という表記が残っていますが、これらは全く同じものを指します。

2005 年 4 月 28 日にバージョン 1.0 がリリースされ、その当時でおよそ 2500 本のソフトウェア (ports) が導入可能でした。 最新版は 2007 年 7 月 9 日にリリースされたバージョン 1.5 で、4100 以上の ports が利用可能となっています。

MacPorts を使って新しくソフトウェアをインストールするには、ターミナル上で「sudo port install パッケージ名」などと入力します。 これによりアーカイブのダウンロード、展開、パッチの適用、コンフィグ、ビルドといった各段階を経て、 指定したソフトウェアのインストールが行われます。 このとき、他のパッケージに対する依存関係があれば、自動的にそれらの必要となるパッケージもインストールされます。

MacPorts の導入方法に関しては、以下のページを参考にしてください。

MacPorts の特徴

MacPorts は以下のような特徴を持つ、先進的なパッケージシステムです。

variants のサポート

従来使われてきたパッケージシステムの多くは、 ソフトウェアのパッケージ化担当者が事前に設定した画一的な仕様でしか ソフトウェアをインストールすることができませんでした。

対して MacPorts では variants と呼ばれる、 ユーザが任意に選択可能なオプションが設けられており、 ソフトウェアの設定をインストール時に選択できるようになっています。

具体的な例を挙げるならば、 たとえば Fink の ImageMagick は jpeg2000 をサポートしておらず、 info ファイルを直接書き換えることでしかこれを有効にする術はありません。

$ fink install ImageMagick (←jpeg2000 の使えない単一バージョンとしてしかインストールされない)

これに対して MacPortsImageMagick では、 "+jpeg2" という variant をインストール時に指定することにより、 jpeg2000 の読み書きが可能な ImageMagick を導入できます。

$ sudo port install ImageMagick +jpeg2

さらに pTeX (ptetex3) などでは、複数の variants の指定が可能です。

$ sudo port install pTeX +euc +babel +motif

このように MacPorts は variants の機能により、 パッケージシステムの枠内から逸脱することなく、 利用者に対して最大限の選択肢の提供を可能としています。

なお、指定できる variants の種類は、次のようにして調べることができます。 各 Ports で事前に用意されていない variants は指定できません。

$ port variants pTeX

構造化された Portfile

MacPorts では、ソフトウェアのインストール手順は fetch, extract, patch, configure, build, destroot, install, activate の各フェーズからなる 一連のシークエンスとして表現されます。

それぞれのフェーズの前と後には、さらに pre-* と post-* のサブフェーズが用意されており、 ソフトウェアのインストール方法が記された Portfile には、 これら各々のフェーズにおいて行うべき処理がブロック構造の形で記述されます。

また、Portfile は tclsh 上で動作するソースコードでもあるため、その中で if {} else {}, foreach {} などの制御構造や変数を用いることも可能です。

MacPorts の Portfile には構造化プログラミングを可能とするための機構が備わっており、 可読性・保守性に優れているといえます。 万一、利用者の側で Portfile を新規作成したり、既存のものを書き換えたりする必要が生じたとしても、その作業は比較的容易です。

port コマンドの使い方

以下のページが参考になります。

Q & A

MacPorts は FreeBSD の ports を移植したもの?

いいえ。MacPorts は FreeBSD の ports collection を参考にしていますが、 システムとしては全く別物です。 たとえば、FreeBSD の ports は makefile として実現されているため、拡張性に乏しい面もあります。 対して MacPorts では殆どが tcl により記述されており、 Portfile 中で柔軟な処理を行うことができます。

MacPorts は MacOSX 専用?

いいえ。MacPorts は MacOSX 専用のパッケージシステムではなく、 他の UNIX-like システム、たとえば *BSD や Linux でも動作するように作られています。

  • Mar 29, 2007 追記。jkh によると、クロスプラットフォーム性の追究に関しては、これ以上おこなわれないそうです。"Mac"Ports への名称変更や、プラットフォーム依存の機能追加(e.g. trace mode)、Mac 以外のプラットフォームでは実際使われていないという状況などを鑑みると、妥当な判断でしょう。

MacPorts では用意されているソフトウェアが少ない?

一概には言えませんが、 4000+ というパッケージの総数だけを見てそのように判断されているのでしたら、 まずその間違った先入観を先に捨てる必要があるでしょう。

前に述べた通り、MacPorts には variants のサポートがありますので、 他のパッケージシステムでは複数に分割される場合でも、 一つの port としてまとめられていることがあります。 また、原則として一つのソフトウェアにつき一つの port が対応するため、 パッケージの総数は常に少な目に見積られる傾向があります。

具体的な例を示しますと、たとえば Fink における qt3 パッケージは以下のように細分化されていますが、MacPorts ではこれらのパッケージを全て含めたものが、 たった一つの Portfile から導入できるようになっています。

qt3 Cross-Platform GUI application framework
qt3-bin Cross-Platform GUI application framework.
qt3-designer Cross-Platform GUI application framework
qt3-dev Cross-Platform GUI application framework
qt3-doc Cross-Platform GUI application framework
qt3-linguist Cross-Platform GUI application framework
qt3-mysql Cross-Platform GUI application framework (MySQL Plugin)
qt3-postgresql Cross-Platform GUI application framework (PostgreSQL Plugin)
qt3-shlibs Cross-Platform GUI application framework

結局のところ、考慮の基準とすべきものはパッケージの総数ではなく、

  • 自分の使いたいアプリケーションが用意されているかどうか
  • 万一用意されていなくとも、新規に ports 化することが容易かどうか
  • 既存 ports を基に、新しい variants を容易に作り出せるかどうか

ではないでしょうか。

Intel Mac では 50% 程のパッケージがインストールに失敗する?

この記事はハードウェアへの依存度が高い特殊なソフトウェアばかりをピックアップしていますので、あまり参考になりません。

darwinports.com は MacPorts (DarwinPorts) プロジェクトのサイト?

いいえ。darwinports.com は MacPorts (DarwinPorts) プロジェクトとは無関係のサイトです。 掲載されている情報が不正確であったり、古かったりする場合があります。 正確な情報を得るため、 www.darwinports.org をブックマークするようにしてください。

darwinports.com is not the official DarwinPorts Web Site,
nor is it a mirror of the Official DarwinPorts Web Site.
There is no relationship between the DarwinPorts Project
and darwinports.com.

The information you may have been presented with on
darwinports.com may be incorrect or outdated and
is not maintained by the DarwinPorts Project.

For the most accurate information about DarwinPorts,
please bookmark this site, http://www.darwinports.org.

なお、この件の詳細に関しては、以下のスレッドが参考になるでしょう。

MacPorts を再インストールしたい

MacPorts でアップグレードを繰り返していった場合、 ライブラリとそれに依存するコマンドのバージョンの不整合が生じて、 コマンドが動作しなくなることがあります。 こういう場合は、一度 MacPorts 関連ディレクトリ(/opt/local と /Application/MacPorts)を丸ごと削除/待避してから、 再インストールし直すと良いでしょう。

  • そのやりかたでは駄目です。/opt ディレクトリ外にファイルをインストールする ports が若干存在しますから。下記ページにも書いてあるように、sudo port deactivate installed してから /opt を削除するようにしてください。-たちゃな

ptex が bash に依存しているのはなぜ?

ptetex のビルドプロセスが bash を要求するからです。/bin/sh は OS 差があるので、(土村さんが)安全策をとったということでしょう。

  • 特記すべき程の事柄ではないですよね…。-たちゃな

その他

トラブルシューティング

port selfupdate / sync に失敗する

MacPorts は、ファイルの取得に rsync プロトコルを利用しているため、 LAN / ファイアーウォールの設定によっては、port selftupdate や port sync に失敗することがあります。

例えば、下は -v オプションで詳細ログを出力した場合の結果です。

$ sudo /opt/local/bin/port -v selfupdate
Synchronizing from rsync://rsync.darwinports.org/dpupdate/dports
rsync: failed to connect to rsync.darwinports.org: Operation timed out (60)
rsync error: error in socket IO (code 10) at /SourceCache/rsync/rsync-24/rsync/clientserver.c(94)
Error: /opt/local/bin/port: selfupdate failed: Couldn't sync dports tree: sync failed doing rsync

こういう場合は、次のようにすれば、Ports ファイルを更新することができます。

  • 1)LAN 管理者に相談して、rsync ポートの利用を許可してもらう
  • 2)rsync ポートが閉じられていない別のネットワークに移動する
  • 3)svn で ports tree を 取得する
    • MacPorts 上での sync/selfupdate コマンドではなく、svn コマンドを使って直接 Ports ファイルを更新する
  • 4)rsync の通信をトンネリングする

Intel Mac で subversion のメッセージが文字化けする

おそらく APR まわりの設定がおかしいのが原因です。対処法は未定(メンテナーと交渉中 → 興味なさそう)。 環境変数 LANG=ja_JP.UTF-8 を設定すると正しく日本語のメッセージが表示される一方、 LANG を設定していない素の OS X では文字化けが発生します。

$ svn
使用方法を知りたいときは 'svn help' と打ってください。
$ unset LANG
$ svn
?\228?\189?\191?\231?\148?\168?\230?\150?\185?\230?\179?\149?\227?\130?\146?\231?\159?\165?\227?\130?\138?\227?\129?\159?\227?\129?\132?\227?\129?\168?\227?\129?\141?\227?\129?\175 'svn help' ?\227?\129?\168?\230?\137?\147?\227?\129?\163?\227?\129?\166?\227?\129?\143?\227?\129?\160?\227?\129?\149?\227?\129?\132?\227?\128?\130
$ uname -a
Darwin pc192168000058.local.network 8.8.1 Darwin Kernel Version 8.8.1: Mon Sep 25 19:42:00 PDT 2006; root:xnu-792.13.8.obj~1/RELEASE_I386 i386 i386
  • gettext 周りはよく知らないのですが、どうしてもこの問題を回避したい場合には以下のパッチが有効かも知れません。おそらく、内部エンコードを明示的に UTF-8 にすると、きちんとフォールバックが働かないことがあるのでしょう。(もう少し調べてみないことには、確かなことは言えませんが、gettext の不具合かな?)-たちゃな
--- subversion/libsvn_subr/nls.c.orig   2006-02-16 06:30:49.000000000 +0900
+++ subversion/libsvn_subr/nls.c        2007-01-30 02:25:37.000000000 +0900
@@ -119,7 +119,7 @@
 #else
   bindtextdomain(PACKAGE_NAME, SVN_LOCALE_DIR);
 #ifdef HAVE_BIND_TEXTDOMAIN_CODESET
-  bind_textdomain_codeset(PACKAGE_NAME, "UTF-8");
+  //bind_textdomain_codeset(PACKAGE_NAME, "UTF-8");
 #endif
 #endif
 #endif
  • 基本的なところですが、このパッチの使い方がわかりません。/opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/subversion/files/ に置いて Port を編集すれば良いのでしょうか... 今回の件は、ちょっと根が深そうなので、LANG=... で誤魔化せばそれで良いと思っています。(ただ、この対策は FAQ に加えるべき)- ぜ
  • その方法でも構いませんが、よりアドホックに済ます方法もあります。sudo port patch subversion をおこなうと、

${worksrcpath} (/opt/local/var/macports/sources/rsync.macports.org/release/ports/devel/subversion/work/subversion-1.4.3) 以下にソースが展開され、標準のパッチがあればそれらが適用された状態で停止します。このとき手動でソースツリーに変更を加えて構いません。その後、sudo port install subversion するとインストールまで自動で進みます。patch フェーズで一旦停止というこの方法は、FreeBSD の ports collection などでも同様に有効です。-たちゃな

関連チケット

XFree86 のインストールに失敗する

  • Q. XFree86 のインストール(「sudo port install XFree86」)に失敗します。
  • A. XFree86 を自前でビルドするのは推奨されていません。Apple's X11 をインストールするようにしてください。10.5 Leopard では X11 がデフォルトインストールされるらしいので、この混乱もおさまるのではないかと思いますが。

他のパッケージシステムを削除したところ MacPorts の動作がおかしくなった

  • forever 5 years old blog: MacPorts 再インストール

関連サイト

その他、参考になりそうなサイトがあれば自由に追加してください。

Wiki内の関連ページ