• ベストアンサー

Linux アプリケーションのインストールについて

Linuxにアプリケーションをソースコードからインストールする場合、 Configureのとき--prefix=(/usr/local/...)のオプションをつける場合がありますが、これをつけるなにかメリットはあるのでしょうか。 このオプションをつけなくてもインストールは可能なのですが。 よろしくお願いします。

  • lexim
  • お礼率100% (2/2)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>実は、アプリケーションを作るのではなく、オープンソースのソフトを使う方です。(カテゴリがちょっと違ったかもしれません) カテゴリは違いますね。 本来だったら 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オプションが存在するのです。

lexim
質問者

お礼

ご返答ありがとうございます。 このソフトのREADMEファイルをよく見るとRedHat系で、参考にしたサイトではUbuntuを使っていました。 私もUbuntuを使っているので、なぜかなとふしぎに思っていたのですが、疑問が解消されました。 ありがとうございました。

その他の回答 (1)

回答No.1

デフォルトではほぼ付ける必要性がありません。 --prefixオプションは、そうですねえ……。 例えば、今みたいにレポジトリが完備されているディストリビューションが殆どの中で、ディストロ提供側が用意したバイナリのインストールが可能で、ほぼそれでまかなえる場合、/usr/binとか/usr/local/binに自分でビルドしたソフトウェアを追加した時、「パッケージ管理システム」が誤動作したりする可能性がある、んです。 そう言う時、野良ビルドしたソフトウェアを/usr/binとか/usr/local/binなんかじゃなくって、例えば/opt以下に突っ込む、とか言う流儀があるんですね。そう言うディレクトリがあれば、ですけど。 そう言う時、ディスティネーション(インストール先)を、通常想定されている/usr/binとか/usr/local/binから変更する必要性が出てくる、んです。例えば/opt/binとかに。 「その為の」--prefixですね。

lexim
質問者

お礼

ご返信ありがとうございます。 実は、アプリケーションを作るのではなく、オープンソースのソフトを使う方です。(カテゴリがちょっと違ったかもしれません) 詳しくは、オープンソースのソフトをインストールする際、添付のREADMEファイルでは、./configureでよいと書かれているのですが、このソフトを使っているブログなどのサイトでは、/usr/localにインストール用のディレクトリを作成して、--prefixオプションでこのディレクトリを指定しています。 こうすることのメリット、例えば、アンインストールの時このディレクトリを削除するだけでよいとか、このディレクトリのバックアップをとっておけばすぐに復帰できるとかのメリットがあるのかなと思ったのですが。

