Не удается найти модуль, предоставляющий пакет - PullRequest
0 голосов
/ 28 февраля 2019

Я не уверен, как решить проблему с зависимостями, которую я нашел с помощью "go mod".Из того, что я мог собрать, он выбирает неправильную версию некоторой суб-зависимости, которая указывает на репо, которого больше не существует.

Я очень очень новичок, поэтому я уверен, что я облажалсяЯ хотел бы помочь, чтобы понять, как это исправить.Пожалуйста, проверьте эти примеры:

Получение моей единственной зависимости с go get отлично работает

export GOPATH=`mktemp -d`
export MYAPP=`mktemp -d`
cd $MYAPP

cat << EOF > main.go
package main
import (
  "fmt"
  "os"
  "github.com/kubernetes/minikube/pkg/storage"
)
func main() {
  if err := storage.StartStorageProvisioner(); err != nil {
    fmt.Printf("Error starting provisioner: %v\n", err)
    os.Exit(1)
  }
}
EOF

go get github.com/kubernetes/minikube/pkg/storage
go build && echo "WORKED" || echo "FAILED"

Однако получение с модом go не работает

export GOPATH=`mktemp -d`
export MYAPP=`mktemp -d`
cd $MYAPP

cat << EOF > main.go
package main
import (
  "fmt"
  "os"
  "github.com/kubernetes/minikube/pkg/storage"
)
func main() {
  if err := storage.StartStorageProvisioner(); err != nil {
    fmt.Printf("Error starting provisioner: %v\n", err)
    os.Exit(1)
  }
}
EOF

go mod init github/my/repo
go build && echo "WORKED" || echo "FAILED"

Как мне заставить работать этот последний?

$ go version
go version go1.12 darwin/amd64

1 Ответ

0 голосов
/ 28 февраля 2019

В соответствии с вики-модулями Go wiki

Повседневное обновление и понижение зависимостей должно выполняться с помощью 'go get', который автоматически обновляет go.мод файл.Кроме того, вы можете редактировать go.mod напрямую.

В той степени, в которой я понял, go mod init не получит ваши зависимости, скорее он инициализирует новый модуль и создаст мод.файл для отслеживания версий зависимостей, которые использует ваш модуль.

Итак, получить ваши зависимости можно.

С другой стороны, модули Go будут в соответствии с вики снова предоставят определенные функции:

Стандартные команды, такие как go build или go test автоматически добавит новые зависимости по мере необходимости для удовлетворения импорта (обновление go.mod и загрузка новых зависимостей).

При необходимости более конкретные версии зависимостей могут быть выбраны с помощью таких команд, какgo get foo@v1.2.3, go get foo @ master, go get foo @ e3702bed2 или путем непосредственного редактирования go.mod.

...