Welcome to my web page. This page is written in Japanese.
Code is EUC-JP.

ソースファイルの取得

取得手段

ソースファイルからインストール作業を行なうためには、当然ながら何らの方法でソフトウェアのソースファイルを取得する必要があります。これには、主に以下の方法が挙げられます。
上記以外にも「テープの回覧」という手段もあります。何かのユーザ会などに参加し、定期的に回覧されるテープを利用するものです。もしくは友人や知人同士で回覧する場合もあります。しかしインターネットなどのネットワークの発達や市販の CD-ROM などが安価に手に入るようになってきた現在ではあまり聞かなくなってきました。
また、少々特殊ですが、CVS のサーバ/クライアントの機能で取得するという手段もあります。CVS というのはバージョン管理システムであり、開発者達が簡単に最新状態のソースファイルを取得でき、かつバグ修正などのアップデートが効率良くできるように手助けをするものです。したがってこの方法は一般の人が使用する手段ではありません。

CD-ROM からの取得

いわゆる PC-UNIX がメジャーになってきたおかげもあり、市販の CD-ROM も多く市場に出回るようになってきて、以前に較べると格段に手に入りやすくなってきました。最近では、コンピュータ関連を扱う雑誌や書籍にも付録している機会も多く、少々大きめの書店などでも手に入れることができます。
それらの CD-ROM はたいてい ISO-9660 (High Sierra) でフォーマットされており、いわゆる PC-UNIX をはじめ、最近の UNIX システムはそれをマウントして使用することが可能になっています。
そして約 650MB と記憶容量も多く、非常に多くのソフトウェアのソースファイルが一括して入手できますし、ときには既にコンパイル済みのバイナリパッケージまでをも取得できることが魅力です。
難点は、ソフトウェアのソースファイルが公開されてから CD-ROM になって手元に届くまでにどうしてもタイムラグが生じるため、その CD-ROM に納められているソースファイルが既に古いバージョンになっていることがある点です。

NetNews (usenet) からの取得

以前、まだ回線費用も高価でインターネットがそれ程普及していなかったころは、多くのソフトウェアのソースファイルの配布は NetNews (usenet) 上で行なわれていました。
もちろん以前よりは少なくなってきたとはいえ、現在も行なわれている NewsGroup もあります。例えば gnu.emacs.sources などは ELisp 用のソースファイルが今もなお頻繁に投稿されています。
しかし comp.sources.unix や fj.sources などはソースファイルが投稿されることは非常に稀になり、たいていは案内とともに FTP や WWW の URL を記述する程度になってしまったようです。

Anonymous FTP での取得

FTP とは、File Transfer Protocol の略であり、その名の通りファイルを転送するためのプロトコル、もしくは、その転送方式を利用したコマンドを指します。
インターネットが普及した現在では、この FTP によるソースファイルの取得が主流のようです。
その FTP のクライアントであるソフトウェアの一つとして、たいていの UNIX 系システムには ftp コマンドが存在しています。
コマンド ftp は非常に多くの機能を持っていますが、ここでは少なくともファイルを取得できる程度の基本的な使い方を解説します。
以下の解説で用いるホスト名などは、あくまで説明のための架空のものであり実在のものではないことに注意してください。

ftp の起動

コマンド ftp を起動すると、まずコマンドプロンプトが表示されます。
$ ftp 
ftp>
ここで、open ホスト名 と入力するこによってそのホストに接続します。この「ホスト名」は名前でも IP アドレスでも構いません。例えば anonftp.yynet.tama.tokyo.jp という名前のホストに接続するためには以下のように実行します。
ftp> open anonftp.yynet.tama.tokyo.jp
また、コマンド ftp の起動と同時に任意のホストに接続するためには以下のように実行します。
$ ftp ホスト名
例えば anonftp.yynet.tama.tokyo.jp に接続するためには以下のように実行します。
$ ftp anonftp.yynet.tama.tokyo.jp

ログイン

相手ホストに接続すると以下のように表示され、まずユーザー名を尋ねてきます。
Connected to anonftp.yynet.tama.tokyo.jp.
220 anonftp.yynet.tama.tokyo.jp FTP server (Sat Jan 23 18:54:46 JST 1999) ready.
Name (anonftp.yynet.tama.tokyo.jp:yokota): 
上記の例では、ユーザー名のデフォルトは yokota です。しかしここで必要な名前は相手ホストでのユーザー名です。つまり anonftp.yynet.tama.tokyo.jp というホストでのユーザー名ということですが、通常はその相手ホストにアカウントは持っていませんので、yokota ではログインすることはできません。
この場合は anonymous という名前を使用します。たいていのホストは、それ以外に ftp という名前も使用することができます。その場合はどちらを使用しても同じです。
ユーザー名を入力した後は、パスワードを尋ねてきます。ここは自分の電子メールアドレスを入力します。
Name (anonftp.yynet.tama.tokyo.jp:yokota): anonymous
331 Anonymous FTP ready, send your COMPLETE e-mail address as password.
Password: yokota@yy.feedmania.org
もちろん、このパスワードの入力はあなたの電子メールアドレスで置き換えて入力をしなければいけません。なお、上記は例として判りやすくするためにパスワードである電子メールアドレスを表示していますが、実際には画面には表示されないことに注意してください。
パスワードを入力すると、相手ホストの FTP サーバーはあなたのログインを許可します。
まれにユーザー名を入力したあと、接続を断わられる場合があります。
Name (ftp.yy.feedmania.org:yokota): anonymous
530-Sorry, this server is full at the moment.  Please try again later.
530 User ftp access denied.
Login failed.
421 Service not available, remote server has closed connection
ftp> 
これは、そのサーバーに現在ログインしている人が多く、人数制限によって新たなログインを断わられるために起ります。この場合は、メッセージ通りに後で再び試みるか、他のホストを利用することになります。

