Go: "использование внутреннего пакета не разрешено" при запуске проекта Go, разветвленного из репозитория github

Я привыкаю к ​​Go и пытаюсь понять, как это работает.

Поэтому я пытаюсь запустить тестовый код из моего репозитория zoonoo/go-ethereum, разветвленного из исходного репозитория https://www.github.com/ethereum/go-ethereum.

Когда я бегу go test . под eth каталог, я получаю следующую ошибку:

eth/api.go:37:2: use of internal package not allowed

37-я строка eth/api.go выглядит следующим образом: "github.com/ethereum/go-ethereum/internal/ethapi"

Означает ли это, что при разветвлении репозитория go вам нужно изменить путь всех зависимостей в коде, чтобы запустить код?
Поддерживает ли система пакетов Go форк репозитория вообще?

2 ответа

Решение

Как показано в другом проекте Go:

Клонирование вилки

Если вы хотите работать с форком InfluxDB, например, с вашим собственным форком, вы все равно должны следовать приведенной выше структуре каталогов. Но вместо того, чтобы клонировать основной репо, вместо этого клонируйте свой форк. Для работы с вилкой выполните следующие действия:

export GOPATH=$HOME/gocodez
mkdir -p $GOPATH/src/github.com/influxdb
cd $GOPATH/src/github.com/influxdb
git clone git@github.com:<username>/influxdb

Сохранение структуры каталогов $GOPATH/src/github.com/influenxdb необходимо для корректной работы импорта Go.

Замените имя /URL InfluxDB вашим проектом, и примените ту же идею.

В вашем случае вилка GitHub предназначена только для того, чтобы вы вернули свой вклад в нее и сделали запрос Pull от него.
Это не будет служить источником для go get работать, так как пакеты не будут соответствовать вашему GitHub для URL репо.

Это связано с тем, что внутренние пакеты в go могут быть импортированы только пакетами в том же корневом каталоге. Это как пакет частных классов в Java. Если вы хотите редактировать код без переименования всех импортов пакетов, вам необходимо поддерживать ту же структуру папок, что и пакет, так что если github.com/zoonoo/go-ethereum находится в вашем $GOPATH переименовать каталог в github.com/ethereum/go-ethereum или создайте символическую ссылку и работайте из связанной директории.

Другие вопросы по тегам