• ベストアンサー
  • 困ってます

コンパイルに関して初歩的な質問です

ソースファイルをダウンロードしてきてgccでコンパイル、インストールしようと考えています。 初歩的な質問で申し訳ないのですが、ご教示いただけると助かります。 よろしくお願いします。 質問は以下のとおりです。 (1)開発環境でなく、本番機にコンパイラを導入してソフトウェアのコンパイル、インストールを行うことは避けたほうが良いでしょうか?もしくは、必要なソフトウェアのインストールが完了した後にすぐにコンパイラをアンインストールもしくは実行権限を外しておけば問題ないでしょうか? (2)一般的に言って、あるサーバーでコンパイルしたものを別のサーバーに持っていくとすんなり動作するものでしょうか?OSバージョンは同じであるという前提です。例えばbindを--prefix=/usr/local/namedでconfigure,make,make installし、/usr/local/namedをTARで固めて別サーバーで展開した場合、問題なく動作するのでしょうか?また、このようなアプローチ自体一般的でしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数240
  • ありがとう数32

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

  • ベストアンサー
  • 回答No.1
  • GGL
  • ベストアンサー率45% (23/51)

>開発環境でなく、本番機にコンパイラを導入してソフトウェアのコンパイル、インストールを行うことは避けたほうが良いでしょうか? プログラムを稼働させるマシン上にコンパイラを入れたほうがよさそうですね >必要なソフトウェアのインストールが完了した後にすぐにコンパイラをアンインストールもしくは実行権限を外しておけば問題ないでしょうか? 他に使わせたくないとかという意味ではOKでしょう。 ちょっと意図がわからない。。。 >一般的に言って、あるサーバーでコンパイルしたものを別のサーバーに持っていくとすんなり動作するものでしょうか? Versionが同じであればいきそうですが、 参照ライブラリとかなければ。。。と条件は付きますね。 「すんなり」とはいかない気がします。 >また、このようなアプローチ自体一般的でしょうか? なかなか聞かないですね。 bind,httpdとか一般的なフリーでコンパイル可能なものは たいてい稼働させるマシン上にてコンパイル等行うと思います。 すべて持論ですが。。。これがトラブルなく安全かなと。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。人それぞれやり方が違うのですね。 参考になりました。ありがとうございました。

質問者からの補足

稼動させるマシンにコンパイラを用意しておくのが一番確実ですよね?ただ1つ気になっていたのが、コンパイラを本番環境にインストールして何かしらのセキュリティ的な問題があるかも知れないと思ったのですが、特に問題はないでしょうか?

関連するQ&A

  • bindインストール後、/etc/named.confが生成されない。

    RHL7.3,bind-9.2.2rc1を次のようにインストールしましたが/etc/named.confが生成されません。findコマンドで探すと/etc/log.d/conf/services/named.confというのがあるんですがどうも目的のファイルではなさそうです。一体何がおかしいのでしょうか。 tar xvzf bind-9.2.2rc1.tar.gz cd bind-9.2.2rc1 LANG=C ./configure - - exec-prefix=/usr make make install

  • BINDソース 作成ファイル

    yumでBINDをインストールした場合named.confファイルが作成されるのですが ソースでインストールした場合は作成されるのでしょうか? 新規作成しないといけないのでしょうか? ご存知の方、教えてください。 ★環境★ Fedora15 bind-9.8.0-P4.tar.gz ★インストールコマンド★ wget -P /tmp ftp://ftp.isc.org/isc/bind/9.8.0-P4/bind-9.8.0-P4.tar.gz tar zxvf /tmp/bind-9.8.0-P4.tar.gz -C /tmp cd /tmp/bind-9.8.0-P4 mkdir /usr/local/bind ./configure --prefix=/usr/local/bind --without-openssl make make install ★確認済み事項★ find / -name named.conf  /tmp/bind-9.8.0-P4/bin/tests/named.conf  /tmp/bind-9.8.0-P4/bin/tests/virtual-time/autosign-ksk/ns1/named.conf  /tmp/bind-9.8.0-P4/bin/tests/virtual-time/slave/ns1/named.conf  /tmp/bind-9.8.0-P4/bin/tests/virtual-time/autosign-zsk/ns1/named.conf ・・・ 上記のように/tmp/bind-9.8.0-P4/bin/testsフォルダ配下のみに複数のnamed.confファイルあり。 /usr/local/bindフォルダ配下には無し。

  • 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 といったように、行なえば上書きインストールしてくれるのでしょうか? よろしくお願い致します。

