2016-03-18 42 views
7

Etkileşimli modda golang çalıştırmaya çalışıyorum. Ben başarıyla ben -bash: go-eval: command not found Golang ile "komut bulunamadı" hatası

bazı bilgi sonuçlandı go-eval ran

  • go get github.com/sbinet/go-eval/ ran

    • :

      Bunun için go-eval kullanmak istediğiniz

      , ben README talimatları takip

      • echo $PATH verir: /usr/local/go/bin:...

      • echo $GOPATH verir:

        can't load package: package go-eval: cannot find package "go-eval" in any of: /usr/local/go/src/go-eval (from $GOROOT) $HOME/golang/src/go-eval (from $GOPATH)

      : whereis go-eval çıktı verir çalışan $HOME/golang

    • go install go-eval döner çalışan

  • +0

    GOPATH'niz nedir? YOLUNDA GOPATH/bin mi? – user1431317

    +0

    , PATH'nızda $ HOME/go/bin mi? – user1431317

    +0

    Neden downvote? Lütfen açıkla. – Forge

    cevap

    7

    GOPATH/bin dosyasını PATH'ye eklemeniz gerekiyor.

    PATH="$GOPATH/bin:$PATH" 
    

    Güncelleme: Starting with Go 1.8, set değilse $HOME/go için GOPATH varsayılan. GOPATH açıkça ayarlanmadıysa, yukarıdaki , çalışmayacaktır. Her iki ayarlamak için

    , sizin .profile bu ekleyin:

    export GOPATH="$HOME/go" 
    PATH="$GOPATH/bin:$PATH" 
    
    +0

    Çalışmaları. Sen ** kelimenin tam anlamıyla çalışan bir komut almak için komutta "$ GOPATH" kullanmanız gerekir. Tam yolu tam olarak yazıyorsanız, geçerli ve doğru olsa bile, işe yaramıyor gibi görünmektedir. Sonuçta, "echo $ PATH" ile test ettiğinizde, göreceğiniz tek şey sadece yoldur. $ GOPATH, ortam değişkeninize bir işaretçi olarak kullanılır, ancak "echo $ PATH" ile test ettiğinizde hiçbir şekilde belirtilmez. – MarsAndBack

    +0

    Yolu manuel olarak girerseniz işe yarayacaktır, $ GOPATH sadece daha güzeldir, çünkü yolu kodlamak zorunda kalmazsınız (GOPATH ayarlandığını varsayarsak, bu artık Go 1.8 ile başlamak zorunda değildir). – user1431317

    4

    $GOPATH/bin ikili go-eval mı? Komutu, çalışma dizininiz olarak $GOPATH/bin/ ile mi çalıştırıyorsunuz? Değilse, bu muhtemelen sorun.

    go get & go install go-eval ikili için $GOPATH/bin

    kontrol edin $GOPATH/bin içinde (varsa) ikilileri gitmek yükler. Eğer varsa,'dan ./go-eval ile çalıştırmayı deneyin. Eğer işe yarıyorsa, iyisin.

    Gelecekte, eğer koşmak istediğiniz kabukları herhangi birinden $GOPATH/bin içinde bulunan ikili dosyaları çalıştırmak isterseniz, aşağıdakileri ekleyin.bashrc veya profil:

    export PATH=$PATH:$GOPATH/bin

    Ardından terminali yeniden veya . ~/.bashrc veya . /etc/profile

    ben gidip-eval yüklemek go çalıştırırken çalıştırın:

    paket yükleyemiyor: paket gitmek -eval: herhangi bir "go-eval" paketini bulamıyor: /usr/local/go/src/go-eval ($ GOROOT'tan) $ HOME/golang/src/go-eval ($ GOPATH'dan)

    Yukarıdaki hatayı aldınız çünkü go-eval $HOME/golang/src/go-eval'da değil. go get github.com/sbinet/go-eval/ çalıştırıldığında, kaynak $GOPATH/src/github/sbinet/go-eval/'a indirilecektir. go install go-eval'u çalıştırmak istiyorsanız, $GOPATH/src dizin hiyerarşisindeki konumuyla ilgili paket adını belirtmeniz gerekir.

    örn. go install github/sbinet/go-eval

    2

    Bana verilen cevaplar ek olarak bu eklemek istiyorum.

    Yararlı bir ipucu olarak, her zaman numaralı komutunu kullanarak komutlarınızı test edebilirsiniz.

    Mesela: Komut bulunmazsa

    gitmek , size öncelikle ele gereken bir PATH sorunun olduğunu biliyorum.

    Ardından, bulmak komutunu kullanarak bu komutu bulmaya odaklanabilirsiniz. Mesela

    : find/-name -print 2>/dev/null

    ilk çizgi aramayı başlatmak için dizindir "git", -isim argüman 'komutu ise Arıyorum ve -print iyi bir sonuç alır. 2>/dev/null, birtakım hatalar görmenize gerek kalmayacak şekilde, her zaman erişilemeyen dizinlerin (null) sonuçlarını gönderir.

    Bu işlem, söz konusu komutu hızlı bir şekilde bulmanıza yardımcı olur ve ardından PATH env değişkeninize ekleyebilir ve diğer yanıtlarda belirtildiği gibi erişilebilir duruma gelir.