Golang весьма самоуверен в отношении того, в каких каталогах должен находиться ваш исходный код. (И тем не менее, он часто не дает вам полезного или действенного сообщения об ошибке по этому поводу.)
В любом случае, если ваш пакет называется github.com/subfinder/subfinder
, то для его сборки вам необходимо иметь исходные коды для него, хранящиеся в $GOPATH/src/github.com/subfinder/subfinder
, что в вашем случае будет/root/go/src/github.com/subfinder/subfinder
(из списка окружения, не .profile
.)
Один из способов гарантировать, что он будет извлечен в правильном месте, — это использовать go get
для его извлечения (и, при необходимости, сборки/установки. )Использование go get
с опцией -d
просто загрузит исходники, так что вы сможете изменить их и собрать, если вам нужно сделать это на отдельном шаге.
$ go get -d github.com/subfinder/subfinder
Эта команда доставит его в первый каталог в вашем $GOPATH
(, который на самом деле может быть списком каталогов, разделенных :
, подобно тому, как работает $PATH
, в маловероятном случае вы хотите искать несколько базовых каталогов. для пакетов.)
В вашем сообщении также есть несоответствие между списком окружения (, который говорит GOPATH="/root/go"
), и .profile
(, который говорит GOPATH="$HOME/go_projects"
. )Я полагаю, это потому, что вы перечисляете .profile
не -пользователя root, в то время как вы используете go build
и перечисляете среду как root? Или, может быть, у вас есть другая проблема, из-за которой ваш .profile
не читается, например, это не оболочка входа в систему, или у вас есть другой файл профиля, такой как .bash_profile
, который имеет приоритет, и т. д.
Кажется, у вас также есть проблема с завершающей новой строкой в настройке $GOPATH
корня (. Вы можете видеть, что двойная кавычка закрывается только во второй строке ), которая может быть вызывая некоторые из этих проблем... Так что, чтобы быть уверенным, вам, вероятно, следует попытаться исправить и это.