関連するQ&A

  • ソースからproftpをインストールした場合

    Solaris9にproftpをソースからインストールしたのですが、./configure時に「--prefix」オプションを指定しないでインストールしたのでファイルが一か所のディレクトリにありません。 ./configure --help で見た所 /usr/lodal/ 以外にも /usr/local/bin,/usr/local/lib などにはあるようですがどれがproftpによってインストールされたものかがわからない状態です。 以前インストールしたproftpの新しいバージョンが出た為入れ直そうとしてこのような問題が起きました。 「--prefix」オプションを指定していれば指定したディレクトリを削除すれば終了ですが指定しなかった場合はどのように削除すればいいでしょうか。 それとも削除せずに新しいバージョンのproftpをインストールした場合「--prefix」オプションを指定しなければ上書きされるのでしょうか。 できれば今後の事を考えて「--prefix」オプションでディレクトリを指定したいと考えております。 また、「--prefix」オプションを指定した場合のメリットは今回のような状態になった時に悩まなくてすむという事ですが、指定しなかった場合のメリットはあるのでしょうか。

  • Linux で \と入力する方法

    現在Linuxにて\という表示について困っております。 よくある ./configure --prefix=/usr/local \ などに出てくるこの"\"はどうシェル上で入力すればよいのでしょうか。 よろしくお願いします。

  • UNIX版インストール時のポート指定について

    サーバで7.4.8が動いている状態で、8.4.1をインストールしたいと思っています。 ./configure --prefix=/usr/local/postgres-8.4.10/ make make install といった形でインストールを行ないましたが、 --with-pgport=5433 とポートの指定忘れてしまいポートが被ってしまっているようで、うまく動きません。 そこで、「--with-pgport=5433」のオプションを付け足したいのですが、どのように行なえばよいでしょうか? (DB、TABLEなどは一切作っていません) もし、後で付け足すことができないのであれば、再インストールを行ないたいのですが、 ./configure --prefix=/usr/local/postgres-8.4.10/ --with-pgport=5433 make make install といったように、行なえば上書きインストールしてくれるのでしょうか? よろしくお願い致します。

  • perlのインストールについて

    RedHatLinux7.2またはSolalis5.7で perl-5.6.0をソースコードで root権限がなくユーザーのホームディレクトリで インストールしたいのですが いろいろと調べて試していると ./configure --prefix=/home/userを指定すれば Makefileが出来るみたいなのですが、 まず、./cofigureではなく./Configureしか存在しないようなので、 ./Configure --prefix=/home/userでやってみると オプションエラーのようになってしまいます。 perlのインストール方法の正しい手順を 教えていただけないでしょうか?

  • Linux へのセットアップ

    Fedora Core2 を利用しているのですが、PRM版のMYSQLをバージョンアップしたくて、rpm -e でmysql関連を削除してから。 MySQL(mysql-5.1.30.tar.gz)をソースから下記方法でインストールしました。 ./configure --with-charset=utf8 \ --with-extra-charsets=all \ --with-mysqld-user=mysql \ --with-innodb \ --enable-local-infile \ --prefix=/usr/local/mysql \ --with-unix-socket-path=/tmp/mysql.sock make make install ./scripts/mysql_install_db --user=mysql chown -R mysql /usr/local/mysql/ chgrp -R mysql /usr/local/mysql/ /usr/local/mysql/bin/mysqld_safe & しかし最後の起動のところでエラーが出てしまいます。 エラーログには 081218 16:30:33 [ERROR] /usr/local/mysql/libexec/mysqld: unknown option '--skip-federated' 081218 16:30:33 [ERROR] Aborting って書いてました。何故なんでしょうか。。。

  • Apache2.0ではじめてモジュールの追加

    現在、LinuxサーバにてApache2.0を利用しています。 mod_proxyが必要になったためモジュールの追加を行わなければなりません。 Apache2.0をインストール時のConfigureオプションでは、 インストール先を指定しただけでモジュール追加のオプションは指定して いませんでした。 ./configure --prefix=/usr/local/apache2 モジュールの追加をいままで行ったことがないので 手順が分かっていません。 もう一度 Apacheをインストール configure make && make install しなければならないのでしょうか。 運用中のApacheをできるだけ止めることなく安全に追加したいのですが、 良い方法はありますでしょうか。 こちらが現在の環境です。 Linux2.6 jakarta-tomcat-5.0.28 j2sdk-1_4_2_12 httpd-2.0.58 ご存知のかた教えてください。

  • Fedora10 への MySQL 5 のインストールについて

    Fedora10をフルインストールしたPCをサーバにみたてて、MySQL5.1.33-linux-i686-glibc23.tar.gz をインストールしようとしています。 root権限で(root@localhost) groupadd mysql useradd -g mysql mysql を行い、 /usr/localにて gunzip < mysql-VERSION.tar.gz | tar xvf - mysql-VERSION.tar.gz を行いました。 その他のディレクトリ usr/local/mysql や home/usr などでもtarコマンドを使って、解凍してみましたが、MySQL versionディレクトリを作成しました。 しかし、 cd mysql-VERSION をしたり、あるいは解凍をした位置などで、 ./configure --with-charset=ujis \ --prefix=/usr/local \ --localstatedir=/sql/data とうってみますが、必ず -bash: ./configure: そのようなファイルやディレクトリはありません と怒られてしまいます。 どうやったらconfigure をかけられるのでしょうか。 ご回答をお待ちしています。

  • libssh2のインストールについて

    php内でssh2_conect()を使用する必要があり ssh2をインストールする必要があるのですが、 ssh2のインストールにはlibssh2が必要となり、 libssh2インストールでエラーとなり困っています。 どなたかご教示いただけないでしょうか。 よろしくお願いします。 環境 OS CentOS 6.7 libssh2 version 1.2.8 コマンドおよび結果 % wget http://www.libssh2.org/download/libssh2-1.2.8.tar.gz % tar zxf libssh2-1.2.8.tar.gz % cd libssh2-1.2.8 % ./configure configure結果 checking for libssl... no checking for libgcrypt... no configure: error: cannot find OpenSSL or Libgcrypt, try --with-libssl-prefix=PATH or --with-libgcrypt-prefix=PATH % ./configure --with-libssl-prefix=/usr/local/ssl/lib --with-libgcrypt-prefix=/usr/local/ssl/lib /usr/local/ssl/libの配下にはいかが存在しています。 libcrypto.so libssl.a libssl.so.1.0.0 libcrypto.a libcrypto.so.1.0.0 libssl.so 結果はやり同じになってしまいます… checking for libssl... no checking for libgcrypt... no configure: error: cannot find OpenSSL or Libgcrypt, try --with-libssl-prefix=PATH or --with-libgcrypt-prefix=PATH その他、必要情報があれば教えていただけますでしょうか。 よろしくお願いいたします。

  • ./configureがしたいのですが・・・

    /usr/ports/www/apache22からportinstallしたいのですが、make時のoptionが多すぎてわからないので、とりあえずfulloptionでmakeしてその後色々いじって勉強したいのですが、色々検索エンジンで調べてみると #./configure --prefix=/usr/local/test/apache2 --enable-mods-shared=all #make # make install でできるらしいと書いてました。 しかし、./configureとコマンド入れてもcommand not foundになるのでautoconfとかautomakeがあるとできるらしいのでpkg_infoしてみるとすでにautoconf-2.59_2 autoconf-2.61 s automake-1.4.6_2 が/usr/local/binに入ってるようです。 どうしたら./configureできるようになるのでしょう? または./configure使わなくてもapache2.2をfulloptionでインストールするmake方法などありますでしょうか?

  • Linux PHPからSQLServerに接続できない

    Linuxにphpをインストールしたのですが別のWindowsServerのSQLServerに接続することができません。 LinuxにインストールしたMySQLのデータは参照できています。 なにかモジュールやドライバーなどが必要なのでしょうか? ちなみに別のWindowsから該当のSQLServerは接続できているのでホスト名、DB名、User名、Passwordは 正しいと思います。 以下は環境とphpインストール時のオプションです。 もし、不足しているものがあれば教えてください。よろしくお願いします。 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --enable-trans-sid --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql Red Hat Linux 8.0 Apache 2.0.55 php-5.1.2

    • 締切済み
    • PHP