Как распространять приложение Go?
Я написал приложение в Go. Он имеет две внешние зависимости, которые необходимо выполнить перед компиляцией. В экосистеме Go, что является лучшим способом для упаковки этого приложения для простого процесса установки, который включает в себя установку этих удаленных отпечатков? Как пользователь может установить мое приложение?
Ответы
Ответ 1
-
Если вы ожидаете, что пользователь будет компилировать ваше приложение, и это приложение будет использовать сторонние пакеты или активы, я бы предложил просто выполнить кросс-компиляцию для поддерживаемых платформ и предоставить исполняемые файлы.
-
Если у вас есть активы, которые вы хотите предоставить вместе с приложением (например, файл конфигурации), то: a) упакуйте двоичный файл с активами и tar/zip его; b) base64 закодирует активы и скомпилирует их в двоичный см. здесь для хорошего примера или c) создайте сборку/установку script, которая делает это для пользователя.
Если вы можете уточнить свои точные требования, будет проще ответить более непосредственно.
Ответ 2
Двоичные файлы Go не имеют зависимостей времени выполнения, кроме тех, которые вы могли бы навязать в своем коде. (Его библиотеки времени выполнения включены в скомпилированный исполняемый файл.)
Таким образом, вы будете распространять свое приложение так же, как любой другой статически связанный двоичный файл, скомпилированный из C, C++ или другого кода.
В Linux вы можете создать файл .rpm или .deb, используя соответствующие инструменты для этого. В Windows вы можете создать установщик, используя такой инструмент, как InnoSetup.
Ответ 3
Go производит один двоичный файл. Если ваши внешние зависимости зависят от времени компиляции, тогда вашим пользователям не нужно беспокоиться о них - они уже скомпилированы.
Если они зависят от времени выполнения, то это вопрос распределения exe и связанных ресурсов, которые любой установщик может сделать для вас - независимо от того, был ли exe написан на Go или нет, не имеет значения.
EDIT: Если это абсолютно необходимо для одного двоичного файла, даже с зависимостями времени выполнения, тогда вам нужно преобразовать ваши зависимости времени выполнения для компиляции временных. Один из методов предложил один элитар.
Единственное, что вам нужно беспокоиться с точки зрения Go, это то, что вы скомпилировали свой код для своей пользовательской платформы.