FreeBSD QandA 443

FreeBSD QandA

Q. ports をインストールしようとして make を実行すると、
      fetch: hogehoge-1.1.tar.gz: ......
      >> Couldn't fetch it - please try to retrieve this
      >> port manually into /usr/ports/distfiles/ and try agein.
   となり、インストールできません。

A. Makefile の中に書かれているソースファイルを、ネットワークを使ってダウ
   ンロードしようとしたが失敗した、というエラーメッセージです。この原因は
   主に、ファイアウォール等が存在するか、ファイルが指定された URL に無い
   事が考えられます。

   A1. ファイアウォール

     あなたのマシンがファイアウォール (firewall) の中にあるために、外部へ
     のアクセスに特定の制限が設けられている場合があります。その制限はファ
     イアウォールの構成と設定などにより異なりますが、fetch(1) の設定を変
     えることで回避できるかもしれません。注意点として FreeBSD 4.1-RELEASE 
     から、fetch(1)pkg_add(1)fetch(3) ベースに書き直されています
     ので、それまでの ftpio(3) ベースと仕様が異なる点があることです。

     1. passive モードで FTP する時
       # env FTP_PASSIVE_MODE=ON make

     2. HTTP proxy サーバを利用する時
       # env HTTP_PROXY="http://hostname[:port]" make  (libfetch ベース)
       # env HTTP_PROXY="hostname[:port]" make         (libftpio ベース)

       FTP_PROXY が未設定で HTTP_PROXY が設定されていると、`ftp://...' と
       いう URL でも HTTP proxy サーバ経由でダウンロードします。

     3. FTP proxy サーバを利用する時
       # env FTP_PROXY="ftp://hostname[:port]" make    (libfetch ベース)
       # env FTP_PROXY="hostname[:port]" make          (libftpio ベース)

     hostname[:port] の部分は、例えば proxy.foo.bar.co.jp:8080 などと指定
     します。FTP proxy と HTTP proxy を併用する場合は、両方の環境変数を設
     定してあげます。もっと凝った設定が必要なら、詳細はそれぞれの man ペー
     ジを読んでください。

     上記のように実行してうまくいったら、~/.cshrc や ~/.profile に環境変
     数の設定を行なうか、login.conf(5) に設定してやればシステム全体に効果
     があります。

   A2. ファイルが指定された URL に無い

     あなたの使っている ports のバージョンが古いため、既に配布ファイルが
     置いてないのかもしれません。例えば、ports は hogehoge-1.1.tar.gz を
     ダウンロードしようとしたけれど、指定された場所には最新バージョンの 
     hogehoge-1.2.tar.gz しか置いてない、ということが考えられます。

     そのときはどこかからファイルを取ってきて、/usr/ports/distfiles/ に
     置き、改めて make を行なってください。ファイルを
       LYCOS FTP Search サイト <URL:[BROKEN!] http://ftpsearch.lycos.com/>
     などで探し、
       # cd /usr/ports/distfiles; fetch ftp://foo.bar.com/pub/hogehoge-1.1.tar.gz
     でダウンロードするのが簡単です。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。