原文: FAQ - MacPorts

FAQ

HOWTO セクション も併せてご参照ください。(外部リンク・英語)

一般的な質問

port のビルドに失敗します。

バグ報告をする前に、あなたの MacPorts 及び ports ツリーが最新のものかどうかを確認してください。

sudo port selfupdate

また、あなたの Xcode が最新のものかどうかについても確認してください。古い Xcode では ports が失敗することが知られています。

port をインストールしようとした時に、"C compiler cannot create executables" というエラーが出ます。

Xcode のインストールが必要です。X11SDK と Unix 開発環境も含まれます。

MacPorts はユニバーサル版ですか?

MacPorts は、Intel Mac と PowetPC ベースの Mac の両方で動作します。ですが、あなたがインストールした ports は、あなたが現在実行しているアーキテクチャ用にのみコンパイルされます。
これは、あなたが PowerPC Mac から Intel Mac へ移行して、移行アシスタントを用いてデータを新しいマシンにコピーするような場合に、新しいマシンですべての ports を Intel 用に再ビルドして、インストールしなおさなければならないことを意味します。
そうするよりは、すべての MacPorts を完全に消去して、最初からやり直す方が簡単でしょう。
以下の アンインストール方法 をご覧ください。ただし、必要な configuration ファイルは必ず保存しておいてください。

いくつかの ports では、ビルドする際に +universal variant を選択できます。MacPorts は PowerPC と Intel の両方で動作するユニバーサル・バイナリを作成します。
これは、近いうちに違う Mac に移行する予定がある場合や、外部ハードディスクに MacPorts をインストールして PowerPC ベースの Mac と Intel Mac の両方で使用する場合に役立ちます。
しかし今のところ、インストール中にエラーメッセージが出なかったとしても、+universal はすべての ports で正しく動作するわけではないので注意してください。

いくつかの ports は PowerPC Mac のみ、もしくは Intel Mac のみで動作します。
いくつかのケースでは、修正が必要なバグが存在します。
もし利用可能なソフトウェアに、より新しいバージョンがありましたら、それを port のメンテナにご報告ください。新しいバージョンでは、両方のアーキテクチャで正しく動作するかもしれません。
もしすでにあなたが利用している port が最新のバージョンのものでしたら、そのソフトウェアの開発者にバグ報告をしてください。そのソフトウェアはアップデートされる必要があるでしょう。
その他のケースでは、ソフトウェアが一方のプロセッサ・アーキテクチャ用に限定して作成されており、そのような場合は、もう一方のプロセッサ・アーキテクチャで利用できるようにするのは不可能でしょう。

+universal のサポートについてテストされた ports の一覧とその結果は Universal で確認できます。

どうして、/opt/local が MacPorts がデフォルトでインストールされる場所なのですか?

/opt/local が選択されたのは、他の様々なインストール先とかち合うのを避けるようにするためです (例えば、fink は /sw を同じ目的で利用します)。 /usr/local がまともな選択肢ではないことは、以下の理由によります。

  1. デフォルトの位置として /usr/local を見に行くソフトウェアがいくつかあります(特に Gnu のauto* tools です)。 これは、必要なときに容易には MacPorts を隔離できないということです。 *1
  2. /usr/local は通常、当該システムの管理者がそのシステムのためだけのアイテムをインストールするために予約されており、 システム外のポート・システムによって置き換えるには良くない選択肢です。
  3. gcc は、/usr/local を標準的なシステム・ディレクトリと考えており、そのために(少なくとも) 〔/usr/local 以下の〕include ディレクトリが、複数の include ディレクトリのうちの始めの方に出てこれなくなることになり、 更にこれによって、MacPorts がインストールしたアイテムが、 (別のバージョンが、/usr/X11R6 のようなどこか他の場所にインストールされている場合) それを必要としている他のアイテムにとって利用しづらくなってしまいます。 *2

どうやって MacPorts を削除、あるいはアンインストールするのですか?

通常の 'bash' シェルでは、Terminal から以下のコマンドを実行することで MacPorts を削除できます(${prefix} は、あなたが MacPorts をインストールしたディレクトリ、デフォルトでは /opt/local になります)。

