第 11 回 (2006.07.07) -- ソフトウェアのインストールの基本

今回の授業では,ソフトウェアのインストール方法について学習する.
近年では,ライトユーザでも簡単に unix が使えるようにという配慮から パッケージングをはじめとするインストールの自動化が進んでいるが,

  1. おおまかに unix とよばれる OS でもパッケージング等は各々異なるため,学習しても応用が効かない.
  2. トラブルが起きたときに対処する能力が身につきにくい.
  3. 伝統的なソフトウェアや,小さなソフトウェアにはパッケージングされてないものも多い.

などを鑑みて,教育的理由から,この授業では手動インストールを扱う.

ms-windows などと異なり,unix ではソフトウェアはソースファイル (Source File, 読んで理解出来るプログラム形式)の形式で配布されていることが多く, インストールはソースを取得して自分でコンパイルすることになる.
これは, 「欲しがった人が作る」という「言い出しっぺの法則」 にのっとってユーザが自分でソフトウェアを作ってきた,という unix の伝統や, なるべく多くの環境で使えるようにと言う配慮, ソフトウェアをなるべくオープンにしようという文化的背景からこうなっているのであり, そうした背景をこの学習を通じて感じ取ることもこの授業の狙いである.

ソフトウェアの手動インストールの流れ

ソフトウェアを unix に手動でインストールする一般的な手順は以下の通りである.

  1. インストールするソフトウェアがどんなソフトウェアなのか,概要を把握する.
  2. ライセンスの確認
  3. Source の取得, 展開
  4. 説明書の通読
  5. コンパイル前の設定
  6. コンパイル
  7. コンパイルしたファイルなどの配置, 後処理

この流れを意識しておけば,実はそんなに難しくはない. もちろん,専門的知識を要求されるときもあるが, どうしてもよく分からないときはインストールしなければ良いだけの話である.

注意 セキュリティを考えると, 全体に自分が何をしているか良く把握できていない場合は, むしろインストールしては「いけない」と考えた方が良いかもしれない.
「トロイの木馬」をうっかり自分で仕込んでしまった,ということがないよ うに,最低でも何をしているかの自覚を持ちながら作業するようにしよう.

ソフトウェアの手動インストールの実際

内容の解説を行うとともに, FDclone と呼ばれる cui ツールを例として挙げ, 実際にインストールしながら作業に習熟する.

この FDclone というツールは非常に便利かつ(日本では)古くから知られたツールなので, インストールして使えるようになっておくと良いだろう.

どんなソフトウェアなのか概要を把握する

当たり前であるが,インストールするソフトウェアがどんなソフトウェアなのかを知らなくては始まらない. そこで,情報収集を兼ねて,ソフトウェアの概要を調べておこう.
それには,そのソフトウェアを一次配布している開発元の web を参照するのがまずは良いだろう.

実習
FDclone の web を見ると,そこに「FDclone って何?」というまさにおあつらえ向きの web があるのがわかる. それを読んでまずは概要を把握せよ.

ライセンスの確認

忘れがちであるが, インストールしたいと思うソフトウェアのライセンスを確認しておく必要がある.
対価が必要なのかそうでないのか, 使用期間に制限はないか,再配布は可能かどうか等々, ソフトウェアのライセンスの形態は非常に多様なので,結局, ライセンスがどうなっているかは各ソフトウェア毎に調べる他はない.
一般に良く知られているのは「商用」と「フリー」という大まかな区別であるが, これは大まかすぎて役に立たない.

(注意) ライセンスに違反した状態でソフトウェアを使用すると, 莫大な損害賠償金を請求されるなどの事態に発展する可能性があるため, インストール前によくよくライセンスを確認しておくこと.
また,有益なソフトウェアを作成し,配布している作者への感謝と敬意を表すためにも, ライセンスを遵守するようにしたい.

実習
FDclone のライセンスは LICENSES にまとめられているので,これを読んで理解しておくこと.

Source の取得

さて,ソースファイル一式を取得しよう.

まずどのファイルをとってくれば良いのかであるが,これは配布元の web を丁寧に読めば問題ないだろう.
よく分からない場合は,unix ではソースファイル一式は tarball と呼ばれる hogehoge.tar.gz もしくは hogehoge.tgz という形式で配布されることが多いので,それを目安にすると良いだろう.

次に取得の方法だが, これは要するにネットワークを用いたファイル転送であるので, 前回の授業のファイルの転送で示した方法や, HTTP (web を見るのに使われる情報のやり取りの規格)が使われる.
少し前まではこの手段として ftp がもっとも良く使われていたのだが, 便利性やセキュリティとの兼ね合いなどの理由から, 現在では http と ftp が併用されるようになってきている.
どの方法を用いて配布するかは配布元が決めることであるので,そこの指示に従おう.

