go исполняемый файл как-то определяет неправильный GOROOT - PullRequest
0 голосов
/ 13 февраля 2019

Существует (не Go) приложение, которое запускает исполняемый файл Go в качестве подпроцесса сервера.Этот подпроцесс сам вызывает команду go для определенных операций.

Приложение -> Сервер Go -> go Исполняемый файл

Все они построены в системе с установленным Go 1.11.1.,И в этой системе нет никаких проблем.Тем не менее, на другой машине это не так, как я не могу понять.Оказывается, в системе установлен Go 1.11.5.

Вот ошибка, возникшая в результате процесса сервера Go, работающего на компьютере с установленным Go 1.11.5:

"couldn\'t exec \'go [list -e -json -compiled -test=true -export=false -deps=true -find=false -- 
/usr/local/Cellar/go/1.11.1/libexec/src/builtin]\': chdir 
/usr/local/Cellar/go/1.11.1/libexec/src/builtin: no such file or directory *os.PathError"

Iопределил, что строка /usr/local/Cellar/go/1.11.1/libexec фактически встроена в исполняемый файл сервера Go.Для этого я использовал strings.

GOROOT не отменяется ни на одной машине.

На моей машине go env GOROOT сообщает:

/usr/local/Cellar/go/1.11.1/libexec

На целимашина, go env GOROOT сообщает:

/usr/local/Cellar/go/1.11.5/libexec

В качестве теста я использовал точно такую ​​же настройку среды для запуска go env в моем хост-приложении вместо запуска процесса сервера.Это также создает GOROOT /usr/local/Cellar/go/1.11.5/libexec на целевой машине.

Если я do переопределяю GOROOT на /usr/local/Cellar/go/1.11.5/libexec в среде, которая порождает процесс моего сервера Go, все работает правильноцелевой компьютер.

Итак, у меня есть обходной путь: сначала захватить GOROOT с помощью go env, а затем переопределить GOROOT в среде серверного процесса.

Насколько я понимаю, вы никогда не должны устанавливать GOROOTТем не менее, похоже, что проблема заключается в несоответствии настроек GOROOT.И я особенно озадачен, потому что go env выглядит точно так, как я думаю, должно быть на обеих машинах во всех случаях, которые я могу попробовать протестировать.

Я все еще подозреваю, что это как-то связано со средой оболочки, которая настроенадля запуска серверных подпроцессов.

Кто-нибудь знает, что может быть не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...