sudo rm -rf ${prefix} \
/Applications/MacPorts \
/Applications/DarwinPorts \
/Library/Tcl/macports1.0 \
/Library/Tcl/darwinports1.0 \
/Library/LaunchDaemons/org.macports.* \
/Library/StartupItems/DarwinPortsStartup \
/Library/Receipts/MacPorts*.pkg \
/Library/Receipts/DarwinPorts*.pkg \
/etc/manpaths.d/macports \
/etc/paths.d/macports

tcsh などの異なるシェルを使用している場合は、上記をあなたのシェルに合ったシンタックスに変更する必要があります。

このコマンドによって、MacPorts そのものと共に、MacPorts を用いてインストールしたソフトウェアの全てが削除されてしまうことに注意してください。 また、これ〔削除されるもの〕には、インストールされたあらゆる ports の設定ファイルも含まれます。 もしそれらのファイルを取っておく必要がある場合は、rm の前にそれら(/opt/local/etc 以下にあるはずです)をバックアップしてください。

このコマンドは、合意されたディレクトリ・ツリーの外にインストールされたファイルを取り除きません。 そのため、他の場所に書き込む ports は、MacPorts をまとめて削除する前に、手動で削除*3 されなければなりません。こうしたportsには少なくとも xfig と transfig が含まれ、おそらく他の X11 ports も含まれるでしょう。

sudo port uninstall xfig
sudo port uninstall transfig

どうして、configure.cflags-append というエラーが出るのでしょうか?

port を初めて実行したときに、おそらく以下のエラーメッセージが出るでしょう。

unable to open port: invalid name "configure.cflags-append"

これは最近追加されたもので、あなたのインストールした MacPorts が最新のバージョンではないことを意味しています。これを解決するには、以下を実行して MacPorts を最新のバージョンにアップデートしてください。

sudo port selfupdate

${prefix}/var/macports/ 以下のフォルダは何ですか? どうしてそれらは沢山のスペースを占めているのですか?

man porthier は、〔${prefix}/var/macports/ にあるのは〕「MacPorts のランタイム・データ」と答えますが、それ以外の下位フォルダも含んでいます。

build
は、ports のビルド中に用いられ、通常は空のフォルダだけがあり、大したスペースは取っていません。ある port のビルド中には、 ${prefix}/var/macports/sources/rsync.macports.org/release/ports/<category>/<name>/work という対応するフォルダを示す soft link ができます。
distfiles
ビルドされた port それぞれのダウンロードされたソースがあり、 portclean --dist <port> によって削除できます
packages
インストールされた port それぞれのバイナリ・アーカイブを含んでいます。 これは、port clean --archive <port> <version>+<variant> で削除できます。 これらのファイルは、(例えばテストのために)まさしく同一の port を〔一旦〕アンインストールし、 後で再インストールする場合に役立ちます。 〔このような場合〕そのアーカイブの解凍のみが必要で、ビルドは一切実行されません。 もしこれらのアーカイブ〔機能〕がまったく不必要であれば、${prefix}/etc/ports/ports.conf において portarchivemode オプション〔を noにすること〕で、この機能を殺すことができます。
receipt
インストールされた port それぞれについての詳細情報、たとえば、 どのファイルがその port に属しているかが checksum と共に収められています。
software
インストールされたソフトウェアそのものが含まれます。 ある port がアクティベートされた場合、その ${prefix} フォルダ内にあるファイルは、 ここにある対応するファイルへのハードリンクとなります。 port uninstall <port> <version>+<variant> で、ここからそれが削除され、この port はもう利用できなくなります。
sources
rsync.macports.org/release/base という下位フォルダは、 MacPorts のソースそのもの(例えば、port(1) コマンドのためのソース)です。 port selfupdate によって、これは MacPorts の rsync server からアップデートされます。 rsync.macports.org/release/ports という下位フォルダは、 port のカテゴリそれぞれと、その中に ports そのもの(ここには、対応する Portfile とパッチがあります)を含んでいます。 port sync、あるいはまた port serlfupdate により、MacPorts の rsync server からアップデートされます。