実習
FDclone のソースファイル一式を取得する. 本来は上記の web をたどって取得するところだが,配布元のネットワークに負担をかけないように,
http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2006-7Semester-AppliedMath7/FD-2.08d.tar.gz
から,kterm 上で w3m や lynx を用いて取得すること(ネットスケープや Mozilla を使うな,ということ)
# w3m や lynx を使うことに慣れてもらうため, このファイルにはあえてリンクを張ってない.

Source の展開

さて,取得したソースファイル一式は, 通常は転送が簡単なように一つのファイルに固められているため, 作業できるようにこれを展開しよう.
tarball は gzip と tar があれば展開できる.
tar や gzip の扱いに関しては,以前の授業の tar の使い方gzip の使い方 を見るのが良い.

なお,展開すると大量のファイルが含まれていることも多いので,この作業も含め, 以下の作業は一時的な作業用ディレクトリを用意してその中で行った方が良い.

実習
取得した FDclone のソースファイル FD-2.08d.tar.gz を展開する.
例えば,新たに tmp-fd というディレクトリを作って作業するならば, 全体に次のような流れになるだろう.
mkdir tmp-fd
cp FD-2.08d.tar.gz tmp-fd
cd tmp-fd
gunzip FD-2.08d.tar.gz
tar xvf FD-2.08d.tar
この作業のあと,展開されたディレクトリやファイルの構成がどうなっているか確認しておくこと.

説明書の通読

さて,これでソースファイル一式が展開された形で入手できたわけだが, ここでまずやるべきことはソースファイル一式に含まれているドキュメント (説明書,解説,マニュアル等) に目を通すことである. ドキュメントファイルには INSTALL や README などの,大文字で始まる分かりやすい名前がついているので, ザッとみるだけでどれだか分かるはずである.
これらのドキュメントにはインストールの方法や注意点,各種設定の方法などが書かれているので, 読んでおかないことには次の作業が進まない.

(注意) ドキュメントに目を通さずに「勘」で次の作業に進んで うまくいかない〜と悩んで時間をつぶすケースが(特に素人に)良くみられるが, そういうことにならないように注意しておこう.

実習
FDclone のソースファイル一式をみて, ドキュメントに一通り目を通せ.
インストール方法が記してある Install というファイルは特に重要なので良く読んでおくこと.

コンパイル前の設定

インストール方法について書かれたドキュメントを読みながら, ソースをコンパイルする前にやらねばならない準備を行う. 大ざっぱに言えば,これは次の二つの作業からなる.

  1. OS や機種,環境ごとに異なる細かい違いに対応する.
    … 本質的には技術的問題であるため,ソフトウェアの作者側の努力で対応することが多い. この差に対応するための仕組みも存在する. よく知られているのは, configure という名前をつけてあるソフトを実行する方法や, make config とする方法,また, xmkmf というツールを使う方法などである.

  2. ソフトウェアの動作オプション等を設定する.
    … ソフトを使う人の好みや環境によるため, ユーザや管理者が設定することが多い. 好みと言ってもよくわからないなあ,という場合は, そのまま(デフォルト)にしておいて後で修正しても良いだろう.

具体的にどうすれば良いかは,たいていはドキュメントに指示されているはずであるので, よく読んでその指示に従う.

実習
FDclone の Install というドキュメントを読み,そのドキュメント中の
3. make。
と書かれている行の前までを実行せよ.

注意 阪大教育用計算機システムは,Install ドキュメント中で Linux とよばれる OS に分類される.

コンパイル

準備が終わったら,ソースをコンパイルしてバイナリにする. これによって,自分の環境で実行できるファイルが作成されることになる.
ソフトウェアを記述したコンピュータ言語などにも依存するが,通常は
make オプション
とするだけで良いことが多い. オプションも含め具体的にどうするかは,ドキュメントに書かれている指示に従う.

なお,この作業は環境などよっては「失敗」することがあるので,作業がうまくいったかどうかの確認が必要である.
確認の方法としてもっとも良いのは 「Makefile の内容を読んで行われる作業を理解し,作業結果の判定をする」,というものである… が, この授業を聴講しているレベルでこれができるとは思えない(ToT).
そこで次善の策としてお勧めなのが, 「コンパイル作業中に出力されるログを読んで,問題が起きてないかどうか判断する」 というものである. こうするためには,kterm の画面をぼーっと眺めていても良いのだが,画面が流れてしまえば読めなくなる. そこで,コンパイル作業時には以前の授業の 雑多なコマンドで説明した script コマンドを有効活用して記録をとり,あとからチェックするのが良い.