ディレクトリの移動と表示

カレントディレクトリを移動や、ファイルの表示に良く使用するコマンドを以下に挙げます。
cd
相手ホスト上でのカレントディレクトリを変更します。
cdup
相手ホスト上でのカレントディレクトリを親ディレクトリに変更します。
ls
相手ホスト上でのファイルをリストします。
dir
相手ホスト上でのファイルをリストします。
pwd
相手ホスト上でのカレントディレクトリを表示します。
cdls そして pwd はシェル上のコマンドと同じような動作をします。
ftp> cd /pub/emacs/elisp/mh-biff
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 30
drwxr-xr-x   3 yokota   users        1024 Dec 20  1998 mh-biff-0.97
-rw-r--r--   1 yokota   users       27469 Oct 10  1997 mh-biff-0.97.tar.gz
drwxr-xr-x   3 yokota   users        1024 Dec 20  1998 old
226 Transfer complete.
ftp> pwd
257 "/pub/emacs/elisp/mh-biff" is current directory.
ftp>
上記の例では、ls はシェルでの ls -l と同じような、ファイルのサイズや修正の日付けなどの情報を含む長いフォーマットで表示されていますが、コマンド ftp の実装によってはファイル名のみの短いフォーマットで表示されます。どちらかというと ls は短いフォーマットで表示されるほうが一般的です。そのかわりに長いフォーマットでの表示をさせたい場合は dir を使用します。
一つ上のディレクトリである親ディレクトリに移動するには cdup を使用します。たいていの場合は、シェル同様に cd .. でも親ディレクトリに移動することができます。
ftp> pwd
257 "/pub/emacs/elisp/mh-biff" is current directory.
ftp> cdup
250 CWD command successful.
ftp> pwd
257 "/pub/emacs/elisp" is current directory.
ftp> cd ..
250 CWD command successful.
ftp> pwd
257 "/pub/emacs" is current directory.
ftp>

ファイルを検索

ファイルを取得するには、目的のファイルが FTP サーバーの何処のディレクトリに存在するかを知らなければいけません。もちろん事前に知っている場合も多いとは思いますが、もし分らなかった場合、FTP サーバーによっては site index を用いて捜すことができます。
例として gzip-1.2.4a を探してみます。
ftp> site index gzip-1.2.4a
200-index gzip-1.2.4a
200-/pub/GNU/gzip/gzip-1.2.4a.shar
200-/pub/GNU/gzip/gzip-1.2.4a.tar.gz
200-/pub/linux/slackware-4.0/source/a/gzip/gzip-1.2.4a.tar.gz
200  (end of 'index gzip-1.2.4a') 
これで、そのサーバーの何処に目的のファイルが存在しているかを知ることができます。ですが、残念ながら全ての FTP サーバーでこの site index が使用できるわけではないことに注意してください。

ファイル転送形式

ファイルを取得する前に気を付けなければいけないのが転送形式です。これには「ASCII 形式」と「BINARY 形式」があります。それぞれ asciibinary で切り換えることができます。
ascii
ファイル転送を ASCII 形式にします。
binary
ファイル転送を BINARY 形式にします。
ASCII 形式は OS に合わせてテキストファイル内の復帰文字などを適切に変換するために使用します。したがって取得しようとしているファイル名の suffix が .txt になっているようなテキストファイルの場合は ASCII 形式にします。
それに対し、圧縮されているアーカイブファイルなどはバイナリファイルです。この場合は ASCII 形式で変換してもらっては、ファイル内のデータが破壊されて使用できなくなるという非常に困ることになります。したがって単なるバイト列として扱ってファイルを転送する BINARY 形式で取得しなければいけません。
テキストファイルかバイナリファイルか判断ができない場合や疑わしい場合には BINARY 形式で取得することを御勧めします。

ファイルを GET