Error: checksum (md5/sha1/rmd160) mismatch for port というエラーが出ました。どうすれば良いのですか?

MacPorts は、ダウンロードしたファイルが壊れたり改竄されていないことを保証するために それらのチェックサムを計算します。それぞれの Portfile は、その port がダウンロードする ファイルの(md5, sha1, あるいは rmd160 を用いた)チェックサムをリストにしています。 もし、ダウンロードされたファイルから計算されたチェックサムが portfile にリストされた ものと一致しないならば、すなわちダウンロードされたファイルはその port の設計者が その port を作成したときに使ったファイルではないということであり、MacPorts は インストール作業を中断します。

チェックサム・エラーが出たときには、最初に、sudo port sync で ports を アップデートするべきです―今度はその port をインストールできましたか? そうならば、 以前にだれかが同じチェックサム・エラーに出喰わして、既にそれを修正したということです。

もし、アップデートしてもダメならば、どうしてチェックサムの不一致があるのかを探し出すべきです。 可能性のある理由が幾つかあります。

  1. ファイルが壊れている。 もし、そのファイルが転送時に壊れた場合は、再度ダウンロード してください(port clean --dist <portname> and port install <portname>)。 もし、そのファイルがサーバ上で壊れている場合、そのファイルをどうしようもありません。 Trac にバグ報告をし、 それを port のメンテナにアサインしてください。 問題の解決については: もし他のミラーがある場合、その一つを試してください。また、 だれかが完全なファイルを持っていて、送ってくれるかを MacPortsMacPorts users' mailing list で尋ねることもできます。
  2. 開発者が"ステルス・アップグレード"をした。 大元の開発者が、MacPorts に知らせることなく、"ステルス・アップグレード"、 つまり彼らが配布するアーカイブの内容に変更を加え、しかしそのバージョン番号は変更しないということがあります。 おそらく、開発者は、別のアーカイブ・プログラムをつかって配布物を再パッケージしたか、 あるいはそこに含まれる文書にある typo(誤植)を直したり、正規のリリースとするほどではない マイナーな変更と考えられる変更を行なったかしたのでしょう。 この行為は、MacPorts や、パッケージのチェックサムを計算する 他の port システムに引き起こす困難のため推奨されるものではありません。 ソフトウェア開発者に、"ステルス・アップグレード"をしたことを確認してみてください。 もし、開発者と連絡が取れなければ、自分自身で"ステルス・アップグレード"が行なわれたかどうか判断してください。 インターネットで検索 して、 portfile 中のチェックサムに適合する古いバージョンの〔バージョン番号は同じだがより古い〕アーカイブを取得してください。 また、開発者のサイトで現在配布されているバージョンもダウンロードし、 両者を展開してその内容を比較してみてください(例えば、diff -r -u <old> <new>)。 もし、変更がマイナーで害のないもののようであるか、あるいは全く変更がないかした場合は、 portfile 内のチェックサムをアップデートしても安全であり、port のメインテナがその〔チェックサムの〕 変更を公式なものとするように、彼らにこのことを知らせるべきです。 もし、ステルス・アップグレードが為されたかどうかを判断できない場合は、 users' mailing list で助けを求めてください。
  3. ファイルが改竄されている。 開発者(あるいはミラー)によって配布されているアーカイブが正真正銘改竄されているということは、 おそらくあまりなさそうではあるけれども、理論的にはあり得ることです。 もし、あるハッカーが開発者(あるいミラー)のサーバを操作できるのならば、 そのハッカーが自分の選んだマルウェア(ウィルスやトロイの木馬、スパム送信プラットフォームなど) を含んだ改訂バージョンをアップロードすることは可能ですし、 そのようなソフトウェアをインストールしたい人はいないでしょう。 あなたは、上記と同様、アーカイブの改竄が為されたのかを開発者とコンタクトして、 あるいは古いアーカイブを入手してそれらを比較して、確認するべきです。 portの メンテナに連絡することもできますし、 users' mailing list に連絡することもできます。
  4. proxy があなたのリクエストをブロックしている。 いくつかのインターネット接続は proxy により保護されており、tar/zip ファイルのダウンロードを許可していなかったり、個人のコンピュータからは特別な許可なしではインターネットに接続できないことがあります。
    そのような場合、proxy は "拒否された" というシンプルなメッセージを(不正な 200 ステータスとともに)返し、MacPorts はファイルのダウンロードに失敗します。 このケースでは、ダウンロードファイルの内容の検証は終了されます。 このような場合は、ネットワーク管理者に相談してください。

