• ベストアンサー

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

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

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

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

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

jackies996
質問者

お礼

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

jackies996
質問者

補足

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

その他の回答 (2)

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

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

jackies996
質問者

お礼

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

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

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

jackies996
質問者

お礼

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

jackies996
質問者

補足

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