macos - لا يمكن التنزيل ، $ GOPATH غير مضبوط




installation (9)

شاهد فيديو

بشكل عام ، أوصيك دائمًا بهذا الفيديو الرسمي من Go للحصول على نظرة عامة سريعة على الأمر:

http://www.youtube.com/watch?v=XCsL89YtqCs

من الأسهل أن يتم عرضه أكثر من أن يُقال.

jwfearn صياغة الجزء المهم من الفيديو:

export GOPATH="${HOME}/gocode"; export PATH="${PATH}:${GOPATH}/bin"; mkdir -p "${GOPATH}"

أريد تثبيت json2csv باستخدام go get github.com/jehiah/json2csv github.com/jehiah/json2csv ولكن أتلقى هذا الخطأ:

package github.com/jehiah/json2csv: cannot download, $GOPATH not set. For more details see: go help go path

أي مساعدة حول كيفية إصلاح هذا على ماك؟


باستخدام الشراب

أنا تثبيته باستخدام brew .

$ brew install go

عندما يتم ذلك ، إذا قمت بتشغيل أمر الشراب هذا ، فسوف تظهر المعلومات التالية:

$ brew info go
go: stable 1.4.2 (bottled), HEAD
Go programming environment
https://golang.org
/usr/local/Cellar/go/1.4.2 (4676 files, 158M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
==> Options
--with-cc-all
    Build with cross-compilers and runtime support for all supported platforms
--with-cc-common
    Build with cross-compilers and runtime support for darwin, linux and windows
--without-cgo
    Build without cgo
--without-godoc
    godoc will not be installed for you
--without-vet
    vet will not be installed for you
--HEAD
    Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin

القطع الهامة هناك هي هذه الخطوط:

/usr/local/Cellar/go/1.4.2 (4676 ملفًا ، 158 مليونًا) *

تصدير PATH = $ PATH: / usr / local / opt / go / libexec / bin

إعداد بيئة GO

هذا يبين أين تم تركيب GO. نحن بحاجة إلى القيام بما يلي لإعداد بيئة GO:

$ export PATH=$PATH:/usr/local/opt/go/libexec/bin
$ export GOPATH=/usr/local/opt/go/bin

يمكنك بعد ذلك التحقق من استخدام GO لمعرفة ما إذا تمت تهيئتها بشكل صحيح:

$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/usr/local/opt/go/bin"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

إعداد json2csv

تبدو جيدة ، لذلك يتيح لك تثبيت json2csv :

$ go get github.com/jehiah/json2csv
$

ماذا حدث للتو؟ تثبيته. يمكنك التحقق من هذا القبيل:

$ $ ls -l $GOPATH/bin
total 5248
-rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv

حسنًا ، فلماذا لا اكتب json2csv في shell الخاص بي؟ ذلك لأن الدليل /bin تحت $GOPATH ليس على $PATH .

$ type -f json2csv
-bash: type: json2csv: not found

لذا دعنا نضيفها مؤقتًا:

$ export PATH=$GOPATH/bin:$PATH

وإعادة التحقق:

$ type -f json2csv
json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv)

الآن هناك:

$ json2csv --help
Usage of json2csv:
  -d=",": delimiter used for output values
  -i="": /path/to/input.json (optional; default is stdin)
  -k=[]: fields to output
  -o="": /path/to/output.json (optional; default is stdout)
  -p=false: prints header to output
  -v=false: verbose output (to stderr)
  -version=false: print version string

أضف التعديلات التي $GOPATH على $PATH و $GOPATH إلى $HOME/.bash_profile لجعلها تستمر بين عمليات إعادة التشغيل.


إذا واجهتك هذه المشكلة بعد إعداد $GOPATH ، فقد يكون ذلك بسبب أنك $GOPATH باستخدام shell غير مدعوم. كنت أستخدم fish ولم ينجح ، وأطلقته مع bash .


اضطررت لتشغيل تطبيق كجذر (لفتح خادم الويب على المنفذ 80) ، أنتجت هذا الخطأ بالنسبة لي ، لأن مستخدم sudo لديه بيئة مختلفة عن المستخدم العادي ، وبالتالي لم يتم تعيين GOPATH.

إذا كان شخص آخر لديه هذه المشكلة ، -E بإضافة -E إلى الأمر ، وهذا سيحافظ على بيئة المستخدم.

sudo -E go run main.go

لمزيد من المعلومات ، راجع المناقشة هنا: مجموعات Google - مشكلة GOPATH


قم بتشغيل 'go env' واطلع على المكان الذي تشير إليه GOPATH حاليًا. إذا قمت بالتغيير إلى هذا الدليل ، يجب أن يعمل أمر 'go get..etc' الخاص بك.


لقد وجدت أنه من الأسهل القيام بذلك على النحو التالي:

export GOROOT=$HOME/go
export GOPATH=$GOROOT/bin
export PATH=$PATH:$GOPATH


يجب عدم إعداد $GOROOT الخاص بك. يجب تعيين $GOPATH إلى $HOME/go بكتابة export $GOPATH=$HOME/go

يرجى كتابة export GOROOT="" لإصلاح مشكلتك.


(لل ماك)

لقد جربت كل هذه الإجابات ، ولسبب ما زال غير معروف ، لم يعمل أي منهم.

اضطررت إلى "فرض تغذية" في GOPATH من خلال تحديد متغير البيئة لكل أمر يتطلبه. فمثلا:

sudo env GOPATH=$HOME/goWorkDirectory go build ...

حتى glide كان يعطيني GOPATH not set . قررنا ، مرة أخرى ، عن طريق "الإجبار على التغذية": جربت كل هذه الإجابات ، ولسبب ما زال غير معروف ، لم يعمل أي منهم.

اضطررت إلى "فرض تغذية" في GOPATH من خلال تحديد متغير البيئة لكل أمر يتطلبه.

sudo env GOPATH=$HOME/goWorkDirectory glide install

أمل أن هذا يساعد شخصاما.





go