MacPorts の GUI フロントエンドはどこにありますか?

いくつかの MacPorts GUI が開発されています。

  • PortAuthority は古くからあります。$20 のシェアウェアです。
  • Pallet は開発中の新しい GUI です。MacPortssudo port install pallet を実行してインストールすることができます。*4
  • Porticus はもう一つの現在開発中の新しい GUI です。

port selfupdate が実行できなかったり、Rsync サーバに接続を拒否されたら、どうすれば良いのですか?

最初に sudo port -d selfupdate を試して、すべてのエラーを表示させてください。もし Rsync サーバへの接続に失敗していたら、ファイヤーウォールか別のネットワーク制御ソフトにブロックされているかもしれません。PeerGuardian?*5 を実行している場合も、すべてのフィルタや rsync.macports.org に対しての例外の作成が無効とされます。

ファイヤーウォールを通過させられない場合、少し手間は掛かりますが、別の手段があります。

port list installed を実行すると、まったく同じバージョンの port が複数インストールされているのですが、なぜですか?

port list installed を使用すると、'list' コマンドベースで現在有効なバージョンの情報のみが結果として表示されるので、混乱することでしょう。例えば foo という port のバージョン 1 と 2 (2 が現在有効なバージョン)をインストールしていて list installed を実行すると、バージョン 2 のみが 2 度表示されます。

port list installed の代わりに、port installed を使用してください。実際にインストールされているバージョンが表示されます。

ソフトウェアに関する質問

PHP5 の port をインストールすると、Apache 2 を使っているのに、MacPorts は Apache 1.3 をインストールしようとします。どうすれば良いの?

"variants"を使ってください。port variants <portname>portname には当該 port が入ります)で、あなたが望むかもしれない差異をサポートする、利用可能な build variations がリストアップされます。例えば、PHP5 を Apche 2 と MySQL と共に使うよう インストールするには、port install php5 +apache2 +mysql とタイプします。

MacPorts の python に readline サポートを付加させるには、どうするの?

Python 24 に対しては、py-readline のportをインストールしてください。

MacPortsが、自前のライブラリでなくシステムのライブラリにリンクすることはあるの?

いいえ、MacPortsは自前のライブラリに固執します。

どうして、MacPortsは自前のライブラリを使っているの?

そうする理由は幾つかあります。第一に、そうすることで、portsの 異なるバージョンの Darwin/OS Xにわたる互換性が高まります。もし、例えばMacPortsのopenssl 0.9.8 に依存 すれば、ssl を必要とするあらゆるportを、〔Darwin/OS Xの様々なバージョンに〕インス トールされている可能性のあるあらゆるopensslに対して検証する必要がなくなります。 Appleのソフトウェアは、時々壊れていることがあります(例えば、opensslは古いバージョ ンのzlibと共にビルドされることを拒みますが、Appleは脆弱なバージョンのzlibの古いヘッ ダを出荷しました)。第三の理由は、最新版への追随性です。アップルは、例えば Python 2.4 ではなく2.3だけを扱っていますが、それでは動作しないソフトウェアもあり ます。こうした〔MacPortsが自前のライブラリを使うという〕振舞いの欠点は、また極小 さなものです。つまり、Pythonのインストールで10MBを消費することは、GB級ハードディ スクを持ち、また代わりに常に一貫性を得ることになるのなら、大したことではないでしょ う。

GNOMEのメニューが空っぽなんですが?

詳細情報は、このwikiの GNOMEのセクションを見 てください。*6

Portfileの開発およびメンテナンスに関する質問

他のportのある特定のvariants(例えば、"postgresql8 +server")への依存関係を持たせることはできますか?

