このエントリーをはてなブックマークに追加
スポンサーリンク

インストール全般の注意

パッケージとソース一式

Linux用のアプリをインストールする方法は2種類あります。

1.ソースをコンパイルする
拡張子が.tar.gzのファイルをダウンロードして、tarで展開して、./configure makeでコンパイルします。

長所:
基本的に、UNIX用のアプリはソース上で互換性を保つ事になっています。ソースからコンパイルした場合、Linux、FreeBSD、SunOS等のUNIXの違いや、ビッグエンディアン、リトルエンディアン、リスク、シスク方式を問わずに使える事が多いです。また、ソースは最新バージョンがすぐダウンロードできる事が多いです。

短所:
ソースをコンパイルするのに時間がかかります。また、よりバージョンの高いコンパイラ、ライブラリ、ヘッダーファイルを必要とした場合に使えない事があります。また、設定ファイルを手動で変更しなければなりません。

2.コンパイル済みパッケージを入れる
RedHatなら拡張子.rpmのファイル等、各ディストリビューション用のコンパイル済みパッケージをインストールする事ができます。

長所:
コンパイル済みのためインストールは短時間で済みます。また、各種設定ファイルは自動的に設定されます。

短所:
コンパイル済みパッケージは、指定のLinux専用で別のバージョンでは使用できない事が多いです。また、メーカーがパッケージ化している間に最新版が更新されている事もあります。また、インストールディレクトリがそのLinux専用になり、一般的な説明を読み替える必要があります。

オープンソース

UNIXで「オープンソース」と言われるソフトは、ソースコードが公開され、ダウンロードした側でコンパイルしてインストールするようになっています。

ところで、Windowsでソフトをインストールする場合、ソースをコンパイルしてから…、というのは稀です。それは、
・Windowsではオープンソースのソフトは稀である。
・Windowsでは標準でCコンパイラがついていない。
・Windowsでは元々バイナリファイルに互換性がある。

という事情があるためです。しかし、UNIXは、Windowsと違い、さまざまなCPUで、さまざまなディストリビューションがあるため、ソースレベルで互換性を保つ事になっています。また、標準でCコンパイラが搭載されています。
Windows Linux
Cコンパイラ 別売 標準搭載
アプリの配布 バイナリの圧縮ファイル
CD-ROM、.lzh .zip .exeファイル
ソースコード一式
.tar.gz .tar.bz2
コンパイル済パッケージ
.rpm
アプリのインストール lzh、zipの解凍
インストーラー実行
OS再起動
tar xvzf
./configure
make
make install
OS付属ソフト ほとんどが、
マイクロソフト○○
ほとんどが、
フリーで公開されたもの
トラブルの解決 (OS搭載パソコンの)メーカーのサポート
マイクロソフト有償サポート
アプリの開発メーカー
エラーメッセージを読む
Googleで調べる
アプリの種類 マイクロソフト○○。
サードパーティー社製。
フリーソフト/シェアウェア。
フリーが多い。

圧縮ファイルの解凍

Linux用ソフトは、大抵は圧縮ファイル(アーカイブ)で配布されています。しかし、WindowsソフトのようなLHAやRARで圧縮されている場合は稀で、たいていは、tarという複数ファイルを1つのファイルにまとめる(アーカイブする)ソフトと、gzipという圧縮が両方かかっている事が多いです。

tarで1つにまとめられたファイルがさらに圧縮されている場合があります。gzipで圧縮されたファイルは、拡張子が .tar.gzもしくは、.tgzになっています。また、bunzip2で圧縮されたファイルは、拡張子が .tar.bz2または、tbzになっています。

圧縮ファイルを解凍するためには、圧縮ファイルを解凍したいディレクトリに移動し、

tar xvzf ***.tar.gz
または、
tar xvjf ***.tar.bz2
のように入力します。(***にはファイル名が入ります。)

ここで、
x:ファイルを解凍する。
v:処理したファイル名を表示する。
z:gzipをフィルターして、圧縮ファイルを解凍する。
j:bunzip2をフィルターして、圧縮ファイルを解凍する。
f:指定のアーカイブファイルを使う。

という意味です。もしSunOSなどで、tar が zやjを受け付けない場合は、

