最終更新日 …
$Date: 2003-08-29 18:04:34+09 $
今回の授業では,ソフトウェアのインストール方法について学習する.
近年では,ライトユーザでも簡単に unix が使えるようにという配慮から
パッケージングをはじめとするインストールの自動化が進んでいるが,
などを鑑みて,教育的理由から,この授業では手動インストールを扱う.
ms-windows などと異なり,unix ではソフトウェアはソースファイル
(Source File, 読んで理解出来るプログラム形式)の形式で配布されていることが多く,
インストールはソースを取得して自分でコンパイルすることになる.
これは,
「欲しがった人が作る」という「言い出しっぺの法則」
にのっとってユーザが自分でソフトウェアを作ってきた,という unix の伝統や,
なるべく多くの環境で使えるようにと言う配慮,
ソフトウェアをなるべくオープンにしようという文化的背景からこうなっているのであり,
そうした背景をこの学習を通じて感じ取ることもこの授業の狙いである.
ソフトウェアを unix に手動でインストールする一般的な手順は以下の通りである.
この流れを意識しておけば,実はそんなに難しくはない.
もちろん,専門的知識を要求されるときもあるが,
どうしてもよく分からないときはインストールしなければ良いだけの話である.
注意
セキュリティを考えると,
全体に自分が何をしているか良く把握できていない場合は,
むしろインストールしては「いけない」と考えた方が良いかもしれない.
「トロイの木馬」をうっかり自分で仕込んでしまった,ということがないよ
うに,最低でも何をしているかの自覚を持ちながら作業するようにしよう.
内容の解説を行うとともに,
FDclone と呼ばれる cui ツールを例として挙げ,
実際にインストールしながら作業に習熟する.
この FDclone というツールは非常に便利かつ(日本では)古くから知られたツールなので,
インストールして使えるようになっておくと良いだろう.
当たり前であるが,インストールするソフトウェアがどんなソフトウェアなのかを知らなくては始まらない.
そこで,情報収集を兼ねて,ソフトウェアの概要を調べておこう.
それには,そのソフトウェアを一次配布している開発元の web
を参照するのがまずは良いだろう.
忘れがちであるが,
インストールしたいと思うソフトウェアのライセンスを確認しておく必要がある.
対価が必要なのかそうでないのか,
使用期間に制限はないか,再配布は可能かどうか等々,
ソフトウェアのライセンスの形態は非常に多様なので,結局,
ライセンスがどうなっているかは各ソフトウェア毎に調べる他はない.
一般に良く知られているのは「商用」と「フリー」という大まかな区別であるが,
これは大まかすぎて役に立たない.
(注意)
ライセンスに違反した状態でソフトウェアを使用すると,
莫大な損害賠償金を請求されるなどの事態に発展する可能性があるため,
インストール前によくよくライセンスを確認しておくこと.
また,有益なソフトウェアを作成し,配布している作者への感謝と敬意を表すためにも,
ライセンスを遵守するようにしたい.
さて,ソースファイル一式を取得しよう.
まずどのファイルをとってくれば良いのかであるが,これは配布元の web
を丁寧に読めば問題ないだろう.
よく分からない場合は,unix ではソースファイル一式は
tarball と呼ばれる hogehoge.tar.gz もしくは hogehoge.tgz
という形式で配布されることが多いので,それを目安にすると良いだろう.
次に取得の方法だが,
これは要するにネットワークを用いたファイル転送であるので,
前回の授業のファイルの転送で示した方法や,
HTTP (web を見るのに使われる情報のやり取りの規格)が使われる.
少し前まではこの手段として ftp がもっとも良く使われていたのだが,
便利性やセキュリティとの兼ね合いなどの理由から,
現在では http と ftp が併用されるようになってきている.
どの方法を用いて配布するかは配布元が決めることであるので,そこの指示に従おう.
さて,取得したソースファイル一式は, 通常は転送が簡単なように一つのファイルに固められているため,
作業できるようにこれを展開しよう.
tarball は gzip と tar があれば展開できる.
tar や gzip の扱いに関しては,以前の授業の
tar の使い方
や
gzip の使い方
を見るのが良い.
なお,展開すると大量のファイルが含まれていることも多いので,この作業も含め,
以下の作業は一時的な作業用ディレクトリを用意してその中で行った方が良い.
mkdir tmp-fd
cp FD-2.04a.tar.gz tmp-fd
cd tmp-fd
gunzip FD-2.04a.tar.gz
tar xvf FD-2.04a.tar
この作業のあと,展開されたディレクトリやファイルの構成がどうなっているか確認しておくこと.
さて,これでソースファイル一式が展開された形で入手できたわけだが,
ここでまずやるべきことはソースファイル一式に含まれているドキュメント
(説明書,解説,マニュアル等)
に目を通すことである.
ドキュメントファイルには INSTALL や README などの,大文字で始まる分かりやすい名前がついているので,
ザッとみるだけでどれだか分かるはずである.
これらのドキュメントにはインストールの方法や注意点,各種設定の方法などが書かれているので,
読んでおかないことには次の作業が進まない.
(注意)
ドキュメントに目を通さずに「勘」で次の作業に進んで
うまくいかない〜と悩んで時間をつぶすケースが(特に素人に)良くみられるが,
そういうことにならないように注意しておこう.
インストール方法について書かれたドキュメントを読みながら, ソースをコンパイルする前にやらねばならない準備を行う. 大ざっぱに言えば,これは次の二つの作業からなる.
configure
という名前をつけてあるソフトを実行する方法や,
make config
とする方法,また,
xmkmf
というツールを使う方法などである.
具体的にどうすれば良いかは,たいていはドキュメントに指示されているはずであるので, よく読んでその指示に従う.
注意 阪大教育用計算機システムは,Install ドキュメント中で Linux とよばれる OS に分類される.
準備が終わったら,ソースをコンパイルしてバイナリにする.
これによって,自分の環境で実行できるファイルが作成されることになる.
ソフトウェアを記述したコンピュータ言語などにも依存するが,通常は
make オプション
とするだけで良いことが多い.
オプションも含め具体的にどうするかは,ドキュメントに書かれている指示に従う.
なお,この作業は環境などよっては「失敗」することがあるので,作業がうまくいったかどうかの確認が必要である.
確認の方法としてもっとも良いのは
「Makefile の内容を読んで行われる作業を理解し,作業結果の判定をする」,というものである… が,
この授業を聴講しているレベルでこれができるとは思えない(ToT).
そこで次善の策としてお勧めなのが,
「コンパイル作業中に出力されるログを読んで,問題が起きてないかどうか判断する」
というものである.
こうするためには,kterm の画面をぼーっと眺めていても良いのだが,画面が流れてしまえば読めなくなる.
そこで,コンパイル作業時には以前の授業の
雑多なコマンドで説明した
script
コマンドを有効活用して記録をとり,あとからチェックするのが良い.
script
を使って記録をとりながらコンパイルする.
具体的には以下のような感じになるだろう.
script Log-make
make
exit
less Log-make
← これで記録を見ておかしなところがないかチェック.
さらに,Install ドキュメント中にある指示に従い,コンパイルした結果できた
fd
が無事に動くかどうか,
./fd
として確認する.
さて,ここまで無事にたどり着いたら,あとは細かい後片付けである.
しかし個人ユーザがソフトウェアをインストールする場合,この段階がもっとも作業量が多いので,
注意しながら作業しよう.
この段階の作業は一般に次のように進行する.
これらについて細かく解説しよう.
さて,せっかくコンパイルまでしてファイルを作成したので, それらのファイルを適切なディレクトリに置いて使えるようにするのがこの段階である.
しかし,この段階で実は問題が生じる.
例えば,「/usr/local/bin などの(個人ユーザが操作できない)ディレクトリ」
にファイルを置くことを前提としているソフトウェアが多いが,個人ユーザではこれは出来ない.
# ソフトウェアのインストールは,通常は unix OS の「管理者」が行うことが前提となっている.
この問題に対処するため,適切なディレクトリを作成して用意したり,
環境変数を設定したりという作業が必要となる.
これにはこれまで学習した様々な知識が必要となるので,よく思い出して作業されたい.
# ソフトウェアによっては,いくら上手に設定しても個人ユーザではインストールできないものがある.
# そういう時は素直にあきらめて,管理者にインストールをお願いしよう.
さて,具体的に考えると,
unix において個人ユーザレベルでソフトウェアをインストールする際,
新たに導入されるファイルは実行ファイル,マニュアル,設定ファイルが主である.
そこで,これらのファイルをどういうディレクトリに置くのか,他に何が必要かを各々示そう.
# ライブラリファイルの導入などが必要になるケースもあるが,
そういうソフトウェアのインストールをしようと思う場合は十分な知識を既に持っているはずである.
bin
というディレクトリを作成してそこに置くのが一般的だろう.
man
というディレクトリを作成してそこに置く…ぐらいか.
あと,それらに対して MANPATH と呼ばれる環境変数を設定しておく必要がある.
MANPATH について詳しくは,
man man
として調べよ.
(cd ~; mkdir man; cd man; mkdir man1)
(cd ~/man; mkdir ja; cd ja; mkdir man1)
もちろん,作業後にこれらのディレクトリができているかどうか確認しておくこと.
if [ -d $HOME/man ] then MANPATH="$HOME/man: :"; export MANPATH fiもしも tcsh を使っているならば,.tcshrc の中などで setenv MANPATH "${HOME}/man: :" とすれば良い.
etc
というディレクトリを作成してそこに置くことになるだろう.
(変なことをしなければ)今回は特に作業は必要ないだろう.
さて,上記のディレクトリと環境変数の設定が終わったら,
ファイルを上記のディレクトリに配置すれば良い.
この作業は手動で行っても良いが,FDclone の Install ドキュメントを読むと,
7. make install。
と書かれているので make install で行われることが(慣れれば)分かる.
ではファイルを置くディレクトリの指定はどこで行うのかというと,
その前に書かれている
5. Makefile.in にある TOPDIR 等のマクロを自分の環境に応じて…
という部分がそれに当たる.
さて,それではまず Makefile.in を適切に書き替え,その後,make
install を実行しよう.
(注意)
Install ドキュメントの "6. _fdrc を fdrc という名前でコピーし… "
という部分は今回は実行する必要がない.
というより,実行しない方が適切.
なぜなら,今回は個人ユーザでインストールするので,
共通設定ファイルを用意すると,結局,
一人のユーザ用に二つの設定ファイルが存在してしまうことになり,
混乱するだけである.
cp Makefile.in Makefile.in.ORG
それから,Makefile.in をエディタで書き替える.
書き替える場所と書き替え方は次の通り.
行 | 元 | 修正後 |
---|---|---|
10 行目 | TOPDIR = $(BUILD)$(PREFIX) | TOPDIR = $(HOME) |
13行目 | MANDIR = $(TOPDIR)/man__LANGDIR__/man$(MANSEC) | MANDIR = $(TOPDIR)/man/ja/man$(MANSEC) |
14行目 | CATDIR = $(TOPDIR)/man__LANGDIR__/cat$(MANSEC) | CATDIR = $(TOPDIR)/man/ja/cat$(MANSEC) |
script Log-install
make install
exit
less Log-install
← これで記録を見ておかしなところがないかチェック.
上で行った作業が正しく行われているかチェックしよう. 環境変数の設定などもあったので,念のためにいったん異なる kterm を立ち上げて無事に立ち上がるか確認の上, いったんログアウト → ログイン して,チェックを行おう.
env | grep -i path
として,表示されている PATH および MANPATH に望みの部分が入っているかチェックする.
fd
として,どのディレクトリからでも fd が起動するかどうかチェックする.
man fd
として,fd のマニュアルが見られるかどうかチェックする.
さらに,
man man
などとして,他のマニュアルに悪影響が出ていないことを確認する.
さて,これでインストール作業そのものは終了したと言える.
そこで,あとは残ったソースファイルなどを整理して保存するか,廃棄するだけである.
これはポリシーとコストの問題なので,各人で適当に決めれば良いだろう.
ちなみにお勧めは,記憶容量に余裕があるならば,適切なディレクトリ(src
など)を作成して,そこにファイルを保存しておくことである.
この時,修正したファイルや script
で作られた作業過程の記録ファイルを一緒にとっておくと後々役立つことがあるだろう.
make clean
とすればよい(という約束になっている).
あとは,ソースファイルを置いておくディレクトリを作成して,そこへ移し, 残ったファイルを削除すれば良い.cd .. tar cvf FD-2.04a-20030829.tar ./FD-2.04a
← 日付などを入れておくと良い.gzip FD-2.04a-20030829.tar
(cd ~; mkdir src)
mv FD-2.04a-20030829.tar.gz ~/src
(cd FD-2.04a; \rm *)
rmdir FD-2.04a
rm FD-2.04a.tar
ソフトウェアによっては,オプションを適切に調整しないと使い物にならないものもあるので, ここで調整しておこう.
以下に示された課題について
AppliedMath-Report-11
という題名をつけて e-mail にて教官宛にレポートとして提出せよ(教官のメールアドレスは授業中に口頭で伝える).
なお,レポートを e-mail の代わりに TeX で作成した書面にて提出してもよい.
課題内容