製品レビュー
Microsoft Windows Services for UNIX 3.0
日本語版

5.wgetの移植

泉祐介+デジタルアドバンテージ
2002/12/13


 いま述べたとおり、wgetは一種のダウンロード・ツールである。引数にURLを指定して、その場所にあるファイルをダウンロードするのが基本的な使用方法だ。これ以外にも、あらかじめテキスト・ファイルに複数のURLを記述して、これをダウンロードするファイル指定として使うこともできる。wgetの利点としては、コマンドライン・オプションや設定ファイルによりダウンロード方法を細かく指定可能、コマンドライン・ベースであるためシェル・スクリプト(スクリプト言語としてのシェルで記述されたプログラム)との相性がよい、などがあり、UNIXユーザーの間で広く一般に利用されている。

 このwgetはGNUプロジェクトのプログラムであるため、GNUのミラー・サイトを始めとして、さまざまなところで入手可能である。今回は、Ring Server(ftp:/ftp.ring.gr.jp/pub/GNU/)からファイルを入手した。ここでは、原稿を執筆した時点(2002年12月)で最新版となるバージョン1.8.2(wget-1.8.2.tar.gz)をコンパイルすることにする。

 コンパイルにあたっては、後でディレクトリが増えすぎて困ることのないように、コンパイル専用のディレクトリを作成して、そこでコンパイルするようにした方がよいだろう。例えば、以下のようにする(今回は「build」という名前のディレクトリを作成した)。

$ mkdir ~/build

■wgetのダウンロード
 まずはwget-1.8.2.tar.gzを適当なサイトからダウンロードして、コンパイルに利用するディレクトリにコピーする。SFU 3.0にはFTPクライアントも含まれているので、Interixのシェル上でftpコマンドを使ってダウンロードしてもよいだろう。このとき、あらかじめコンパイル用のディレクトリに移動してからftpコマンドを実行すれば、コピーする手間が省ける。

$ cd ~/build …コンパイル用のディレクトリに移動
$ ftp ftp.t.ring.gr.jp …以降の操作はWindowsのftpコマンドと同じ

 もちろん、使い慣れたFTPクライアントやInternet ExplorerのFTP機能を利用しても構わない。

■アーカイブ・ファイルの展開
 tarコマンドとgzipコマンドを使って、ダウンロードしたアーカイブ・ファイルを展開する。展開後には「wget-1.8.2」という名前のディレクトリが作成されているので、そのディレクトリに移動する。

$ gzip -dc wget-1.8.2.tar.gz | tar xvf -
$ cd wget-1.8.2

 tarコマンドはInterixが標準で提供している。ただし、このtarコマンドはLinuxなどで利用されているGNU tarとは異なり、zオプション(gzip圧縮を展開するためのオプション)が用意されていない。そのため、上のようにgzipコマンドと組み合わせる必要がある。「tar zxvf wget-1.8.2.tar.gz」のように展開することに慣れている人は注意してほしい。

■configureスクリプトの実行
 アーカイブ・ファイルを展開したら、そのアーカイブに含まれるconfigureスクリプトを実行する。通常、configureスクリプト実行する際には、--prefixオプションによりインストール先を(間接的に)指定する。特に必要がなければこの--prefixオプションだけを指定して実行すればよいのだが、実際にこのオプションだけを指定して実行すると次のようなエラーが表示される。

$ ./configure --prefix=/usr/local
creating cache ./config.cache
configuring for GNU Wget 1.8.2
checking host system type... ./config.guess: unable to guess system type

This script, last modified 2001-09-04, has failed to recognize
          (中略)
configure: error: can not guess host type; you must specify one

 これは、configureスクリプトが、ホスト環境(CPUの種類、計算機の種類、システムの種類)を認識できなかったために生じたエラーである。このエラーを回避する方法は2通りある。

