डाउनलोड नहीं किया जा सकता है, $ GOPATH सेट नहीं है


150

मैं json2csv का उपयोग कर स्थापित करना चाहता हूं, go get github.com/jehiah/json2csvलेकिन मुझे यह त्रुटि प्राप्त हुई:

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

MacOS पर इसे ठीक करने के बारे में कोई मदद?



1
इसे भी देखें: stackoverflow.com/questions/17872223/…
Shog9

3
मैं एक अलग पैकेज (पिल्ला) के साथ एक ही समस्या है। चलो अनुरक्षकों जाओ, एक (ओएस एक्स) इंस्टॉलर है कि काम खत्म! नोड के लिए ओएस एक्स इंस्टॉलर एक महान उदाहरण है। नोड का उपयोग करने के लिए अतिरिक्त मैनुअल इंस्टॉलेशन चरणों की आवश्यकता नहीं होती है। यह सिर्फ काम करता है। मुझे उम्मीद है कि गो इंस्टालर के भविष्य के संस्करण बेहतर होंगे।
jwfearn

जवाबों:


140

[अपडेट: गो १., के रूप में, GOPATHडिफॉल्ट करता है $HOME/go, लेकिन अगर आप GOPATHलेआउट को समझना चाहते हैं , तो कस्टमाइज़ करें, आदि]

आधिकारिक गो साइट GOPATH और वर्कस्पेस डायरेक्टरी को पूरा करने के तरीके पर चर्चा करती है

export GOPATH="$HOME/your-workspace-dir/"- इसे अपने शेल में चलाएं, फिर इसे ~/.bashrcया समकक्ष जोड़ें ताकि भविष्य में यह आपके लिए सेट हो जाए। गो src/, के तहत पैकेजों को स्थापित करेगा bin/, और pkg/, वहां उपनिर्देशिकाएँ। यदि आप GitHub को प्रकाशित करना चाहते हैं $GOPATH/src, $GOPATH/src/github.com/myusername/तो आप अपने स्वयं के पैकेज को कहीं और रखना चाहते हैं। आप भी शायद अपने export PATH=$PATH:$GOPATH/binमें चाहते हैं .bashrcताकि आप के तहत संकलित कार्यक्रम चला सकें $GOPATH

वैकल्पिक रूप से, रोब पाइक के माध्यम से , आप यह भी सेट कर सकते हैं CDPATHताकि यह तेजी से cdबैश में पैकेज export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/xकर सके : इसका मतलब है कि आप cd net/htmlइसके बजाय बस टाइप कर सकते हैं cd $GOPATH/src/golang.org/x/net/html

कीथ ररिक नोट जो आप GOPATH=$HOMEगो के डाल सकते हैं src/,pkg/ और bin/सही अपने homedir तहत निर्देशिका। यह अच्छा हो सकता है (उदाहरण के लिए, आप पहले से ही $HOME/binअपने रास्ते में हो सकते हैं) लेकिन निश्चित रूप से कुछ लोग कई कार्यक्षेत्रों आदि का उपयोग करते हैं।


जानकारी के लिए धन्यवाद। क्या आपको प्रत्येक व्यक्तिगत परियोजना के लिए अपना कार्यक्षेत्र बदलने की आवश्यकता है?
डग मोलिनक्स

1
सामान्य तौर पर, नहीं, आप एक कार्यक्षेत्र का उपयोग कर सकते हैं, src/जिसमें उदाहरण के लिए github.com/youruser/xऔर github.com/youruser/y। यही तो मैं करता हूं। लोगों के पास अन्यथा करने के लिए अपने कारण हो सकते हैं (परियोजनाओं को अलग रखने के लिए कंपनी की नीति?), लेकिन मैं उससे बात नहीं कर सकता।
twotwotwo 20

3
$ GOPATH सेट है, लेकिन "डाउनलोड नहीं किया जा सकता है, $ GOPATH सेट नहीं है। अधिक जानकारी के लिए देखें: go help gopath" वैसे भी दिखाई देता है।
टायगुए 7