実習
FDclone の Install というドキュメントを読んで,ドキュメント中に
3. make。
と書かれていることを確認せよ. それから, script を使って記録をとりながらコンパイルする. 具体的には以下のような感じになるだろう.
script Log-make
make
exit
less Log-make ← これで記録を見ておかしなところがないかチェック.
さらに,Install ドキュメント中にある指示に従い,コンパイルした結果できた fd が無事に動くかどうか,
./fd
として確認する.
# ちなみに fd は qキーを押すと終了できる.

コンパイルしたファイルなどの配置, 後処理

さて,ここまで無事にたどり着いたら,あとは細かい後片付けである. しかし個人ユーザがソフトウェアをインストールする場合,この段階がもっとも作業量が多いので, 注意しながら作業しよう.

この段階の作業は一般に次のように進行する.

  1. 実行ファイル,マニュアル,設定ファイルなどを適切なディレクトリに置く.
  2. 作業の最終チェック.
  3. インストールに使用したが,既に不要となったファイルの後始末.
  4. ソフトウェアのオプション等の細かい調整.

これらについて細かく解説しよう.

ファイルを適切なディレクトリに置く

さて,せっかくコンパイルまでしてファイルを作成したので, それらのファイルを適切なディレクトリに置いて使えるようにするのがこの段階である.

ファイルを置くディレクトリを作成,準備する

しかし,この段階で実は問題が生じる. 例えば,「/usr/local/bin などの(個人ユーザが操作できない)ディレクトリ」 にファイルを置くことを前提としているソフトウェアが多いが,個人ユーザではこれは出来ない.
# ソフトウェアのインストールは,通常は unix OS の「管理者」が行うことが前提となっている.

この問題に対処するため,適切なディレクトリを作成して用意したり, 環境変数を設定したりという作業が必要となる. これにはこれまで学習した様々な知識が必要となるので,よく思い出して作業されたい.
# ソフトウェアによっては,いくら上手に設定しても個人ユーザではインストールできないものがある.
# そういう時は素直にあきらめて,管理者にインストールをお願いしよう.


さて,具体的に考えると, unix において個人ユーザレベルでソフトウェアをインストールする際, 新たに導入されるファイルは実行ファイル,マニュアル,設定ファイルが主である. そこで,これらのファイルをどういうディレクトリに置くのか,他に何が必要かを各々示そう.
# ライブラリファイルの導入などが必要になるケースもあるが, そういうソフトウェアのインストールをしようと思う場合は十分な知識を既に持っているはずである.

実行ファイル … プログラム本体など.
個人ユーザの場合,ユーザディレクトリに bin というディレクトリを作成してそこに置くのが一般的だろう.
また,そのディレクトリに path を通しておかないと使えないので, しかるべき設定をしておく必要がある.
実習
シェルスクリプトの作成から実行まで で学習した知識を用いて,
  • もし存在しなければ ~/bin を作成.
  • もし path を通してなければ,~/bin に対する path を設定.

マニュアル
個人ユーザの場合,ユーザディレクトリに man というディレクトリを作成してそこに置く…ぐらいか. あと,それらに対して MANPATH と呼ばれる環境変数を設定しておく必要がある. MANPATH について詳しくは, man man として調べよ.
実習
具体的にどういうディレクトリが必要か Makefile を読んでみると,
~/man/man1 と ~/man/ja/man1
あたりを用意すれば良さそうである. そこでまず,次のようにしてディレクトリを作成する.
(cd ~; mkdir man; cd man; mkdir man1)
(cd ~/man; mkdir ja; cd ja; mkdir man1)
もちろん,作業後にこれらのディレクトリができているかどうか確認しておくこと.
# どうして上のコマンドでディレクトリが作成できるか考えること.

次に MANPATH を設定する. bash を使っているならば(通常はそうだろう), .bashrc の中で次のように設定するのが良いだろう.
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 という名前でコピーし… " という部分は今回は実行する必要がない. というより,実行しない方が適切. なぜなら,今回は個人ユーザでインストールするので, 共通設定ファイルを用意すると,結局, 一人のユーザ用に二つの設定ファイルが存在してしまうことになり, 混乱するだけである.

実習
Makefile.in を書き替える前に念のためにバックアップをとっておこう.
cp Makefile.in Makefile.in.ORG
それから,Makefile.in をエディタで書き替える. 書き替える場所と書き替え方は次の通り.
修正後
12 行目 TOPDIR = $(BUILD)$(PREFIX) TOPDIR = $(HOME)
17行目 JMANDIR = $(TOPDIR)/man__LANGDIR__/man$(MANSEC) JMANDIR = $(TOPDIR)/man/ja/man$(MANSEC)
18行目 JCATDIR = $(TOPDIR)/man__LANGDIR__/cat$(MANSEC) JCATDIR = $(TOPDIR)/man/ja/cat$(MANSEC)
22行目 DEFRC = $(CONFDIR)/etc/fd__RCVERSION__rc DEFRC = $(HOME)/etc/fd__RCVERSION__rc