gzip -dc ***.tar.gz | tar xvf -
bunzip2 -dc ***.tar.bz2 | tar xvf -

のように、2つのコマンドをパイプする事で解決できます。

コンフィギュア

ソースをコンパイルする場合、 make というツールを使います。これは、どのソースは、どのソース(あるいは、オブジェクト)を利用しているか、といった依存関係を記述したファイル(以下、Makefile)を使って、ソースをコンパイルするツールです。

たいていの場合、そういった難しい事はしらなくても、make と入力するだけで、ソースがコンパイルされます。

しかし、Linuxにはさまざまなバリエーション(ディストリビューション)があり、コンパイラや、標準インクルードファイル(stdio.hなど)が、どこのディレクトリにインストールされているか、といった、特定の決まりはありません。

そのため、お使いの環境によって、Makefileを書き換えなければなりません。

また、 apacheやsambaなどで、標準以外の機能を利用したい場合、Makefileに使いたい機能がコンパイルされるような指示をしなければなりません。

しかし、Makefileを手動で書き換えるには困難です。とくに、Makefileのどこをどう直せばいいか、というのは、作者でなければわからない事も多く、注釈を見て修正するにしても、それだけで専門知識を必要とします。

そこで、Makefileを自動生成するソフト(シェルスクリプト)が入っている場合が多いです。使い方は簡単で、

./configure [--オプション]

とするだけです。これで、お使いの環境を自動的に判別し、Makefileが生成されます。

・エラーが出る場合
./configureが成功したかどうか、メッセージをよく読んでください。失敗した場合、何のライブラリが足りない、あるいはバージョンが低いかが表示されますので、必要としているライブラリをインストールしてから、./configureをやり直してください。

・./configureがない場合
ソフトによっては、./configureがない場合があります。標準関数(<stdio.h>や<stdlib.h>)のみを使う場合は、大抵はそのままmakeすればコンパイルできるため、ついてない事があります。また、./configureするのではなく、各ディストリビューション用のMakefileがついている場合や、Makefileをコメントに従って修正しないといけない場合もあります。

./configureがついておらず、makeがうまくいかない場合は、Readme.txtやReadme.1stというファイルがあるかどうか探し、あるなら読んでみます。また、Makefileそのものにコメントがついているかもしれません。ほぼ英文ですが、goo辞書などで調べて読んでみてください。

コンパイル&インストール

コンフィギュアが成功した場合、コンパイルは簡単です。単に、

make

とするだけです。すると、 Makefile を読み込み、必要なソースを指定した順番でコンパイルしてくれます。

・コンパイルをやり直す場合
もしコンパイルを失敗してしまった場合、あるいは、コンフィギュアをやりなおした場合、Makefileによって、ソースの依存関係が正しく記述されていれば、再コンパイルは簡単です。再び make と入力するだけで、前回のコンパイル時から変更があったファイルだけコンパイルされます。

ただし、ソフトによっては、この依存関係が正しく記述されていない事もあります。そういった場合、前に生成したオブジェクトやバイナリファイルを消してから再コンパイルします。

make clean
make


・インストール
コンパイルが終わったらインストールします。インストール先はソフトによって決まっていますが、コンフィギュア時に指定する事もできます。もっとも、インストール先はデフォルトのままにしておいた方が、各所にある説明文をそのまま参照する事ができるので、初心者の方はなるべくデフォルトのままにしておきましょう。

make install

これにより、インストールする事ができます。

ソフトの起動

インストールしたソフトの起動方法は、ソフトによって異なります。Windowsのように、スタートメニューもなければ、再起動すれば自動的に起動してくれるというものでもありません。

また、Linuxのようなサーバー機は、いつ誰がログインしているかわかないため、Windowsのようにソフトをインストールするするたびに再起動したりはしません。

起動方法や、ブート時に自動起動させる方法については、各ソフトの説明(apacheやsambaの所)を見てください。

うまくいかない場合

・問題は自力で解決しましょう
本に載っている手順どおり、あるいは、このホームページに乗っている手順どおりにやったのに、うまく動かない場合があります。というより、Linuxの世界では、どこかに書いてある通りに入力して、そのまますんなり動く事の方が稀です。

