Applied Mathematics 7 (2014)
授業資料/10
をテンプレートにして作成
開始行:
#CONTENTS
// 第 10 回 -- software install
* Install softwares manually: ソフトウェアの手動インスト...
今回の授業では,ソフトウェアのインストール方法について学...
&br;
近年では,ライトユーザでも簡単に unix が使えるようにとい...
パッケージングをはじめとするインストールの自動化が進んで...
- おおまかに unix とよばれる OS でもパッケージング等は各...
- トラブルが起きたときに対処する能力が身につきにくい.
- 伝統的なソフトウェアや,小さなソフトウェアにはパッケー...
などを鑑みて,教育的理由から,この授業では手動インストー...
&br;
&br;
ms-windows などと異なり,unix ではソフトウェアはソースフ...
(Source File, 読んで理解出来るプログラム形式)の形式で配布...
インストールはソースを取得して自分でコンパイルすることに...
&br;
これは,
「欲しがった人が作る」という「言い出しっぺの法則」
にのっとってユーザが自分でソフトウェアを作ってきた,とい...
なるべく多くの環境で使えるようにと言う配慮,
ソフトウェアをなるべくオープンにしようという文化的背景か...
そうした背景をこの学習を通じて感じ取ることもこの授業の狙...
* Flow of installation: ソフトウェアの手動インストールの...
ソフトウェアを unix に手動でインストールする一般的な手順...
+ インストールするソフトウェアがどんなソフトウェアなのか...
+ ライセンスの確認
+ Source の取得, 展開
+ 説明書の通読
+ コンパイル前の設定
+ コンパイル
+ コンパイルしたファイルなどの配置, 後処理
この流れを意識しておけば,実はそんなに難しくはない.
もちろん,専門的知識を要求されるときもあるが,
どうしてもよく分からないときはインストールしなければ良い...
&br;
&br;
&ref(/materials/warning.png); 注意
セキュリティを考えると,
全体に自分が何をしているか良く把握できていない場合は,
むしろインストールしては「いけない」と考えた方が良いかも...
&br;
「トロイの木馬」をうっかり自分で仕込んでしまった,という...
うに,最低でも何をしているかの自覚を持ちながら作業するよ...
* Installation of a software: ソフトウェアの手動インスト...
内容の解説を行うとともに,
[[&ref(/materials/JNorth_arrow-right-sm.png); FDclone:htt...
と呼ばれる cui ツールを例として挙げ,
実際にインストールしながら作業に習熟する.
&br;
&br;
この FDclone というツールは非常に便利かつ(日本では)古くか...
インストールして使えるようになっておくと良いだろう.
** What is the software? どんなソフトウェアなのか概要を把...
当たり前であるが,インストールするソフトウェアがどんなソ...
そこで,情報収集を兼ねて,ソフトウェアの概要を調べておこ...
&br;
それには,そのソフトウェアを一次配布している開発元の web
を参照するのがまずは良いだろう.
&ref(/materials/notes.png); 実習
&br;
[[&ref(/materials/JNorth_arrow-right-sm.png); FDclone:htt...
の web
を見ると,そこに「FDclone って何?」というまさにおあつらえ...
があるのがわかる.
それを読んでまずは概要を把握せよ.
** Confirmation of the license: ライセンスの確認 [#g08ec1...
忘れがちであるが,
インストールしたいと思うソフトウェアのライセンスを確認し...
&br;
対価が必要なのかそうでないのか,
使用期間に制限はないか,再配布は可能かどうか等々,
ソフトウェアのライセンスの形態は非常に多様なので,結局,
ライセンスがどうなっているかは各ソフトウェア毎に調べる他...
&br;
一般に良く知られているのは「商用」と「フリー」という大ま...
これは大まかすぎて役に立たない.
&br;
&br;
&ref(/materials/warning.png); (注意)
ライセンスに違反した状態でソフトウェアを使用すると,
損害賠償金を請求されるなどの事態に発展する可能性があるた...
インストール前によくよくライセンスを確認しておくこと.
&br;
また,有益なソフトウェアを作成し,配布している作者への感...
ライセンスを遵守するようにしたい.
&ref(/materials/notes.png); 実習
&br;
FDclone のライセンスはやはりwebにまとめられているので,読...
** To obtain the source file: Source の取得 [#cdba278a]
さて,ソースファイル一式を取得しよう.
&br;
&br;
まずどのファイルをとってくれば良いのかであるが,これは配...
を丁寧に読めば問題ないだろう.
&br;
よく分からない場合は,unix ではソースファイル一式は
tarball と呼ばれる hogehoge.tar.gz もしくは hogehoge.tgz
という形式で配布されることが多いので,それを目安にすると...
&br;
&br;
// 次に取得の方法だが,
// これは要するにネットワークを用いたファイル転送であるの...
// 前回の授業の<a href="10.html#transfer">ファイルの転送<...
// HTTP (web を見るのに使われる情報のやり取りの規格)が使...
// &br;
// 少し前まではこの手段として ftp がもっとも良く使われて...
// 便利性やセキュリティとの兼ね合いなどの理由から,
// 現在では http と ftp が併用されるようになってきている.
// &br;
// どの方法を用いて配布するかは配布元が決めることであるの...
&ref(/materials/notes.png); 実習
&br;
FDclone のソースファイル一式を取得する.
// 本来は上記の web をたどって取得するところだが,配布元...
// &br;
//http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2006-7...
//&br;
//から,kterm 上で w3m や lynx を用いて取得すること(ネッ...
// &br;
unix からは,w3m や lynx, wget などのコマンドラインを使う...
** Extract the source: Source の展開 [#pebdd7e9]
さて,取得したソースファイル一式は, 通常は転送が簡単なよ...
作業できるようにこれを展開しよう.
&br;
tarball は gzip と tar があれば展開できる.
&br;
tar や gzip の扱いに関してはオンラインマニュアルを読めば...
いずれ調べておこう.
// 以前の授業の
// <a href="09.html#tar-use">tar の使い方</a>
// や
// <a href="09.html#gzip-use">gzip の使い方</a>
// を見るのが良い.
// &br;
// &br;
なお,展開すると大量のファイルが含まれていることも多いの...
以下の作業は一時的な作業用ディレクトリを用意してその中で...
&ref(/materials/notes.png); 実習
&br;
取得した FDclone のソースファイル FD-3.01b.tar.gz を展開...
&br;
例えば,新たに tmp-fd というディレクトリを作って作業する...
全体に次のような流れになるだろう.
> ''mkdir␣tmp-fd''
> ''cp␣FD-3.01b.tar.gz␣tmp-fd''
> ''cd␣tmp-fd''
> ''tar␣xvfz␣FD-3.01b.tar.gz''
この作業のあと,展開されたディレクトリやファイルの構成が...
** Readme: 説明書の通読 [#p10b7911]
さて,これでソースファイル一式が展開された形で入手できた...
ここでまずやるべきことはソースファイル一式に含まれている...
(説明書,解説,マニュアル等)
に目を通すことである.
ドキュメントファイルには INSTALL や README などの,大文字...
ザッとみるだけでどれだか分かるはずである.
&br;
これらのドキュメントにはインストールの方法や注意点,各種...
読んでおかないことには次の作業が進まない.
&br;
&br;
&ref(/materials/warning.png); 注意:
ドキュメントに目を通さずに「勘」で次の作業に進んで
うまくいかない〜と悩んで時間をつぶすケースが(特に素人に)...
そういうことにならないように注意しておこう.
&ref(/materials/notes.png); 実習
&br;
FDclone のソースファイル一式をみて,
ドキュメントに一通り目を通せ.
&br;
インストール方法が記してある Install
というファイルは特に重要なので良く読んでおくこと.
** Preparation to compile: コンパイル前の設定 [#ee853db3]
インストール方法について書かれたドキュメントを読みながら,
ソースをコンパイルする前にやらねばならない準備を行う.
大ざっぱに言えば,これは次の二つの作業からなる.
- OS や機種,環境ごとに異なる細かい違いに対応する.
&br;
本質的には技術的問題であるため,ソフトウェアの作者側の努...
この差に対応するための仕組みも存在する.
よく知られているのは,
''configure''
という名前をつけてあるソフトを実行する方法や,
''make␣config''
とする方法,また,
''xmkmf''
というツールを使う方法などである.
&br;
&br;
- ソフトウェアの動作オプション等を設定する.
&br;
ソフトを使う人の好みや環境によるため,
ユーザや管理者が設定することが多い.
好みと言ってもよくわからないなあ,という場合は,
そのまま(デフォルト)にしておいて後で修正しても良いだろう.
具体的にどうすれば良いかは,たいていはドキュメントに指示...
よく読んでその指示に従う.
&ref(/materials/notes.png); 実習
&br;
FDclone の Install というドキュメントを読み,そのドキュメ...
&br;
3. make。
&br;
と書かれている行の前までを実行せよ.
&ref(/materials/warning.png); 注意
教育用計算機システム上の Vine Linux や cygwin は,Linux ...
** Complile: コンパイル [#t442c234]
準備が終わったら,ソースをコンパイルしてバイナリにする.
これによって,自分の環境で実行できるファイルが作成される...
&br;
ソフトウェアを記述したコンピュータ言語などにも依存するが...
&br;
''make␣オプション''
&br;
とするだけで良いことが多い.
オプションも含め具体的にどうするかは,ドキュメントに書か...
&br;
&br;
なお,この作業は環境などよっては「失敗」することがあるの...
&br;
確認の方法としてもっとも良いのは
「Makefile の内容を読んで行われる作業を理解し,作業結果の...
この授業を聴講しているレベルでこれができるとは思えない(To...
&br;
そこで次善の策としてお勧めなのが,
「コンパイル作業中に出力されるログを読んで,問題が起きて...
というものである.
文字端末の画面をぼーっと眺めていると画面が流れてしまえば...
コンパイル作業時には以前の授業
[[&ref(/materials/JNorth_arrow-right-sm.png); 雑多なコマ...
での
''script''
コマンドを有効活用して記録をとり,あとからチェックするの...
&ref(/materials/notes.png); 実習
&br;
FDclone の Install というドキュメントを読んで,ドキュメン...
&br;
3. make。
&br;
と書かれていることを確認せよ.
それから,
''script''
を使って記録をとりながらコンパイルする.
具体的には以下のような感じになるだろう.
> ''script␣Log-make''
> ''make''
> ''exit''
> ''less␣Log-make''
これで記録を見ておかしなところがないかチェックできる.
さらに,Install ドキュメント中にある指示に従い,コンパイ...
''fd''
が無事に動くかどうか,
> ''./fd''
として確認する.
&br;
# ちなみに fd は qキーを押すと終了できる.
** Something after the compilation: コンパイルしたファイ...
さて,ここまで無事にたどり着いたら,あとは細かい後片付け...
しかし個人ユーザがソフトウェアをインストールする場合,こ...
注意しながら作業しよう.
&br;
&br;
この段階の作業は一般に次のように進行する.
++ 実行ファイル,マニュアル,設定ファイルなどを適切なディ...
++ 作業の最終チェック.
++ インストールに使用したが,既に不要となったファイルの後...
++ ソフトウェアのオプション等の細かい調整.
これらについて細かく解説しよう.
*** Location of files: ファイルを適切なディレクトリに置く...
さて,せっかくコンパイルまでしてファイルを作成したので,
それらのファイルを適切なディレクトリに置いて使えるように...
- ファイルを置くディレクトリを作成,準備する
&br;
しかし,この段階で注意が要る.
例えば,「/usr/local/bin などの(個人ユーザが操作できない)...
にファイルを置くことを前提としているソフトウェアが多いが...
&br;
&br;
この問題に対処するため,適切なディレクトリを作成して用意...
環境変数を設定したりという作業が必要となる.
これにはこれまで学習した様々な知識が必要となるので,よく...
&br;
&ref(/materials/warning.png); ソフトウェアによっては,い...
そういう時は素直にあきらめて,管理者にインストールをお願...
&br;
&br;
さて,具体的に考えると,
unix において個人ユーザレベルでソフトウェアをインストール...
新たに導入されるファイルは実行ファイル,マニュアル,設定...
そこで,これらのファイルをどういうディレクトリに置くのか...
: 実行ファイル … プログラム本体など. |
個人ユーザの場合,ユーザディレクトリに
''bin''
というディレクトリを作成してそこに置くのが一般的だろう.
&br;
また,そのディレクトリに path を通しておかないと使えない...
しかるべき設定をしておく必要がある.
&br;
この授業では既にこの設定等が済んでいるのでこれについては...
// &ref(/materials/notes.png); 実習
// <a href="07.html#prep">シェルスクリプトの作成から実行...
// で学習した知識を用いて,
// <ul>
// - もし存在しなければ ~/bin を作成.
// - もし path を通してなければ,~/bin に対する path を設...
&br;
: マニュアル |
個人ユーザの場合,ユーザディレクトリに
''man''
というディレクトリを作成してそこに置く…ぐらいか.
あと,それらに対して MANPATH と呼ばれる環境変数を設定して...
MANPATH について詳しくは,
''man␣man ''
として調べよ.
&br;
&ref(/materials/notes.png); 実習
&br;
具体的にどういうディレクトリが必要か Makefile を読んでみ...
&br;
''~/man/man1'' と ''~/man/ja/man1''
&br;
あたりを用意すれば良さそうである.
そこでまず,次のようにしてディレクトリを作成する.
//
> ''(cd␣~;␣mkdir␣man;␣cd␣ma...
> ''(cd␣~/man;␣mkdir␣ja;␣cd␣...
<
もちろん,作業後にこれらのディレクトリができているかどう...
また,どうして上のコマンドでディレクトリが作成できるか考...
&br;
&br;
次に MANPATH を設定する.
bash を使っているならば(通常はそうだろう),
.bashrc の中で次のように設定するのが良いだろう.
//
> ''if␣[␣-d␣$HOME/man␣]''
> ''then''
> ''MANPATH="$HOME/man:␣:";␣export␣MANP...
> ''fi''
<
もしも tcsh を使っているならば,.tcshrc の中などで
//
> ''setenv␣MANPATH␣"${HOME}/man:␣:"''
<
とすれば良い.
&br;
: 設定ファイル |
個人ユーザの場合,ユーザディレクトリに
''etc''
というディレクトリを作成してそこに置くことになるだろう.
今回は不要なはずだが,
念の為に,''etc'' ディレクトリをホームの下に作っておこう.
//
> ''(cd␣~;␣mkdir␣etc)''
<
&br;
: その他 |
Makefile を読むと,どうやら data を置くディレクトリが必要...
そこでそれにも対処することにしよう.
//
> ''(cd␣~;␣mkdir␣share;␣cd␣...
<
- 実際のファイル配置作業
さて,上記のディレクトリと環境変数の設定が終わったら,
ファイルを上記のディレクトリに配置すれば良い.
この作業は手動で行っても良いが,FDclone の Install ドキュ...
&br;
7. make␣install。
&br;
と書かれているので make install で行われることが(慣れれば...
&br;
ではファイルを置くディレクトリの指定はどこで行うのかとい...
その前に書かれている
&br;
5. Makefile.in にある TOPDIR 等のマクロを自分の環境に応じ...
&br;
という部分がそれに当たる.
&br;
&br;
さて,それではまず Makefile.in を適切に書き替え,その後,...
&br;
&br;
&ref(/materials/warning.png); (注意)
Install ドキュメントの "6. _fdrc を fdrc という名前でコピ...
という部分は今回は実行する必要がない.
というより,実行しない方が適切.
なぜなら,今回は個人ユーザでインストールするので,
共通設定ファイルを用意すると,結局,
一人のユーザ用に二つの設定ファイルが存在してしまうことに...
混乱するだけである.
&ref(/materials/notes.png); 実習
&br;
Makefile.in を書き替える前に念のためにバックアップをとっ...
//
> ''cp␣Makefile.in␣Makefile.in.ORG''
<
それから,Makefile.in をエディタで書き替え、設定を適切な...
これは「こうしろ」というルールが有るものではないが、まあ...
| 行 | 元 | 修正後 |h
| 12 行目 | BINTOP = $(PREFIX)/bin | BINTOP = $(HOME)/bin |
| 14 行目 | DATATOP = $(PREFIX)/share | DATATOP = $(HOME)...
| 16 行目 | MANTOP = $(PREFIX)/man | MANTOP = $(HOME)/m...
| 19 行目 | JMANDIR = $(BUILD)$(MANTOP)__LANGDIR__/man$(M...
| 20 行目 | JCATDIR = $(BUILD)$(MANTOP)__LANGDIR__/cat$(M...
| 25 行目 | DEFRC = $(CONFDIR)/fd__RCVERSION__rc | DEFR...
&br;
これでやっと make install が実行できる.
例によって,script を使うことを忘れないようにしよう.
//
> ''script␣Log-install''
> ''make␣install''
> ''exit''
> ''less␣Log-install''
これで記録を見ておかしなところがないかチェックしておこう.
*** Final check: 作業の最終チェック [#v710237a]
上で行った作業が正しく行われているかチェックしよう.
環境変数の設定などもあったので,念のためにいったん異なる
文字端末を立ち上げて無事に立ち上がるか確認の上,
いったんログアウト → ログイン して,チェックを行おう.
&ref(/materials/notes.png); 実習
&br;
文字端末をもう一つ起動して,無事に起動するか確認する.
&br;
次に,その新しい 文字端末の中で,
新たに設定した環境変数がきちんと反映されているか,
//
> ''env␣|␣grep␣-i␣path''
<
として,表示されている PATH および MANPATH に望みの部分が...
&br;
次に,その新しい 文字端末の中で,
//
> ''fd''
<
として,どのディレクトリからでも fd が起動するかどうかチ...
&br;
次に,その新しい 文字端末の中で,
//
>''man␣fd''
<
として,fd のマニュアルが見られるかどうかチェックする.
さらに,
//
> ''man␣man''
<
などとして,他のマニュアルに悪影響が出ていないことを確認...
&br;
&br;
ここまでうまくいったら,ログアウト→ログイン を行い,
上のチェックを再び行う.
これで問題がなければ,インストール作業の山場は越えたと言...
*** Cleaning: 不要ファイルの後始末 [#w3a4c956]
さて,これでインストール作業そのものは終了したと言える.
そこで,あとは残ったソースファイルなどを整理して保存する...
これはポリシーとコストの問題なので,各人で適当に決めれば...
&br;
&br;
ちなみにお勧めは,記憶容量に余裕があるならば,適切なディ...
など)を作成して,そこにファイルを保存しておくことである.
この時,修正したファイルや script
で作られた作業過程の記録ファイルを一緒にとっておくと後々...
&ref(/materials/notes.png); 実習
&br;
今回のソースファイル一式と作業内容などを保存しておこう.
&br;
まず,コンパイル途中で作られた不要なファイルを削除する.
それには,一般にソースファイルのあるディレクトリで
> ''make␣clean''
とすればよい(という約束になっている).
&br;
次に,このソース一式を tarball にしてしまう.
// 作業については以前の授業の
// <a href="09.html#tar-use">tar の使い方</a>
// や
// <a href="09.html#gzip-use">gzip の使い方</a>
// を参照すると良い.
//
> ''cd␣..''
> ''tar␣cvfz␣FD-3.01b-20130620.tar.gz␣....
<
上のように日付などを入れておくと良い.
あとは,ソースファイルを置いておくディレクトリを作成して...
残ったファイルを削除すれば良い.
//
> ''(cd␣~;␣mkdir␣src)''
> ''mv␣FD-3.01b-20130620.tar.gz␣~/src''
>
> ''(cd␣FD-3.01b;␣\rm␣*)''
> ''rmdir␣FD-3.01b''
> ''rm␣FD-3.01b.tar.gz''
*** Configuration: オプション等の調整 [#nc58dddf]
ソフトウェアによっては,オプションを適切に調整しないと使...
ここで調整しておこう.
&ref(/materials/notes.png); 実習
&br;
まず FDclone を起動する.
"?" キーを押すと簡単なヘルプが出るのでそれを読むと,
"E" キーを押すとカスタマイズができることが分かる.
そこで,カスタマイズをいろいろ行おう.
&br;
カスタマイズ画面では,Enter キーを押すとオプションの選択...
ちょっと分かりにくいので,いろいろやってみよう.
&br;&br;
* Report: レポート [#n0c904bc]
以下の課題について能う限り賢明な調査と考察を行い,
&br;
''AppliedMath7-Report-10''
&br;
という題名をつけて e-mail にて教官宛にレポートとして提出...
** Exercises: 課題 [#h02528a3]
+ あなたが FDclone を使っているのを見て,友人が自分も使い...
そこで,あなたは FDclone のソース一式を友人に渡そうと思う...
この行為は FDclone のライセンスに反していないかどうか,根...
&br;
&br;
+ FDclone のソースファイル一式には何種類かのドキュメント...
全てのドキュメントファイルの名前を挙げ,それらに何が書い...
&br;
&br;
+ FDclone のオプション設定を変えて,自分が一番使いやすい...
どこをどう変えて,どうなったかについて解説せよ.
&br;
&br;
+ [[&ref(/materials/JNorth_arrow-right-sm.png); QKC:http:...
と呼ばれるソフトウェアについて,同様にインストールを行い...
&br;
&br;
+ さらに余力のある者は,
sl コマンド(
[[&ref(/materials/JNorth_arrow-right-sm.png); 原作者のweb...
,
[[&ref(/materials/JNorth_arrow-right-sm.png); SL改造計画:...
)
について同様にインストールを行い,適切に報告せよ.
&br;
ちなみに,改造版の方が「威力がある」.
&br;&br;
* about Icons, ClipArts [#x48de721]
For details, see [[&ref(/materials/JNorth_arrow-right-sm....
// ━┃┏┓┛┗┣┳┫┻╋
// コマンドライン入力は「行頭を > で始める」.
// コマンドライン出力は「行頭をブランクで始める」.
// 実習アイコン
// &ref(/materials/notes.png);
// 注意アイコン
// &ref(/materials/warning.png);
// Link アイコン
// &ref(/materials/JNorth_arrow-right-sm.png);
// OK アイコン
// &ref(/materials/OK.png);
// NG アイコン
// &ref(/materials/NG.png);
// サンプルアイコン
// &ref(/materials/Gnome-Preferences.png);
// 大文字での強調
// CENTER:&size(24){''ほげほげ''};
// programu source 表記
// #highlighter(language=ruby,number=on,cache=on){{}}
// パイプ
// ¦
// 空白記号
// ␣
終了行:
#CONTENTS
// 第 10 回 -- software install
* Install softwares manually: ソフトウェアの手動インスト...
今回の授業では,ソフトウェアのインストール方法について学...
&br;
近年では,ライトユーザでも簡単に unix が使えるようにとい...
パッケージングをはじめとするインストールの自動化が進んで...
- おおまかに unix とよばれる OS でもパッケージング等は各...
- トラブルが起きたときに対処する能力が身につきにくい.
- 伝統的なソフトウェアや,小さなソフトウェアにはパッケー...
などを鑑みて,教育的理由から,この授業では手動インストー...
&br;
&br;
ms-windows などと異なり,unix ではソフトウェアはソースフ...
(Source File, 読んで理解出来るプログラム形式)の形式で配布...
インストールはソースを取得して自分でコンパイルすることに...
&br;
これは,
「欲しがった人が作る」という「言い出しっぺの法則」
にのっとってユーザが自分でソフトウェアを作ってきた,とい...
なるべく多くの環境で使えるようにと言う配慮,
ソフトウェアをなるべくオープンにしようという文化的背景か...
そうした背景をこの学習を通じて感じ取ることもこの授業の狙...
* Flow of installation: ソフトウェアの手動インストールの...
ソフトウェアを unix に手動でインストールする一般的な手順...
+ インストールするソフトウェアがどんなソフトウェアなのか...
+ ライセンスの確認
+ Source の取得, 展開
+ 説明書の通読
+ コンパイル前の設定
+ コンパイル
+ コンパイルしたファイルなどの配置, 後処理
この流れを意識しておけば,実はそんなに難しくはない.
もちろん,専門的知識を要求されるときもあるが,
どうしてもよく分からないときはインストールしなければ良い...
&br;
&br;
&ref(/materials/warning.png); 注意
セキュリティを考えると,
全体に自分が何をしているか良く把握できていない場合は,
むしろインストールしては「いけない」と考えた方が良いかも...
&br;
「トロイの木馬」をうっかり自分で仕込んでしまった,という...
うに,最低でも何をしているかの自覚を持ちながら作業するよ...
* Installation of a software: ソフトウェアの手動インスト...
内容の解説を行うとともに,
[[&ref(/materials/JNorth_arrow-right-sm.png); FDclone:htt...
と呼ばれる cui ツールを例として挙げ,
実際にインストールしながら作業に習熟する.
&br;
&br;
この FDclone というツールは非常に便利かつ(日本では)古くか...
インストールして使えるようになっておくと良いだろう.
** What is the software? どんなソフトウェアなのか概要を把...
当たり前であるが,インストールするソフトウェアがどんなソ...
そこで,情報収集を兼ねて,ソフトウェアの概要を調べておこ...
&br;
それには,そのソフトウェアを一次配布している開発元の web
を参照するのがまずは良いだろう.
&ref(/materials/notes.png); 実習
&br;
[[&ref(/materials/JNorth_arrow-right-sm.png); FDclone:htt...
の web
を見ると,そこに「FDclone って何?」というまさにおあつらえ...
があるのがわかる.
それを読んでまずは概要を把握せよ.
** Confirmation of the license: ライセンスの確認 [#g08ec1...
忘れがちであるが,
インストールしたいと思うソフトウェアのライセンスを確認し...
&br;
対価が必要なのかそうでないのか,
使用期間に制限はないか,再配布は可能かどうか等々,
ソフトウェアのライセンスの形態は非常に多様なので,結局,
ライセンスがどうなっているかは各ソフトウェア毎に調べる他...
&br;
一般に良く知られているのは「商用」と「フリー」という大ま...
これは大まかすぎて役に立たない.
&br;
&br;
&ref(/materials/warning.png); (注意)
ライセンスに違反した状態でソフトウェアを使用すると,
損害賠償金を請求されるなどの事態に発展する可能性があるた...
インストール前によくよくライセンスを確認しておくこと.
&br;
また,有益なソフトウェアを作成し,配布している作者への感...
ライセンスを遵守するようにしたい.
&ref(/materials/notes.png); 実習
&br;
FDclone のライセンスはやはりwebにまとめられているので,読...
** To obtain the source file: Source の取得 [#cdba278a]
さて,ソースファイル一式を取得しよう.
&br;
&br;
まずどのファイルをとってくれば良いのかであるが,これは配...
を丁寧に読めば問題ないだろう.
&br;
よく分からない場合は,unix ではソースファイル一式は
tarball と呼ばれる hogehoge.tar.gz もしくは hogehoge.tgz
という形式で配布されることが多いので,それを目安にすると...
&br;
&br;
// 次に取得の方法だが,
// これは要するにネットワークを用いたファイル転送であるの...
// 前回の授業の<a href="10.html#transfer">ファイルの転送<...
// HTTP (web を見るのに使われる情報のやり取りの規格)が使...
// &br;
// 少し前まではこの手段として ftp がもっとも良く使われて...
// 便利性やセキュリティとの兼ね合いなどの理由から,
// 現在では http と ftp が併用されるようになってきている.
// &br;
// どの方法を用いて配布するかは配布元が決めることであるの...
&ref(/materials/notes.png); 実習
&br;
FDclone のソースファイル一式を取得する.
// 本来は上記の web をたどって取得するところだが,配布元...
// &br;
//http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2006-7...
//&br;
//から,kterm 上で w3m や lynx を用いて取得すること(ネッ...
// &br;
unix からは,w3m や lynx, wget などのコマンドラインを使う...
** Extract the source: Source の展開 [#pebdd7e9]
さて,取得したソースファイル一式は, 通常は転送が簡単なよ...
作業できるようにこれを展開しよう.
&br;
tarball は gzip と tar があれば展開できる.
&br;
tar や gzip の扱いに関してはオンラインマニュアルを読めば...
いずれ調べておこう.
// 以前の授業の
// <a href="09.html#tar-use">tar の使い方</a>
// や
// <a href="09.html#gzip-use">gzip の使い方</a>
// を見るのが良い.
// &br;
// &br;
なお,展開すると大量のファイルが含まれていることも多いの...
以下の作業は一時的な作業用ディレクトリを用意してその中で...
&ref(/materials/notes.png); 実習
&br;
取得した FDclone のソースファイル FD-3.01b.tar.gz を展開...
&br;
例えば,新たに tmp-fd というディレクトリを作って作業する...
全体に次のような流れになるだろう.
> ''mkdir␣tmp-fd''
> ''cp␣FD-3.01b.tar.gz␣tmp-fd''
> ''cd␣tmp-fd''
> ''tar␣xvfz␣FD-3.01b.tar.gz''
この作業のあと,展開されたディレクトリやファイルの構成が...
** Readme: 説明書の通読 [#p10b7911]
さて,これでソースファイル一式が展開された形で入手できた...
ここでまずやるべきことはソースファイル一式に含まれている...
(説明書,解説,マニュアル等)
に目を通すことである.
ドキュメントファイルには INSTALL や README などの,大文字...
ザッとみるだけでどれだか分かるはずである.
&br;
これらのドキュメントにはインストールの方法や注意点,各種...
読んでおかないことには次の作業が進まない.
&br;
&br;
&ref(/materials/warning.png); 注意:
ドキュメントに目を通さずに「勘」で次の作業に進んで
うまくいかない〜と悩んで時間をつぶすケースが(特に素人に)...
そういうことにならないように注意しておこう.
&ref(/materials/notes.png); 実習
&br;
FDclone のソースファイル一式をみて,
ドキュメントに一通り目を通せ.
&br;
インストール方法が記してある Install
というファイルは特に重要なので良く読んでおくこと.
** Preparation to compile: コンパイル前の設定 [#ee853db3]
インストール方法について書かれたドキュメントを読みながら,
ソースをコンパイルする前にやらねばならない準備を行う.
大ざっぱに言えば,これは次の二つの作業からなる.
- OS や機種,環境ごとに異なる細かい違いに対応する.
&br;
本質的には技術的問題であるため,ソフトウェアの作者側の努...
この差に対応するための仕組みも存在する.
よく知られているのは,
''configure''
という名前をつけてあるソフトを実行する方法や,
''make␣config''
とする方法,また,
''xmkmf''
というツールを使う方法などである.
&br;
&br;
- ソフトウェアの動作オプション等を設定する.
&br;
ソフトを使う人の好みや環境によるため,
ユーザや管理者が設定することが多い.
好みと言ってもよくわからないなあ,という場合は,
そのまま(デフォルト)にしておいて後で修正しても良いだろう.
具体的にどうすれば良いかは,たいていはドキュメントに指示...
よく読んでその指示に従う.
&ref(/materials/notes.png); 実習
&br;
FDclone の Install というドキュメントを読み,そのドキュメ...
&br;
3. make。
&br;
と書かれている行の前までを実行せよ.
&ref(/materials/warning.png); 注意
教育用計算機システム上の Vine Linux や cygwin は,Linux ...
** Complile: コンパイル [#t442c234]
準備が終わったら,ソースをコンパイルしてバイナリにする.
これによって,自分の環境で実行できるファイルが作成される...
&br;
ソフトウェアを記述したコンピュータ言語などにも依存するが...
&br;
''make␣オプション''
&br;
とするだけで良いことが多い.
オプションも含め具体的にどうするかは,ドキュメントに書か...
&br;
&br;
なお,この作業は環境などよっては「失敗」することがあるの...
&br;
確認の方法としてもっとも良いのは
「Makefile の内容を読んで行われる作業を理解し,作業結果の...
この授業を聴講しているレベルでこれができるとは思えない(To...
&br;
そこで次善の策としてお勧めなのが,
「コンパイル作業中に出力されるログを読んで,問題が起きて...
というものである.
文字端末の画面をぼーっと眺めていると画面が流れてしまえば...
コンパイル作業時には以前の授業
[[&ref(/materials/JNorth_arrow-right-sm.png); 雑多なコマ...
での
''script''
コマンドを有効活用して記録をとり,あとからチェックするの...
&ref(/materials/notes.png); 実習
&br;
FDclone の Install というドキュメントを読んで,ドキュメン...
&br;
3. make。
&br;
と書かれていることを確認せよ.
それから,
''script''
を使って記録をとりながらコンパイルする.
具体的には以下のような感じになるだろう.
> ''script␣Log-make''
> ''make''
> ''exit''
> ''less␣Log-make''
これで記録を見ておかしなところがないかチェックできる.
さらに,Install ドキュメント中にある指示に従い,コンパイ...
''fd''
が無事に動くかどうか,
> ''./fd''
として確認する.
&br;
# ちなみに fd は qキーを押すと終了できる.
** Something after the compilation: コンパイルしたファイ...
さて,ここまで無事にたどり着いたら,あとは細かい後片付け...
しかし個人ユーザがソフトウェアをインストールする場合,こ...
注意しながら作業しよう.
&br;
&br;
この段階の作業は一般に次のように進行する.
++ 実行ファイル,マニュアル,設定ファイルなどを適切なディ...
++ 作業の最終チェック.
++ インストールに使用したが,既に不要となったファイルの後...
++ ソフトウェアのオプション等の細かい調整.
これらについて細かく解説しよう.
*** Location of files: ファイルを適切なディレクトリに置く...
さて,せっかくコンパイルまでしてファイルを作成したので,
それらのファイルを適切なディレクトリに置いて使えるように...
- ファイルを置くディレクトリを作成,準備する
&br;
しかし,この段階で注意が要る.
例えば,「/usr/local/bin などの(個人ユーザが操作できない)...
にファイルを置くことを前提としているソフトウェアが多いが...
&br;
&br;
この問題に対処するため,適切なディレクトリを作成して用意...
環境変数を設定したりという作業が必要となる.
これにはこれまで学習した様々な知識が必要となるので,よく...
&br;
&ref(/materials/warning.png); ソフトウェアによっては,い...
そういう時は素直にあきらめて,管理者にインストールをお願...
&br;
&br;
さて,具体的に考えると,
unix において個人ユーザレベルでソフトウェアをインストール...
新たに導入されるファイルは実行ファイル,マニュアル,設定...
そこで,これらのファイルをどういうディレクトリに置くのか...
: 実行ファイル … プログラム本体など. |
個人ユーザの場合,ユーザディレクトリに
''bin''
というディレクトリを作成してそこに置くのが一般的だろう.
&br;
また,そのディレクトリに path を通しておかないと使えない...
しかるべき設定をしておく必要がある.
&br;
この授業では既にこの設定等が済んでいるのでこれについては...
// &ref(/materials/notes.png); 実習
// <a href="07.html#prep">シェルスクリプトの作成から実行...
// で学習した知識を用いて,
// <ul>
// - もし存在しなければ ~/bin を作成.
// - もし path を通してなければ,~/bin に対する path を設...
&br;
: マニュアル |
個人ユーザの場合,ユーザディレクトリに
''man''
というディレクトリを作成してそこに置く…ぐらいか.
あと,それらに対して MANPATH と呼ばれる環境変数を設定して...
MANPATH について詳しくは,
''man␣man ''
として調べよ.
&br;
&ref(/materials/notes.png); 実習
&br;
具体的にどういうディレクトリが必要か Makefile を読んでみ...
&br;
''~/man/man1'' と ''~/man/ja/man1''
&br;
あたりを用意すれば良さそうである.
そこでまず,次のようにしてディレクトリを作成する.
//
> ''(cd␣~;␣mkdir␣man;␣cd␣ma...
> ''(cd␣~/man;␣mkdir␣ja;␣cd␣...
<
もちろん,作業後にこれらのディレクトリができているかどう...
また,どうして上のコマンドでディレクトリが作成できるか考...
&br;
&br;
次に MANPATH を設定する.
bash を使っているならば(通常はそうだろう),
.bashrc の中で次のように設定するのが良いだろう.
//
> ''if␣[␣-d␣$HOME/man␣]''
> ''then''
> ''MANPATH="$HOME/man:␣:";␣export␣MANP...
> ''fi''
<
もしも tcsh を使っているならば,.tcshrc の中などで
//
> ''setenv␣MANPATH␣"${HOME}/man:␣:"''
<
とすれば良い.
&br;
: 設定ファイル |
個人ユーザの場合,ユーザディレクトリに
''etc''
というディレクトリを作成してそこに置くことになるだろう.
今回は不要なはずだが,
念の為に,''etc'' ディレクトリをホームの下に作っておこう.
//
> ''(cd␣~;␣mkdir␣etc)''
<
&br;
: その他 |
Makefile を読むと,どうやら data を置くディレクトリが必要...
そこでそれにも対処することにしよう.
//
> ''(cd␣~;␣mkdir␣share;␣cd␣...
<
- 実際のファイル配置作業
さて,上記のディレクトリと環境変数の設定が終わったら,
ファイルを上記のディレクトリに配置すれば良い.
この作業は手動で行っても良いが,FDclone の Install ドキュ...
&br;
7. make␣install。
&br;
と書かれているので make install で行われることが(慣れれば...
&br;
ではファイルを置くディレクトリの指定はどこで行うのかとい...
その前に書かれている
&br;
5. Makefile.in にある TOPDIR 等のマクロを自分の環境に応じ...
&br;
という部分がそれに当たる.
&br;
&br;
さて,それではまず Makefile.in を適切に書き替え,その後,...
&br;
&br;
&ref(/materials/warning.png); (注意)
Install ドキュメントの "6. _fdrc を fdrc という名前でコピ...
という部分は今回は実行する必要がない.
というより,実行しない方が適切.
なぜなら,今回は個人ユーザでインストールするので,
共通設定ファイルを用意すると,結局,
一人のユーザ用に二つの設定ファイルが存在してしまうことに...
混乱するだけである.
&ref(/materials/notes.png); 実習
&br;
Makefile.in を書き替える前に念のためにバックアップをとっ...
//
> ''cp␣Makefile.in␣Makefile.in.ORG''
<
それから,Makefile.in をエディタで書き替え、設定を適切な...
これは「こうしろ」というルールが有るものではないが、まあ...
| 行 | 元 | 修正後 |h
| 12 行目 | BINTOP = $(PREFIX)/bin | BINTOP = $(HOME)/bin |
| 14 行目 | DATATOP = $(PREFIX)/share | DATATOP = $(HOME)...
| 16 行目 | MANTOP = $(PREFIX)/man | MANTOP = $(HOME)/m...
| 19 行目 | JMANDIR = $(BUILD)$(MANTOP)__LANGDIR__/man$(M...
| 20 行目 | JCATDIR = $(BUILD)$(MANTOP)__LANGDIR__/cat$(M...
| 25 行目 | DEFRC = $(CONFDIR)/fd__RCVERSION__rc | DEFR...
&br;
これでやっと make install が実行できる.
例によって,script を使うことを忘れないようにしよう.
//
> ''script␣Log-install''
> ''make␣install''
> ''exit''
> ''less␣Log-install''
これで記録を見ておかしなところがないかチェックしておこう.
*** Final check: 作業の最終チェック [#v710237a]
上で行った作業が正しく行われているかチェックしよう.
環境変数の設定などもあったので,念のためにいったん異なる
文字端末を立ち上げて無事に立ち上がるか確認の上,
いったんログアウト → ログイン して,チェックを行おう.
&ref(/materials/notes.png); 実習
&br;
文字端末をもう一つ起動して,無事に起動するか確認する.
&br;
次に,その新しい 文字端末の中で,
新たに設定した環境変数がきちんと反映されているか,
//
> ''env␣|␣grep␣-i␣path''
<
として,表示されている PATH および MANPATH に望みの部分が...
&br;
次に,その新しい 文字端末の中で,
//
> ''fd''
<
として,どのディレクトリからでも fd が起動するかどうかチ...
&br;
次に,その新しい 文字端末の中で,
//
>''man␣fd''
<
として,fd のマニュアルが見られるかどうかチェックする.
さらに,
//
> ''man␣man''
<
などとして,他のマニュアルに悪影響が出ていないことを確認...
&br;
&br;
ここまでうまくいったら,ログアウト→ログイン を行い,
上のチェックを再び行う.
これで問題がなければ,インストール作業の山場は越えたと言...
*** Cleaning: 不要ファイルの後始末 [#w3a4c956]
さて,これでインストール作業そのものは終了したと言える.
そこで,あとは残ったソースファイルなどを整理して保存する...
これはポリシーとコストの問題なので,各人で適当に決めれば...
&br;
&br;
ちなみにお勧めは,記憶容量に余裕があるならば,適切なディ...
など)を作成して,そこにファイルを保存しておくことである.
この時,修正したファイルや script
で作られた作業過程の記録ファイルを一緒にとっておくと後々...
&ref(/materials/notes.png); 実習
&br;
今回のソースファイル一式と作業内容などを保存しておこう.
&br;
まず,コンパイル途中で作られた不要なファイルを削除する.
それには,一般にソースファイルのあるディレクトリで
> ''make␣clean''
とすればよい(という約束になっている).
&br;
次に,このソース一式を tarball にしてしまう.
// 作業については以前の授業の
// <a href="09.html#tar-use">tar の使い方</a>
// や
// <a href="09.html#gzip-use">gzip の使い方</a>
// を参照すると良い.
//
> ''cd␣..''
> ''tar␣cvfz␣FD-3.01b-20130620.tar.gz␣....
<
上のように日付などを入れておくと良い.
あとは,ソースファイルを置いておくディレクトリを作成して...
残ったファイルを削除すれば良い.
//
> ''(cd␣~;␣mkdir␣src)''
> ''mv␣FD-3.01b-20130620.tar.gz␣~/src''
>
> ''(cd␣FD-3.01b;␣\rm␣*)''
> ''rmdir␣FD-3.01b''
> ''rm␣FD-3.01b.tar.gz''
*** Configuration: オプション等の調整 [#nc58dddf]
ソフトウェアによっては,オプションを適切に調整しないと使...
ここで調整しておこう.
&ref(/materials/notes.png); 実習
&br;
まず FDclone を起動する.
"?" キーを押すと簡単なヘルプが出るのでそれを読むと,
"E" キーを押すとカスタマイズができることが分かる.
そこで,カスタマイズをいろいろ行おう.
&br;
カスタマイズ画面では,Enter キーを押すとオプションの選択...
ちょっと分かりにくいので,いろいろやってみよう.
&br;&br;
* Report: レポート [#n0c904bc]
以下の課題について能う限り賢明な調査と考察を行い,
&br;
''AppliedMath7-Report-10''
&br;
という題名をつけて e-mail にて教官宛にレポートとして提出...
** Exercises: 課題 [#h02528a3]
+ あなたが FDclone を使っているのを見て,友人が自分も使い...
そこで,あなたは FDclone のソース一式を友人に渡そうと思う...
この行為は FDclone のライセンスに反していないかどうか,根...
&br;
&br;
+ FDclone のソースファイル一式には何種類かのドキュメント...
全てのドキュメントファイルの名前を挙げ,それらに何が書い...
&br;
&br;
+ FDclone のオプション設定を変えて,自分が一番使いやすい...
どこをどう変えて,どうなったかについて解説せよ.
&br;
&br;
+ [[&ref(/materials/JNorth_arrow-right-sm.png); QKC:http:...
と呼ばれるソフトウェアについて,同様にインストールを行い...
&br;
&br;
+ さらに余力のある者は,
sl コマンド(
[[&ref(/materials/JNorth_arrow-right-sm.png); 原作者のweb...
,
[[&ref(/materials/JNorth_arrow-right-sm.png); SL改造計画:...
)
について同様にインストールを行い,適切に報告せよ.
&br;
ちなみに,改造版の方が「威力がある」.
&br;&br;
* about Icons, ClipArts [#x48de721]
For details, see [[&ref(/materials/JNorth_arrow-right-sm....
// ━┃┏┓┛┗┣┳┫┻╋
// コマンドライン入力は「行頭を > で始める」.
// コマンドライン出力は「行頭をブランクで始める」.
// 実習アイコン
// &ref(/materials/notes.png);
// 注意アイコン
// &ref(/materials/warning.png);
// Link アイコン
// &ref(/materials/JNorth_arrow-right-sm.png);
// OK アイコン
// &ref(/materials/OK.png);
// NG アイコン
// &ref(/materials/NG.png);
// サンプルアイコン
// &ref(/materials/Gnome-Preferences.png);
// 大文字での強調
// CENTER:&size(24){''ほげほげ''};
// programu source 表記
// #highlighter(language=ruby,number=on,cache=on){{}}
// パイプ
// ¦
// 空白記号
// ␣
ページ名: