質問: linux アプリケーションのインストールについて linuxにアプリケーションをソースコードからインストールする場合、 configureのとき--prefix=(/usr/local/...)のオプションをつける場合がありますが、これをつけるなにかメリットはあるのでしょうか。 このオプションをつけなくてもインストールは可能なのですが。 よろしくお願いします。
回答: >実は、アプリケーションを作るのではなく、オープンソースのソフトを使う方です。(カテゴリがちょっと違ったかもしれません) カテゴリは違いますね。 本来だったら os: http://oshiete.goo.ne.jp/category/233/ の方でしょう。 >オープンソースのソフトをインストールする際 ここにも恐らく勘違いがあると思います。 「レポジトリ提供のバイナリ」ってのは、その殆どが「オープンソースのソフト」をディストロ提供側で、ユーザーの手間を削減する意味で、事前にビルドしたもの、です。 つまり、「オープンソースのソフト」と言うのは、別に「ソースファイルの形式"のみで"提供されている」って意味じゃありません。 「望めば必ずソースコードが入手出来る」と言う意味です。バイナリ形態だろうと何だろうと、この定義を満たせば「オープンソース」なんですよ。 恐らく、前提で把握すべき概念に対して勘違いしていると思われます。 >添付のreadmeファイルでは、./configureでよいと書かれているのですが、このソフトを使っているブログなどのサイトでは、/usr/localにインストール用のディレクトリを作成して、--prefixオプションでこのディレクトリを指定しています。 これはこう言う意味です。 基本的に./configureで良い、と書かれている場合はそれに従えば良いんですが......。 ところが、ディストロによって、 ・提供アプリケーションは全て/usr/binに突っ込む形式のもの...(例:debian系) ・ディストロが用意したos関連/直結のアプリは/usr/binにあるが、ユーザーが独自にインストールしようとしたアプリケーションは(レポジトリ経由の提供バイナリも含めて)/usr/local/binに突っ込む形式のもの......(例:redhat系) と言う二つの大きな「流儀」があります。 そうすると、そもそもその「ソフトウェア製作者」がどっちの形式を念頭に入れて、と言うより、もっと言うと「どっちのディストロのosを使ってソフトウェアを製作したのか?」それが鍵となってくるんです。 例えば、debian系ユーザーだったら/usr/binに突っ込む事を念頭に入れてソフトウェアを製作した、けどインストールする側のユーザーが同じディストロを使ってるとは限らないんですよね。 その「このソフトを使っているブログなどのサイト」のユーザーが作成者が使ってるのと同じosを使ってなかった、ってのが一番簡単に考えられる回答でしょう。 これは野良ビルドでは結構起こる事です。ソフトウェア製作者はmakefileを作るとき「自分が使ってるos」をベースにして考えるのは良くある事です。従って、システムが若干違っただけで「××と言うディレクトリが見つからない。configureが失敗しました」と言うエラーを目にする事になります。「それを避けるための」--prefixオプションなんです。 これは例えば、redhat系ディストロのユーザーが書いたソフトウェアを(過去の)ubuntuでビルドしようとして上手く行かなかった、なんて事を僕も経験してます。元のソフトが/usr/local/binにインストールされるのを念頭においてるのに、ubuntuにはそもそも/usr/localと言うディレクトリ自体が存在しなかった、とか。最近この手のconfigureの不具合を回避する為か、ubuntuにも/usr/localディレクトリが出来ましたけどね。 まあ、そう言った「互換性問題」の為に--prefixオプションが存在するのです。