Как исправить ошибку «неожиданная разметка каталогов» при установке go-ethereum? - PullRequest
0 голосов
/ 27 декабря 2018

Все, я надеюсь, что этот вопрос относится к этому.

Я следую учебному пособию по Blockgeeks, пытаясь настроить свою среду для разработки блокчейна Ethereum.Я в основном добрался до последнего шага - установки роя, но я получаю сообщение об ошибке, которое, похоже, связано со структурой папки на github.Как мне это исправить?

Полезная информация:

-OS: Windows 10, запуск этого проекта в Cygwin с установленными надлежащими зависимостями gcc

-Go версия: 1.11.4

Я пытался найти решение уже несколько дней, но ничего, что я нашел, не сработало.Любая помощь приветствуется.

В основном все говорят, что эти шаги работают для них: https://swarm -guide.readthedocs.io / en / latest / installation.html # generic-linux

Может быть, это что-то с cygwin?

Когда я пытаюсь выполнить эту команду: $ go install -v ./cmd/swarm

Я ожидаю, что она будет установлена ​​правильно, но я получаю эту ошибку:

unexpected directory layout:
        import path: github.com/naoina/toml
        root: C:\cygwin64\home\di203179\go\src
        dir: C:\cygwin64\home\di203179\go\src\github.com\ethereum\go-ethereum\vendor\github.com\naoina\toml
        expand root: C:\cygwin64\home\di203179\go\src
        expand dir: C:\cygwin64\home\di203179\go\src\github.com\ethereum\go-ethereum\vendor\github.com\naoina\toml
        separator: \

Любая помощь приветствуется.

Обновление :

Я думаю, я нашел код, который выдает эту ошибку здесь: https://golang.org/src/cmd/go/internal/load/pkg.go

ИВот фрагмент:

// dirAndRoot returns the source directory and workspace root
// for the package p, guaranteeing that root is a path prefix of dir.
func dirAndRoot(p *Package) (dir, root string) {
    dir = filepath.Clean(p.Dir)
    root = filepath.Join(p.Root, "src")
    if !str.HasFilePathPrefix(dir, root) || p.ImportPath != "command-line-arguments" && filepath.Join(root, p.ImportPath) != dir {
        // Look for symlinks before reporting error.
        dir = expandPath(dir)
        root = expandPath(root)
    }

    if !str.HasFilePathPrefix(dir, root) || len(dir) <= len(root) || dir[len(root)] != filepath.Separator || p.ImportPath != "command-line-arguments" && !p.Internal.Local && filepath.Join(root, p.ImportPath) != dir {
        base.Fatalf("unexpected directory layout:\n"+
            "   import path: %s\n"+
            "   root: %s\n"+
            "   dir: %s\n"+
            "   expand root: %s\n"+
            "   expand dir: %s\n"+
            "   separator: %s",
            p.ImportPath,
            filepath.Join(p.Root, "src"),
            filepath.Clean(p.Dir),
            root,
            dir,
            string(filepath.Separator))
    }

    return dir, root
}

Кажется, есть несколько проблем, связанных с путями, которые могут заставить проект Go вызвать эту ошибку.Но я чувствую, что мой путь верен, поэтому я все еще в растерянности ...

Обновление 2:

Я подтвердил, что первое выражение if изэтот фрагмент выполняется, и первые три условия второго оператора if преобразуются в false (это означает, что они не являются причиной ошибки), что означает, что последнее условие, состоящее из нескольких операторов AND, должно возвращать значение true, поскольку ошибкабросает.Все еще не могу сказать почему, хотя.Спасибо за любую помощь.

...