Linuxでアプリケーションをインストールする場合、レポジトリにある場合は、簡単にインストールできますが、ない場合は、configure、make、make installのコマンドを使ってインストールすることになりますが、途中でdependencyの関係でうまくインストールできないことがあります。
Windowsでは、簡単にインストールできるのに、Linuxでは、どうしてやっかいなのでしょうか。
また、Windowsでは”すべてのプログラム”をクリックすれば、インストールしたプログラムが表示されますが、Linuxでは、そういったものがなく、どのプログラムをインストールしたのかわからなくなってしまいます。
また、bin、etc、libといったいろいろなところに展開されるようですが、Windowsとディレクトリの考え方が違うのですか。
> 途中でdependencyの関係でうまくインストールできないことがあります。
> Windowsでは、簡単にインストールできるのに、Linuxでは、どうしてやっかいなのでしょうか。
Windows 用に書かれたプログラムの多くがシステムライブラリに対する依存関係以外持っていないか、依存関係があるライブラリなどがインストーラの中に同梱されていることが多いからです。
ただし、依存関係があるプログラムがインストーラに同梱されている場合、目には見えない問題が発生することもあります。それは、旧バージョンのライブラリがインストーラに含まれていた場合、既にインストールされている新バージョンのライブラリを知らぬ間に (インストーラはそのようなケースでも警告を出さないことが多い) 上書きしてしまうかもしれません。そうすると、動かなくなるプログラムも出てくることでしょう。
ということで、Linux (Unix) 流のやり方と Windows 流のやり方のどちらが良いとは一概には言えないということです。
> また、Windowsでは”すべてのプログラム”をクリックすれば、インス
> トールしたプログラムが表示されますが、Linuxでは、そういったものが
> なく、どのプログラムをインストールしたのかわからなくなってしまい
> ます。
rpm でインストールされているのであれば、rpm -qa で表示できますし、Solaris でしたら pkginfo で表示できます。ただし、Linux や Unix のプログラムというのはアプリケーション単位ではなくて、部品単位でパッケージングされていることが多いです。
あと、Windows のプログラム一覧はレジストリで管理されていますが、レジストリを解読するのが困難であり、ユーザが自由に操作して変更することが容易ではないことは Windows をある程度触ったことがあれば分かるかと思います。(レジストリの仕組みが悪いと言っている訳ではありません)
> また、bin、etc、libといったいろいろなところに展開されるようです
> が、 Windowsとディレクトリの考え方が違うのですか。
違います。Windows では管理者が Program Files などの指定した場所に入れることを想定していますが、Linux や Unix の場合は $(prefix)/bin、$(prefix)/lib、$(prefix)/etc などのように、ファイルの種類によって別のディレクトリにインストールされることが多いです。あと、$(prefix) を何処にするかはコンパイル時にハードコーディングすることが多いため、これによって一般ユーザでもインストールが可能など、柔軟なインストールが可能になっています。(バイナリ配布されているプログラムは、自分で $(prefix) を決められないため、柔軟性に欠けると言えます)
例えば、Well Known Port こそ使えないという制限こそあるものの、Apache などといったサーバを一般ユーザでインストールしちゃうことも可能ですよね。Windows ではライセンスの問題抜きにしてもそのようなことはできません。そもそも、一般ユーザがシステムのレジストリをいじることはできないでしょうから。
>Windowsでは、簡単にインストールできるのに、Linuxでは、どうしてやっかいなのでしょうか。
「使っているLinuxOSでパッケージが用意されている」=「使っているWindowsOS用のEXEファイルが、インストーラーやアーカイブファイルで用意されている」ということです。
用意されている場合は、ご自分で
>レポジトリにある場合は、簡単にインストールできます
とお書きの通り、Linuxでも簡単です。
>ない場合は、configure、make、make installのコマンドを使ってインストールすることになりますが、
これは、Windowsで言うとたとえば、Windows98用のexeファイルしか公開されていないので、そのソフトのソースプログラムをダウンロードして自分でコンパイルすることに相当します。これはWindowsでも簡単ではないし、Windows98用のプログラムだとWindowsXPでは動かないかもしれません。
>Linuxでは、そういったものがなく、どのプログラムをインストールしたのかわからなくなってしまいます。
お使いのパッケージ管理システムに一覧表示の機能があるはずです。
ソースプログラムからコンパイルした場合にはその一覧には載りませんが、これはWindowsでも同じです。
Windowsとの違いは、Linux系OSの種類が、Windowsの種類に比べ、多いと言うことでしょうか。そのため、アプリケーションをパッケージ化する人のパワーが、そのアプリケーションをバージョンアップする人のパワーに追いつかないので、パッケージ化されていないアプリケーション(EXEが用意されていないアプリケーション)を使うケースが多くなります。