ファイルを取得するには get を使用します。くどいようですが、アーカイブファイルを取得するには BINARY 形式を使うことを忘れないでください。
ftp> binary
200 Type set to I.
ftp> get tcpgr_0.0.6-1.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for tcpgr_0.0.6-1.tar.gz (41821 bytes).
226 Transfer complete.
41821 bytes received in 0.0505 secs (8.1e+02 Kbytes/sec)
ftp>
上記の例では tcpgr_0.0.6-1.tar.gz というファイルを取得し、同じ名前で自分のホストに置きます。もし同じ名前では不都合がある場合には以下のようにして自分のホストに置くための別の名前を付けます。
ftp> get tcpgr_0.0.6-1.tar.gz tcpgr.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for tcpgr_0.0.6-1.tar.gz (41821 bytes).
226 Transfer complete.
41821 bytes received in 0.024 secs (1.7e+03 Kbytes/sec)
ftp> 
上記の例では、相手ホストの tcpgr_0.0.6-1.tar.gz というファイルを取得し、それを自分のホストでは tcpgr.tar.gz という名前で置くことになります。
特にサイズの大きいファイルを取得するときなど、ハッシュマークの表示をするように設定しておくと便利です。この機能を設定してからファイルの転送をすると転送状態を知ることができます。
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> get wget-1.5.3.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for wget-1.5.3.tar.gz (446966 bytes).
###############################################################################
###############################################################################
###############################################################################
###############################################################################
###############################################################################
#########################################
226 Transfer complete.
446966 bytes received in 33.7 secs (13 Kbytes/sec)
ftp> 
上記の例では、1024 バイトの転送ごとに # が画面に表示されます。これを利用すれば、本当にファイルの転送が行なわれているのかと疑いながら長時間じっと待つ必要もなくなります。

ftp の終了

ftp を終了させるには quit を使用します。
ftp> quit
221 Goodbye.
$
もし ftp を終了させずに相手ホストとの接続を断つには close を使用します。
ftp> close
221 Goodbye.
ftp> 
この状態から、再び open ホスト名 と入力するこによってそのホストに接続することができます。

ftp の主なコマンド

ftp のコマンドには help があります。この help を引き数を与えずに入力すると使用可能なコマンド一覧が表示されます。
ftp> help   
Commands may be abbreviated.  Commands are:

!               debug           mget            pwd             status
$               dir             mkdir           quit            struct
account         disconnect      mls             quote           system
append          form            mode            recv            sunique
ascii           get             modtime         reget           tenex
bell            glob            mput            rstatus         tick
binary          hash            newer           rhelp           trace
bye             help            nmap            rename          type
case            idle            nlist           reset           user
cd              image           ntrans          restart         umask
cdup            lcd             open            rmdir           verbose
chmod           ls              prompt          runique         ?
close           macdef          proxy           send
cr              mdelete         sendport        site
delete          mdir            put             size
help コマンド名 は、指定したコマンドの簡単な説明を表示します。
ftp> help lcd
lcd             change local working directory
ftp> 

他の FTP クライアント

FTP を扱えるコマンドは上記の説明で用いた ftp だけでなく、Netscape や Lynx などの WWW ブラウザでも可能です。また GUI での操作はできませんが、ftp よりも便利な機能を持つ NcFTP というソフトウェアもあります。
この NcFTP の主な特徴を以下に挙げます。
このソフトウェアの操作は前述した ftp とある程度の互換性があると考えて差し支えないでしょう。しかし、特に bash などのファイル名補完機能やコマンドラインでの編集機能に慣れていると、NcFTP の持つ同じようなファイル名補完や編集機能は非常に便利です。

Web からの取得

最近は Web 上でソフトウェアのソースファイルが公開されていることも結構多くなってきました。そのようなファイルは Netscape や Lynx などの WWW ブラウザを使用して取得することができます。
その他にも、WWW ブラウザのように対話的な操作はできませんが、Wget というソフトウェアがあります。この Wget は再帰的にファイルを取得することもできるので、Web サイトのミラーなどにもよく使用されています。
Wget の基本的な使用方法は簡単で、wget URL で目的のファイルを取得できます。他にもオプションを指定することにより、ログを残したり、URL を別ファイルに記述しておいてから、その内容にそって取得させることなども可能です。
また、Wget は HTTP だけでなく FTP も扱うことができます。
$ wget ftp://ring.asahi-net.or.jp/pub/GNU/autoconf/autoconf-2.13.tar.gz
--21:22:03--  ftp://ring.asahi-net.or.jp:21/pub/GNU/autoconf/autoconf-2.13.tar.gz
           => `autoconf-2.13.tar.gz'
Connecting to ring.asahi-net.or.jp:21... connected!
Logging in as anonymous ... Logged in!
==> TYPE I ... done.  ==> CWD pub/GNU/autoconf ... done.
==> PORT ... done.    ==> RETR autoconf-2.13.tar.gz ... done.
Length: 443,844 (unauthoritative)

    0K -> .......... .......... .......... .......... .......... [ 11%]
   50K -> .......... .......... .......... .......... .......... [ 23%]
  100K -> .......... .......... .......... .......... .......... [ 34%]
  150K -> .......... .......... .......... .......... .......... [ 46%]
  200K -> .......... .......... .......... .......... .......... [ 57%]
  250K -> .......... .......... .......... .......... .......... [ 69%]
  300K -> .......... .......... .......... .......... .......... [ 80%]
  350K -> .......... .......... .......... .......... .......... [ 92%]
  400K -> .......... .......... .......... ...                   [100%]

21:22:34 (14.28 KB/s) - `autoconf-2.13.tar.gz' saved [443844]