その他の回答 (2)

  • 回答No.3
  • entree
  • ベストアンサー率55% (405/735)

> (1)開発環境でなく、本番機にコンパイラを導入してソフトウェアのコンパ > イル、インストールを行うことは避けたほうが良いでしょうか?もしく > は、必要なソフトウェアのインストールが完了した後にすぐにコンパイラ > をアンインストールもしくは実行権限を外しておけば問題ないでしょう > か? まず、セキュリティの観点からすると、運用に当たって不要なソフトは存在しない方がいいでしょう。インストールしたソフトがウィルス感染してたりすると大変なことですから。 次に、ディスクの観点からすると、不要なソフトをインストールすることで、例え消したとしてもディスク上のデータが早く断片化することになるでしょう。 ただし、Windows (NTFS, FAT) とは違ってあまり問題にならないような気がします。その他、Windows とは違って、レジストリなんてものも存在しないので、レジストリが汚れるとかも気にしなくてもよいでしょう。 > (2)一般的に言って、あるサーバーでコンパイルしたものを別のサーバー > に持っていくとすんなり動作するものでしょうか?OSバージョンは同じ > であるという前提です。例えばbindを--prefix=/usr/local/namedで > configure,make,make installし、/usr/local/namedをTARで固めて別 > サーバーで展開した場合、問題なく動作するのでしょうか? ライブラリがそろっていればたいてい動作します。特に Solaris は互換性を重視しているので、本番環境が開発環境よりも上位バージョンであってもたいていは動作します。(実際にそんなことをやるかどうかは別にして) > また、このようなアプローチ自体一般的でしょうか? Windows にソフトを入れるときにわざわざ自環境でコンパイルする人はほとんどいないでしょう。同じことだと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

別環境でビルドしたものを持っていく場合、コピーし忘れが若干心配です。全てのファイルを網羅できていたら問題ないのですが。。 回答ありがとうございました。

  • 回答No.2
  • D-Matsu
  • ベストアンサー率45% (1080/2394)

(1)本番機稼動停止の恐れだけでなくコンパイルによる応答遅延等の原因にもなりますし、開発環境を別に立てるべきです。 (2)バイナリパッケージがまさにそのアプローチでしょう。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

テスト環境はやはり必要ですね。ありがとうございました。

質問者からの補足

本番機となるべく同じ開発環境を用意しそこでコンパイル・インストール。それをTARか何かで固めて本番機に配布するということですね? コンパイラを本番機に導入することは何かしらのセキュリティリスクになるかなと漠然と考えていたのですがそういうわけでもないのですね?

