2013-10-09 10 views
15

私はGoにアプリケーションを書いています。コンパイルする前に満たされる必要のある2つの外部依存関係があります。 Goエコシステムでは、これらのリモートdepsのインストールを含む簡単なインストールプロセスのためにこのアプリをパッケージ化する最良の方法は何ですか?ユーザーが私のアプリをどのようにインストールしますか?Goアプリの配布方法は?

+0

外部依存関係は何ですか?そして、あなたがコンパイルするのを期待するか、バイナリの配布について話していますか? –

+0

バイナリを配布したい – Carson

+1

@Carsonバイナリだけ? "外部依存関係"と言うとき、**はサードパーティのパッケージ(つまり、 'get get url.to/package/name')のみを意味するか、バイナリと一緒に必要な他のファイルはありますか?明示してください。 – elithrar

答えて

10
  • ユーザーがアプリケーションをコンパイルするために期待していると、そのアプリケーションはサードパーティ製のパッケージや資産に依存している場合、私はちょうどサポートされているプラ​​ットフォーム用のクロスコンパイルしてバイナリを提供することをお勧めしたいです。

  • あなたが(例えば、設定ファイル)を使用すると、アプリケーションと一緒に提供したい資産を持っている場合は、次のいずれかa)の資産とtar /はそれをジップ付きバイナリをパッケージ化。 b)base64でアセットをエンコードし、バイナリsee here for a good exampleにコンパイルするか、またはc)ユーザに対してこれを行うビルド/インストールスクリプトを作成します。

正確な要件を明確にすることができれば、より直接的に答えやすくなります。

+1

特にビルド/インストールスクリプトでは+1です。合理的にインテリジェントなスクリプト(またはMakefile)をソースディストリビューションに含めることができれば、パッケージマネージャーの方がはるかに簡単です。 –

5

Goバイナリには、コードに与える可能性のある実行時依存関係はありません。コンパイルされた実行可能ファイルにランタイムライブラリが含まれています。

したがって、C、C++、または他のコードからコンパイルされた他のバイナリと同じ方法でアプリケーションを配布します。

Linuxでは、適切なツールを使用して.rpmまたは.debファイルを作成することがあります。 Windowsでは、InnoSetupのようなツールを使用してインストーラを作成できます。

4

Goは、1つのバイナリを生成します。外部依存関係がコンパイル時の依存関係である場合、ユーザーはそれらについて心配する必要はありません。すでにコンパイルされています。

実行時依存関係の場合は、exeと関連するexeがGoで書かれているかどうかは関係ありません。 EDIT:実行時の依存関係があっても1つのバイナリでなければならない場合、実行時の依存関係をコンパイルしてコンパイルする必要があります。一つの方法は、エリートラーが提案した方法です。

Goの観点から心配する必要があるのは、ユーザーのプラットフォーム用にコードをコンパイルしたことだけです。

関連する問題