1.--hostオプションにより、ホスト環境を明示的に指定する
 --hostオプションを使用すれば、ホスト環境を明示的に指定することができる。ここで認識されるホスト環境というのは、たいていはバージョン情報とともに文字列として表示される程度で、スクリプトの実行や以降のコンパイル作業に影響することはまずない(wgetに関していえば、表示されることすらないようである)。従って、適当な文字列を指定しておけばよい。例えば、以下のようにする。

$ ./configure --prefix=/usr/local --host=i386-pc-interix3

 ここで指定した「i386-pc-interix3」というのは、Intel系のCPUを搭載したPC上で動作しているInterixという程度の意味である(ちなみにこの文字列は、次に述べる最新版のconfig.guessで使用されているものである)。

2.最新のconfig.guessファイルを入手する
 ホスト環境の識別は、config.guessという名前のスクリプトにより行われる。このconfig.guessスクリプトの最新版ではInterixも認識できるようになっている。しかしwget-1.8.2に含まれるスクリプトはやや古いらしく、Interixには対応していなかった。

 config.guessファイルは単体でも配布されており、最新版は以下のサイトなどから入手できる。

 従って、上記のサイトから最新版のconfig.guessをダウンロードし、wget-1.8.2ディレクトリにある古いconfig.guessと置き換えればconfigureのスクリプト・エラーを回避できる。

■makeの実行
 後は通常どおりmakeを実行してコンパイルを実行するだけである。wgetに関しては、ソース・ファイルを修正することなくコンパイルできた。

$ make

■make installによるプログラムのインストール
 最後に、make installを実行してコンパイルしたプログラムをインストールする。インストールといっても、基本的にはファイルが適切なディレクトリにコピーされるだけである。

 この作業は、Administratorまたは管理者権限を持つユーザー(Administratorsグループのユーザー)で行う必要がある。inetdを起動するところでも述べたが、Interixにはsuという現在のユーザーを一時的に切り替えるコマンドがあるので、このコマンドを利用するとよいだろう。具体的に書くと次のようになる(whoamiは現在のユーザーを確認するためのコマンド)。

$ whoami                …現在のユーザーを確認する
yusuke-i
$ su                    …一時的に管理者になる(ユーザーの切り替え)
Password:               …Administratorのパスワードを入力する
$ whoami                …管理者になったことを確認する
Administrator
$ make install          …管理者としてmake installを実行
(途中の表示は省略)
$ exit                  …管理者モードを抜ける
$ whoami                …もとのユーザーに戻ったことを確認する
yusuke-i

 C Shell(csh、tcsh)を使っている場合は、インストール作業が終わったときにrehashコマンドを実行した方がよいだろう。C Shellは、コマンドの一覧を内部で保持し、その一覧を基にして実行ファイルを探し出す。そのため、パスの通ったディレクトリに実行ファイルを置いたとしても、ただ置いただけでは実行ファイルのパスを省略して実行することができない。rehashはその一覧を更新するためのコマンドである。

% rehash

■動作確認
 インストールが終わったら、そのプログラムを試しに実行してみよう。この節の最初でも述べたとおり、wgetの基本的な使い方は引数としてURLを指定することである。例えば、次のようにすれば@ITのトップページをダウンロードできる。

$ wget http://www.atmarkit.co.jp/

 これを実際に実行したのが次の画面だ。ダウンロードが完了するとindex.htmlというファイルが生成されるので、各自このファイルの中身を確認するとよいだろう。

wgetの動作確認
wgetの実行例。画面にこのような表示がなされる。

 以上で移植作業は完了である。configureでホストを明示的に指定する必要はあるが、多少の経験があれば、特に難しい部分はなかったと思う。


 INDEX
  [製品レビュー] 
  Microsoft Windows Services for UNIX 3.0 日本語版
    1.SFUとは何か?
    2.SFU 2.0から3.0へのバージョンアップでの変更点
    3.Interixプロセスと、Win32プロセスのシームレスなプロセス間通信も可能
    4.SFUのインストールとユーザー環境
  5.wgetの移植
    6.bashの移植
 
 製品レビュー


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間