関連するQ&A

  • bind9のnamed.confについて

    いつもお世話になっております。 今回表題のとおりbind9のnamed.confについて記述させていただきました。 今回 debianのetch4.0にbind9のインストールを行いました。 インストールを行ったbindバージョンは、 ・bind-9.5.0 ・bind-9.5.1b1 の二種類になります。 makefile作成時に、 ./configure --disable-ipv6 --prefix=/usr/local/bindバージョンディレクトリ名 で指定し、make⇒make installと行いました。 その後、named.confを触ろうとしても、named.confファイル自体がないことに気づきました。(両方のversionでも同じ現象発生を確認) いろいろなサイトを参考にしてみたのですが情報がなく今回ここに質問させていただきました。 どなたか解決方法をご存知の方がおられましたらご教授お願いできないでしょうか? できれば一番新しいb1のほうを使用したいと考えております。 よろしくお願いします。

  • ソースからmakeをインストール。どうすれば?

    こんばんわ。 ただいま、sparcマシンでサーバを構築している最中ですが、 ソースからmakeをインストールする方法がよくわかりません。 $ wget ftp://sunsite.tus.ac.jp/pub/archives/gnu/make/make-3.80.tar.gz $ tar -xvzf make-3.80.tar.gz $ cd make-3.80 $ ./configure --prefix=/usr/local $ make の後、パッケージ版のmakeをアンインストールする $ su Password:******** # pkgrm SMCmake ところまではうまくいったのですが、 「ソース内にあるmakeを使ってインストールする」という部分がよくわかりません。 どのmakeコマンドを使えばよろしいのでしょうか? findコマンドをみたのですが、思い当たるコマンドはありませんでした。 ご教授のほどお願いします。

  • GCCコンパイラ作成時にmemory.hも作成する方法

    GCCコンパイラ作成時にmemory.hも作成する方法 TOPPERS/JSPのコンフィグレーションツールを ビルドしたく、ビルド実績のあると耳にした GCC3.4.4をCygwin上に作成しました。 GCC3.4.4は以下の3つから作成しました。 ・binutils-2.16.tar.bz2 ・gcc-3.4.4.tar.bz2 ・newlib-1.14.0.tar.gz GCC3.4.4の作成手順は、Web上に掲載されている手順を 参考にして、以下の通り実施しました。 ■binutilsのインストール $ tar zxvf ./binutils-2.16.tar.gz $ cd binutils-2.16 $ ./configure --target=i686-elf --prefix=/cygdrive/c/cygwin/usr/local/gnu $ make $ make install ■gccのインストール $ tar xvjf ./gcc-3.4.4.tar.bz2 $ tar zxvf ./newlib-1.14.0.tar.gz $ export PATH=$PATH:cygdrive/c/cygwin/usr/local/gnu/bin/ $ cd gcc-3.4.4 $ ./configure --target=i686-elf --prefix=/cygdrive/c/cygwin/usr/local/gnu --with-newlib --with-headers=/cygdrive/c/cgywin/usr/local/src/gnu/newlib-1.14.0/newlib/libc/include/ --disable-bootstrap --enable-languages="c,c++" $ make $ make install しかしながら上記の手順で作成すると、コンパイラ作成時に memory.hが作成されません。 そのため、コンフィグレーションツールのビルドが成功しません。 そこで、教えていただきたいのですが、 そもそもGCC3.4.4のコンパイラを作成する際にmemory.hも一緒に作成し、 GCC3.4.4のg++がインクルードする設定にできるのでしょうか? できる場合は、作成に必要な手順を是非とも教えてください。

  • 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 をかけられるのでしょうか。 ご回答をお待ちしています。

  • libpngのコンパイルについて。

    今回、初めてMRTGサーバの構築を行う事になったので すが、コンパイルの時点で行き詰ってしまいました。 http://www.mrtg.jp/doc/unix-guide.html のサイトを参考にして、 /usr/local/bin/make -f scripts/makefile.std CC=/usr/local/bin/gcc ZLIBLIB=../zlib ZLIBINC=../zlib とコマンドを打って実行したのですが、 make:ar:command not found と言う様な結果がでてエラーでコンパイルできません。 make,gccは/usr/local/bin配下にインストールされて います。 arというもののパスを探しても見つかりません。 arは事前にインストールが必要なのでしょうか? どなたか分かる方、アドバイスお願い致します。 ちなみにlibpngのバージョンは1.0.18だったと思い ます。

  • CentOS5でLAPPを構築したいのですが・・・

    CentOS5にApacheとPostgreSqlとPHPをインストールしたいんですがうまくいきません。 httpd-2.2.14 postgresql-8.2.6 php-5.2.6 を入れようと思っています。 CentOS5をインストールして、IPアドレスやホスト名などの設定後、もともとインストールされているApacheなどを # rpm -qa | grep 'httpd' # rpm -e httpd などのコマンドで削除ごに #/usr/local/src/ に上記のApcheやPHPなどのファイルを持ってきてApache→Postgresql→PHPの順番にインストールしました。 Apcheの場合 # cd /usr/local/src # tar xfz /usr/local/src/httpd-2.2.14.tar.gz # cd httpd-2.2.14 # /configure # make # make install Postgresqlの場合 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install PHPの場合 # cd /usr/local/src # tar xfz /usr/local/src/php-5.2.6.tar.gz # cd /usr/local/src/php-5.2.6 # ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --with-pgsql # make # make install 上記の様なコマンドでインストールしましたがうまくいきません 詳細な設定もしているつもりですがいまいちうまくいきません どうか皆さまの知識をどうかお貸しくださいm(_ _)m

  • snortについて

    vinelinux3.1にsnort-2.4.0を入れようと思っております。 # rpm -q libpcap # apt-get install libpcap # rpm -q libpcap  libpcap-0.8.3-0vl1 # groupadd snort  # useradd -g snort -s /bin/true snort  # wget http://www.snort.org/dl/current/snort-2.4.0.tar.gz # tar zxvf snort-2.4.0.tar.gz # cd snort-2.4.0 # ./configure --prefix=/usr/local/snort # wget http://nchc.dl.sourceforge.net/sourceforge/pcre/pcre-6.1.tar.gz # tar zxvf pcre-6.1.tar.gz # cd pcre-6.1 # ./configure # make # make install # cd snort-2.4.0 # ./configure --prefix=/usr/local/snort #make #make install # mkdir /usr/local/snort/etc # mkdir /usr/local/snort/rules # mkdir /var/log/snort # cp ./etc/snort.conf /usr/local/snort/etc #cp ./etc/classification.config /usr/local/snort/etc # cp ./etc/reference.config /usr/local/snort/etc # cp ./rules/*.rules /usr/local/snort/rules # chown snort.snort /var/log/snort 以上の様にしてインストールしました。しかし # cp ./rules/*.rules /usr/local/snort/rules cp: ``./rules/*.rules'' を stat できません: そのようなファイルやディレクトリはありません。 といわれて実行できません。このエラーはどうやって回避すればいいのでしょうか?またsnortの起動方法を教えていただけませんか?

  • ./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方法などありますでしょうか?

  • 玄箱PRO用gdbのクロスコンパイル

    現在、玄箱PROを使って勉強をしています。 なお、勉強するにあたって Debian化によるコンパイル環境は玄箱に入れない(組み込み開発の勉強をしているので) としています。 gdbを玄箱にインストールしようと思っているのですが、途中でエラーが出てしまいます。 エラーを解消するために調べてみたのですが、解消のための方法をまねしてもうまくいきませんでした。 クロスコンパイルの知識のある方、経験のある方どなたか御教示願えませんでしょうか? やった手順と環境です。 【環境】 コンパイル環境:CentOS 5.5 動作環境:玄箱PRO(Linux2.6) 【手順】 (1)http://www.codesourcery.com/sgpp/portal/datasheet?target_arch=ARM&target_os=EABI からARM用EABIコンパイラをダウンロードし、コンパイル環境に展開 (2)玄箱PROの付属CDからgdb-2005q3-2.tar.gzを展開 (3)2で展開されたgdb-2005q3-2.tar.bz2をさらに展開 (4)3で展開されたgdb-2005q3ディレクトリ内に移動 (5)環境変数を設定 export PATH="<1で展開したコンパイラのパス>/libexec/gcc/arm-none-linux-gnueabi/3.4.4" export PATH="<1で展開したコンパイラのパス>/bin" export CROSS_PREFIX="<任意のパス>" (6)CCの環境変数を設定 export CC="<1で展開したコンパイラのパス>/bin/arm-none-linux-gnueabi-gcc" (6)configure実行 ./configure --host="arm-none-linux-gnueabi" --target="arm-none-linux-gnueabi" --build="i686-pc-linux-gnueabi" --prefix=${CROSS_PREFIX} (7)make実行 エラーの内容は以下でした。 =================================================== ・ ・ ・ make[2]: *** [install-recursive] エラー 1 ・ ・ ・ make[1]: *** [install-bfd] エラー 2 =================================================== 【補足】 make installするとinclude、share、libのディレクトリはできている。 gdbとは別にgcc-2005q3-2のコンパイルは成功している。 以上

  • $またはrootから%にする方法

    Vine Linux2.6r4にmplayerをインストールしようと思い、下記のサイトを参考に実行してみました。 http://bakuretsu.atso-net.jp/bakuretsu/linux/mplayer.html その中にあるインストール手順の中に%という文字が有り、どのようにしたら%に出来るのかわからなく中断してしまいました。 $ tar xvzf libdvdcss-1.2.8.tar.gz $ cd libdvdcss-1.2.8 % ./configure --prefix=/usr/local % make ネットや本で探したのですが分かりませんでした。 初歩的な内容だと思いますが%にする方法を教えてください。