なぜなら、Linuxのソフトはバージョンアップが頻繁で、バージョンアップのたびにコンフィギュア時に指定するオプションが異なっていたり、あるいは、起動方法、自動起動の設定がまったく違っていたりするからです。

そこで、お使いのバージョンに付随するドキュメント(たいていは、README.TXTや、README..1stというファイル名)を読みます。また、Makefileに簡単な説明書きがあることもあります。付属するドキュメントを読みながら設定してください。

LinuxではWindowsの「コントロールパネル」のようなものは使わずに、vi エディター等で直接設定ファイルを書き換える事が多いです。なので、アプリをインストールする前に、viエディターの使い方はマスターしておいてください。

Linux用の有名なソフトでうまくいかない場合、大抵同じ事で悩んた事のある方がいて、このサイトのような注意点を書いてくれているサイトが多くありますので、問題の発生したソフト名と、エラーメッセージでGoogleで検索すると、解決法が掲載されているサイトにたどりつける事が、わりと多くあります。筆者も、その方法でかなりの問題が解決しました。

いずれにしても、Linuxは基本的に問題は自力で解決しなければなりませんので、わからない事はGoogleで調べる習慣はつけておいてください。

・英語を読みましょう
インストールしたソフトがうまく動かない、あるいは、コンパイル自体が通らないという場合、付属のドキュメントや設定ファイルに書かれたコメント文を読みながら解決するのが普通です。

しかし、1つ問題があります。それは、Linuxのソフトはほとんどが英語であるという事です。なにしろ、UNIX用のソフトを作ってる人は、ほとんどが外人さんです。といいますか、たとえ英語圏ではない人(日本人とか)の作ったソフトであっても、ドキュメントは英文である場合はほとんどです。UNIXソフトは汎用性が重視されるため、2バイトコードを使ってコメント文を書いたり、2バイトコードのエラーメッセージを使う事はほとんどありません。 なので、日本語のドキュメントが付随している場合はかなり稀です。

そこで、日本語で解説しているホームページを探すわけですが、日本語で解説しているページが作られるまでのタイムラグで、すでにバージョンが古くなってしまう事があります。また、下手に英語を直訳した日本語を読むと、そのあまりの意味不明さで頭が痛くなる事もあります。同様に、英文翻訳ソフトなどかけても、あまりの直訳さによけい意味がわからなくなります。

なので、英和辞典やgooの辞書機能を利用して自力で英語のドキュメントを読んだ方が良いです。特に、コンピューターに関する文献はコンピューターの専門用語が多く、コンピューター用語をしらない人が訳すと意味不明になる文章も、コンピューター用語を知っている人が読むと、見慣れた単語ばかりでかえって訳しやすい場合が多いです。

このように、Linuxで自力でソフトを組み込んで設定するためには、ある程度の英文読解の能力が必須となります。英文がまったく読めないと、エラーが出た場合など応用が利かなくなってしまいます。

とはいえ、私も英語が大の苦手ですが、書かれている意味はだいたい理解できます。というのも、コンパイル&インストールに関するドキュメントが難しい文法で書かれている事は稀で、中学生程度の英文が読めれば十分なのと、gooでわからない英単語さえ調べてしまえば、あとは使われている単語の組み合わせで、だいたいの意味がわかるからです。また、コンピューター関係の文書は、たとえ英文であっても見慣れた単語(install、copy、edit、configureなど)が多く、我々コンピューター使いとっては読みやすい事が多いです。

・ないものは自分で作りましょう
「こんな自動スクリプトがあれば便利なのに」とか「こんなソフトがあればサーバーが管理しやすいのに」、と思ってGoogleで探しても、なかなか自分の用途にぴったり合ったものは見つかりません。

しかし、Linux用のほとんどのアプリは、多くの人が無償で提供してくれたものであるという事を忘れてはなりません。Linuxは、「ないものは自分で作る」のが基本です。そして、そういう人たちが参加して、今のLinuxの形があるのです。Linuxのディストリビューションは別にそれを発売している会社が開発したものだけを集めたわけではなく、ほとんどが一般の人の作成したアプリの集大成なのです。

このサイトをお読みになっている皆さんも、そんなLinuxのアプリの1つを作ってみませんか?
スポンサーリンク