できません。現状の依存関係エンジンは、「port X がport Yを必要とする」あるいは 「port X は、port Yの提供するあるファイルを必要とする」ということ以上、細かな指定 を操作することができません。エンジンの改造についての議論はずっとありますが(メー リングリストのアーカイブを参照)、また具体的な段階には至っていません。そのため、 もっとも有用なvariantsは、実際のところvariantsにすべきでなく、そのportに埋め込む 〔デフォルトで有効にする〕べきなのです。

ローカルなレポジトリをセットアップしたのに、どうしてportindexが機能しないの?

あなたのローカルなリポジトリは、portindexが機能するために、ひとつのカテゴリに入れ 子にしなくてはなりません。 文書はこの必要 性を反映するようアップデートされなければなりません。 *7

コミッタになるにはどういうプロセスがいるのですか?

プロセスは、他のあらゆるオープンソース・プロジェクトとほとんど全く一緒です。 MacPorts mailing listへの、より詳細な このemail を見てください。*8 あるいはまた、MacPortsへのコミット・アクセスが何を必要とするかについては、wikiの NewCommitersGuide を見てください。

ランタイム・エラー

あるvariant を使わないようにしたいのですが、portコマンドの適切な使用法が表示されるばかりです。

 port <command> <portname> -<variant>

というように使うと、このコマンドの中にあるダッシュは、あるオプションと解釈される でしょう。そのため、使用法のメッセージが表示されます。これは、ダブル・ダッシュで 回避する必要があります。

port <command> <portname> -- -<variant>

あるportをアンインストールしようとすると、port uninstall failed: invalid command name "portuninstall::uninstall" といったエラーが表示されます。何がいけないのでしょう?

これは、かつてインストールされた古いMacPortsの残滓―詳細には、 ${prefix}/share/darwinports/Tcl/port1.0/portuninstall.tclというファイルで、もはや MacPortsのコードには含まれていません―によって引き起こされる、既知のエラーです。 (${prefix}は、MacPortsを最初にインストールした際に選択されたpathに展開されます。)

しかしながら、(もっとも一般的にはport selfupdateを通じた)インフラの再インス トールでは、このファイルは削除されず、手動で介入する必要があります。

  rm -f ${prefix}/share/darwinports/Tcl/port1.0/portuninstall.tcl
  port -f selfupdate

このステップにより、はぐれたファイルが削除され、"selfupdate"によって為されるロー カルにある〔コードの〕コピーとMacPortsサーバ上のものとのリリース番 号の比較を無視して、インフラが強制的に再ビルドされます。

この回避法が問題を解決しない場合は、出来るだけ多くの情報とともに、 Mailinglistに報告し てください。

portuninstall.tcl を削除する前に最新のMacPortsを入手していることを確認してください。私もportsをアンインストールできないという同じ問題に出喰わし、まずsudo port selfupdateをしてMacPortsの最新版を入手し、それからそのtclファイルを削除しました。しかし、sudo port -f selfupdateをしたとき、Failed to initialize ports system, couldn't read file "/opt/local/share/darwinports/Tcl/port1.0/portuninstall.tcl": no such file or directoryというエラーが表示され、〔portコマンドが〕機能しなくなってしましました。*9


*1 MacPorts以外の方法でインストールしたソフトウェアと、MacPorts そのもの及び MacPorts によってインストールしたソフトの峻別が困難になるということ?
*2 MacPortsによってインストールされたアイテムに依存すべきものが、別の手段でインストールされたアイテムに依存してしまう。
*3 つまるところ、Beginning OS X にも書いてあるとおり、MacPorts の削除は sudo port deactivate active してからにするのが良い。
*4 試してみたのですが、インストールに失敗しました。2008/12/31 時点、MacPorts-1.7.0、Intel Mac、OS X 10.5.6 使用。
*5 IP レベルの通信ブロッカーソフトです。
*6 リンクは本家wikiに貼ってあります。
*7 現在はこの文書は閲覧できません。自前の Portfile の作り方・使い方を参照してください。
*8 既に閲覧できません。
*9 意味不明?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-28 (火) 01:10:36 (409d)