क्या मंच (विंडोज या लिनक्स / ओएस एक्स / अन्य यूनिक्स)? यदि विंडोज नहीं है, तो क्या echo $GOPATHकहता है? यह एक अलग प्रश्न के रूप में पोस्ट करने लायक हो सकता है; ऐसा लगता है कि आप कुछ असामान्य स्थिति में हैं, और टिप्पणियों में उन पर बहस करना मुश्किल हो सकता है।
twotwotwo

2
@ Tyguy7 संभावना है कि आपने ऐसा नहीं exportकिया; चलाने /bin/bash -c "echo \$GOPATH"की पुष्टि है कि उप प्रक्रियाओं देख सकते हैं $GOPATH; अगर यह खाली हो जाए, तो चलाएं export GOPATHऔर फिरgo get ...
sanmai


33

काढ़ा का उपयोग करना

मैंने इसका उपयोग करके स्थापित किया 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 फाइलें, 158M) *

PATH = $ PATH: / usr / local / opt / go / libexec / bin को निर्यात करें

जीओ का वातावरण स्थापित करना

यह दर्शाता है कि 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अपने शेल में क्यों नहीं लिख सकता हूं ? ऐसा इसलिए है क्योंकि /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

संशोधनों हम करने के लिए बनाया है जोड़े $PATHऔर $GOPATHअपने को $HOME/.bash_profileउन्हें रिबूट के बीच जारी रहती है बनाने के लिए।


18

वीडियो देखो

सामान्य तौर पर, मैं हमेशा मामले पर त्वरित अवलोकन प्राप्त करने के लिए गो से इस आधिकारिक वीडियो की सिफारिश करता हूं:

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

यह बताया जाना आसान है।

@jwfearn ने वीडियो के महत्वपूर्ण भाग को परिभाषित किया :

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


2
उत्कृष्ट परिचयात्मक वीडियो - मुझे हमेशा बेहतर समझा जाता है जब यह मुझे दिखाया जाता है।
जोशुआ पिंटर

3
धन्यवाद @jwfearn - वीडियो संगीत और अन्य मनोरंजन के लिए हैं; उनसे कॉपी और पेस्ट नहीं कर सकते :-)
kguest


3

मैक के लिए यह मेरे लिए अच्छी तरह से काम किया।

sudo nano /etc/bashrc

और फ़ाइल के अंत में नीचे जोड़ें

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

इससे समस्या हल हो जानी चाहिए। एक नया टर्मिनल खोलने की कोशिश करें और $ GOPATH को गूँजें, आपको सही मूल्य देखना चाहिए।


2

(मैक के लिए)

मैंने इन सभी उत्तरों की कोशिश की और कुछ अज्ञात कारणों से, उनमें से किसी ने भी काम नहीं किया।

मुझे प्रत्येक कमांड के अनुसार पर्यावरण चर को सेट करके "GOPATH" को "फोर्स" करना था। उदाहरण के लिए:

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

glideमुझे भी दे रहा थाGOPATH not set त्रुटि। "बल खिला" द्वारा इसे फिर से हल किया: मैंने इन सभी उत्तरों की कोशिश की और कुछ अज्ञात कारण से, उनमें से किसी ने भी काम नहीं किया।

मुझे प्रत्येक कमांड के अनुसार पर्यावरण चर को सेट करके "GOPATH" को "फोर्स" करना था।

sudo env GOPATH=$HOME/goWorkDirectory glide install

आशा है कि यह किसी की मदद करता है।


2

आपकी $GOROOTस्थापना नहीं होनी चाहिए। आपको टाइप करके $GOPATHसेट किया जाना चाहिए$HOME/goexport $GOPATH=$HOME/go

कृपया export GOROOT=""अपनी समस्या को ठीक करने के लिए लिखें ।


1

बस करो export GOPATH="/whatever/you/like/your/GOPATH/to/be"


4
अगर मैं एक जाने वाला हूँ, तो मुझे अभी तक नहीं पता है कि "मैं अपना GOPATH कहाँ होना चाहता हूँ"। IMHO यह एक ड्रैग है कि एक डिफ़ॉल्ट GOPATH व्यवहार नहीं है जिसे पर्यावरण चर द्वारा ओवरराइड किया जा सकता है
जूलर

0

यदि आप $GOPATHसेट होने के बाद इस समस्या में भाग लेते हैं , तो ऐसा हो सकता है क्योंकि आप इसे असमर्थित शेल के साथ चला रहे हैं। मैं उपयोग कर रहा था fishऔर यह काम नहीं किया, इसे bashठीक काम के साथ लॉन्च किया।