これでやっと make install が実行できる. 例によって,script を使うことを忘れないようにしよう.
script Log-install
make install
exit
less Log-install ← これで記録を見ておかしなところがないかチェック.

作業の最終チェック

上で行った作業が正しく行われているかチェックしよう. 環境変数の設定などもあったので,念のためにいったん異なる kterm を立ち上げて無事に立ち上がるか確認の上, いったんログアウト → ログイン して,チェックを行おう.

実習
kterm をもう一つ起動して,無事に起動するか確認する.
次に,その新しい kterm の中で, 新たに設定した環境変数がきちんと反映されているか,
env | grep -i path
として,表示されている PATH および MANPATH に望みの部分が入っているかチェックする.
次に,その新しい kterm の中で,
fd
として,どのディレクトリからでも fd が起動するかどうかチェックする.
次に,その新しい kterm の中で,
man fd
として,fd のマニュアルが見られるかどうかチェックする. さらに,
man man
などとして,他のマニュアルに悪影響が出ていないことを確認する.

ここまでうまくいったら,ログアウト→ログイン を行い, 上のチェックを再び行う. これで問題がなければ,インストール作業の山場は越えたと言える.

不要ファイルの後始末

さて,これでインストール作業そのものは終了したと言える. そこで,あとは残ったソースファイルなどを整理して保存するか,廃棄するだけである. これはポリシーとコストの問題なので,各人で適当に決めれば良いだろう.

ちなみにお勧めは,記憶容量に余裕があるならば,適切なディレクトリ(src など)を作成して,そこにファイルを保存しておくことである. この時,修正したファイルや script で作られた作業過程の記録ファイルを一緒にとっておくと後々役立つことがあるだろう.

実習
今回のソースファイル一式と作業内容などを保存しておこう.
まず,コンパイル途中で作られた不要なファイルを削除する. それには,一般にソースファイルのあるディレクトリで
make clean
とすればよい(という約束になっている).
次に,このソース一式を tarball にしてしまう. 作業については以前の授業の tar の使い方gzip の使い方 を参照すると良い.
cd ..
tar cvf FD-2.08d-20060707.tar ./FD-2.08d ← 日付などを入れておくと良い.
gzip FD-2.08d-20060707.tar
あとは,ソースファイルを置いておくディレクトリを作成して,そこへ移し, 残ったファイルを削除すれば良い.
(cd ~; mkdir src)
mv FD-2.08d-20060707.tar.gz ~/src

(cd FD-2.08d; \rm *)
rmdir FD-2.08d
rm FD-2.08d.tar

オプション等の調整

ソフトウェアによっては,オプションを適切に調整しないと使い物にならないものもあるので, ここで調整しておこう.

実習
まず FDclone を起動する. "?" キーを押すと簡単なヘルプが出るのでそれを読むと, "E" キーを押すとカスタマイズができることが分かる. そこで,カスタマイズをいろいろ行おう.
カスタマイズ画面では,Enter キーを押すとオプションの選択ができる. ちょっと分かりにくいので,いろいろやってみよう.

レポート課題(30点)

以下に示された課題について

AppliedMath-Report-11

という題名をつけて e-mail にて教官宛にレポートとして提出せよ(教官のメールアドレスは授業中に口頭で伝える).
なお,レポートを e-mail の代わりに TeX で作成した書面にて提出してもよい.

課題内容

  1. あなたが FDclone を使っているのを見て,友人が自分も使いたいと言い出したとする. そこで,あなたは FDclone のソース一式を友人に渡そうと思うが, この行為は FDclone のライセンスに反していないかどうか,根拠を挙げて答えよ.

  2. FDclone のソースファイル一式には何種類かのドキュメントが同梱されている. 全てのドキュメントファイルの名前を挙げ,それらに何が書いてあるのか解説せよ.

  3. FDclone のオプション設定を変えて,自分が一番使いやすいようにせよ. どこをどう変えて,どうなったかについて解説せよ.

  4. QKC と呼ばれるソフトウェアについて,同様にインストールを行い,適切に報告せよ.

  5. さらに余力のある者は, sl コマンド( 原作者のweb(豊田正史とslコマンド) , SL改造計画(web がなくなったようだ.ただし,どこかに移動したのかもしれない…) ) について同様にインストールを行い,適切に報告せよ.
    ちなみに… 改造版の方が「威力がある」.




最終更新日 … $Date: 2006-07-07 00:57:09+09 $
Valid CSS! Valid XHTML 1.1!