0

आप "निर्यात" समाधान का उपयोग कर सकते हैं जैसे अन्य लोगों ने सुझाव दिया है। मैं आपको स्थायी सुविधा के लिए एक और समाधान प्रदान करना चाहता हूं: गो कमांड चलाने पर आप GOPATH के रूप में किसी भी पथ का उपयोग कर सकते हैं।

सबसे पहले, आपको एक छोटा टूल डाउनलोड करना होगा जिसका नाम है gost: https://github.com/byte16/gost/releases । यदि आप ubuntu का उपयोग करते हैं, तो आप लिनक्स संस्करण ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz डाउनलोड कर सकते हैं ) ।

फिर आपको इसे अनपैक करने के लिए नीचे दिए गए कमांड चलाने होंगे:

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

आपको एक निष्पादन योग्य मिलेगा gost। आप इसे /usr/local/binसुविधाजनक उपयोग के लिए स्थानांतरित कर सकते हैं:

$ sudo mv gost /usr/local/bin

पथ को बनाए रखने के लिए GOPATH के रूप में आप जिस पथ का उपयोग करना चाहते हैं उसे जोड़ने के लिए नीचे दिए गए आदेश को चलाएँ gost। पथ को एक नाम देना आवश्यक है जिसे आप बाद में उपयोग करेंगे।

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

किसी भी गो कमांड को फॉर्मेट में चलाएं:

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

उदाहरण के लिए, आप चलाना चाहते हैं go get github.com/go-sql-driver/mysqlके साथ /home/foobar/barGOPATH के रूप में, बस इसे नीचे के रूप में कार्य करें:

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

यह आपको GOPATH को सेट करने और कमांड चलाने में मदद करेगा। लेकिन याद रखें कि आप में पथ को शामिल किया है gostकी pathspace । यदि आप किसी भी स्तर के उपनिर्देशिका के अधीन हैं /home/foobar/bar, तो आप केवल नीचे दी गई कमांड को भी चला सकते हैं, जो शॉर्ट के लिए एक ही काम करेगी:

$ gost get -- github.com/go-sql-driver/mysql

gostगो का एक सरल टूल है जो आपको GOPATHs को प्रबंधित करने और गो कमांड चलाने में मदद कर सकता है। अन्य गो कमांड चलाने के लिए इसका उपयोग कैसे करें के बारे में अधिक जानकारी के लिए, आप बस चला सकते हैं gost help goCmdName। उदाहरण के लिए आप के बारे में अधिक जानना चाहते हैं install, बस नीचे दिए गए शब्द टाइप करें:

$ gost help install

आप इस परियोजना की README में और अधिक जानकारी पा सकते हैं: https://github.com/byte16/gost/blob/master/README.md


0

'Go env' चलाएं और देखें कि आपका GOPATH वर्तमान में कहां इंगित कर रहा है। यदि आप उस निर्देशिका में बदलते हैं, तो आपका 'get get..etc' कमांड काम करना चाहिए।


0

यह समस्या मुझे रास्पबेरी पाई में हुई। मैंने VNC क्लाइंट से लॉग इन किया था। GOPATH को सेट करने और निर्यात करने के बावजूद समस्या बनी रही। फिर बिना सूदो के "गो गेट" की आज्ञा दी और इसने पूरी तरह से काम किया।


-1

मुझे रूट के रूप में एक एप्लिकेशन को चलाना था (पोर्ट 80 पर एक वेबसर्वर खोलने के लिए), इससे मेरे लिए त्रुटि उत्पन्न हुई, क्योंकि sudo उपयोगकर्ता का सामान्य उपयोगकर्ता की तुलना में एक अलग वातावरण है, इसलिए GOPATH सेट नहीं किया गया था।

यदि किसी और को यह समस्या हो रही है, -Eतो कमांड में जोड़ें , यह उपयोगकर्ता पर्यावरण को संरक्षित करेगा।

sudo -E go run main.go

अधिक जानकारी के लिए यहां चर्चा देखें: Google समूह - GOPATH समस्या


यकीन नहीं हो रहा था कि इसे क्यों
डाउन किया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.