2011-11-01 7 views
171

मैं इसगोपाथ और गोरोट के मूल्य क्या होना चाहिए?

$ goinstall github.com/ha/doozer 

मैं इन त्रुटियों को मिलता है की तरह Doozer स्थापित करने के लिए कोशिश कर रहा हूँ।

goinstall: os: go/build: package could not be found locally 
goinstall: fmt: go/build: package could not be found locally 
goinstall: io: go/build: package could not be found locally 
goinstall: reflect: go/build: package could not be found locally 
goinstall: math: go/build: package could not be found locally 
goinstall: rand: go/build: package could not be found locally 
goinstall: url: go/build: package could not be found locally 
goinstall: net: go/build: package could not be found locally 
goinstall: sync: go/build: package could not be found locally 
goinstall: runtime: go/build: package could not be found locally 
goinstall: strings: go/build: package could not be found locally 
goinstall: sort: go/build: package could not be found locally 
goinstall: strconv: go/build: package could not be found locally 
goinstall: bytes: go/build: package could not be found locally 
goinstall: log: go/build: package could not be found locally 
goinstall: encoding/binary: go/build: package could not be found locally 
+3

है अब मान्य नहीं है –

+0

फ़ाइल परियोजना के लिए अप्रचलित हो गई। ओएसएक्स से संबंधित एक संबंधित मुद्दा यहां पाया गया है: https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841 – Motin

+0

नोट: डिफ़ॉल्ट रूप से, 'GOPATH' के लिए सेट किया जाएगा आप गो 1.8 (2017) में। देखें [नीचे मेरा जवाब] (http://stackoverflow.com/a/40238276/6309) – VonC

उत्तर

152

GOPATHin the cmd/go documentation चर्चा की है:

GOPATH वातावरण चर सूचियों स्थानों पर जाएं कोड देखने के लिए। यूनिक्स पर, मान एक कोलन से अलग स्ट्रिंग है। विंडोज़ पर, मान अर्धविराम से अलग स्ट्रिंग है। योजना 9 पर, मूल्य एक सूची है।

GOPATH मानक गो पेड़ के बाहर पैकेज प्राप्त करने, बनाने और स्थापित करने के लिए सेट होना चाहिए।

GOROOTthe installation instructions में चर्चा की है:

जाओ द्विआधारी वितरण मान वे /usr/local/go (या c:\Go Windows के तहत) में स्थापित किया जाएगा, लेकिन यह एक अलग करने के लिए जाओ उपकरण स्थापित करने के लिए संभव है स्थान। इस मामले में आपको GOROOT पर्यावरण चर सेट करना होगा ताकि यह उस निर्देशिका को इंगित करे जिसमें स्थापित था।

उदाहरण के लिए, यदि आप अपने घर निर्देशिका पर जाएं स्थापित आप निम्न कमांड $HOME/.profile में जोड़ना चाहिए:

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

नोट: जब किसी कस्टम स्थान पर स्थापित करनेGOROOT केवल स्थापित होना चाहिये।

(। Chris Bunch's answer के अद्यतन संस्करण)

+30

GOPATH पर अधिक व्यापक जानकारी [गो कोड कैसे लिखें।] (Http://golang.org/doc/code.html) 'go' कमांड को समझने के लिए आवश्यक जानकारी की समझ है, जो गो के साथ काम करने के लिए आवश्यक है। उदाहरण के लिए ओपी में 'goinstall' का उपयोग अब 'get get' होना चाहिए। – Sonia

+8

भी जाने का वास्तविक इंस्टॉल पथ नोट करें। उदाहरण के लिए, एक डिफ़ॉल्ट होमब्री सेटअप में, होमब्रू इंस्टॉल करेगा '/ usr/local/cellar/go/'में। इस मामले में निर्यात पथ को 'निर्यात GOROOT =/usr/local/cellar/go/{version}' और 'निर्यात पाथ = $ पाथ: $ GOROOT/bin' के साथ सेट किया जाना चाहिए। – ekillaby

+7

मुझे ब्रू के साथ काम करने के लिए 'निर्यात GOROOT =/usr/local/cellar/go/1.2/libexec/'निर्यात करना था। –

36

GOPATHhere चर्चा की है:

GOPATH पर्यावरण चर

GOPATH रास्तों जो अंदर जाओ कोड, पैकेज वस्तुओं की एक पेट के अलग की गई सूची के लिए सेट किया जा सकता है, और निष्पादनयोग्य हो सकता है पाया जायेगा।

एक GOPATH सेट goinstall उपयोग करने के लिए निर्माण और जाओ पेड़ के बाहर अपने खुद के कोड और बाहरी पुस्तकालयों स्थापित (और Makefiles लेखन से बचने के लिए) के लिए।

और GOROOThere चर्चा की है:

$GOROOT जाओ पेड़ की जड़, अक्सर $HOME/go। यह निर्देशिका के पैरेंट पर डिफ़ॉल्ट है जहां all.bash चलाया गया है। यदि आप $GOROOT सेट नहीं करना चुनते हैं, तो आपको पारंपरिक मेकफ़ाइल का उपयोग करके गो प्रोग्राम विकसित करने के दौरान बनाने या gmake के बजाय गोमेक चलाने चाहिए।

+0

इसलिए यदि मैं ~/परियोजनाओं/go पर स्थापित हो गया हूं, तो चर के मानों को ओएस, एफएमटी, आदि कैसे ढूंढना चाहिए? – jshen

+1

तो जब आप 'sudo apt-get golang' इंस्टॉल करते हैं तो इंस्टॉल कहां जाता है? – weberc2

+7

@ weberc2 यदि आप 'en env' चलाते हैं तो आपको वह जानकारी देखना चाहिए, मेरे लिए यह था/usr/lib/go/' – Andre

14

मैं go help gopath डॉक्स पढ़ सकते हैं और अभी भी अविश्वसनीय रूप से उलझन में था, लेकिन एक और जाने डॉक पेज से इस छोटे से डला पाया:

GOPATH वातावरण चर निर्दिष्ट आपके कार्यक्षेत्र का स्थान। यह संभवतः एकमात्र पर्यावरण चर है जिसे आपको गो कोड विकसित करते समय सेट करने की आवश्यकता होगी।

http://golang.org/doc/code.html#GOPATH

6

जैसा कि ऊपर उल्लेख:

GOPATH वातावरण चर अपने कार्यक्षेत्र का स्थान निर्दिष्ट करता है।

विंडोज के लिए, यह मेरे लिए काम किया (MS-DOS विंडो में):

set GOPATH=D:\my_folder_for_go_code\ 

यह एक GOPATH चर बनाता स्वीकार करता है कि MS-DOS जब इस प्रकार प्रयोग किया है:

cd %GOPATH% 
55

यहां मेरा एक सरल सेटअप है:

directory for go related things: ~/programming/go 
directory for go compiler/tools: ~/programming/go/go-1.4 
directory for go software  : ~/programming/go/packages 

GOROOT, GOPATH, मार्ग का अनुसरण के रूप में स्थापित कर रहे हैं:

export GOROOT=/home/user/programming/go/go-1.4 
export GOPATH=/home/user/programming/go/packages 
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin 

तो, संक्षेप में:

GOROOT संकलक/उपकरण है कि जाने स्थापना से आता है के लिए है।
GOPATH आपकी खुद की परियोजनाओं/तृतीय पक्ष पुस्तकालयों ("जाने के साथ" डाउनलोड) के लिए है।

+2

व्याख्या करने के लिए धन्यवाद। यदि मैनुअल पढ़ना पर्याप्त था तो हम यहां नहीं होंगे। – mikijov

+0

बहुत अच्छा! यह मेरे लिए काम कर रहा है। – PlagTag

-3

आप उपयोग कर रहे हैं distro जाना, तुम कहाँ फ़ाइलों को शामिल करने इंगित करना चाहिए रहे हैं, उदाहरण के लिए:

$ rpm -ql golang | grep include 
/usr/lib/golang/include 

7

GOPATH चाहिए नहीं बिंदु (यह फेडोरा 20 के लिए है) जाओ स्थापना के लिए, बल्कि अपने कार्यक्षेत्र के लिए (https://golang.org/doc/code.html#GOPATH देखें)। जब भी आप कुछ पैकेज स्थापित करते हैं या इंस्टॉल करते हैं, तो यह GOPATH के भीतर उतर जाएगा। यही कारण है कि यह आपको चेतावनी देता है कि आप निश्चित रूप से इंटरनेट से यादृच्छिक पैकेज को अपने आधिकारिक स्थापना में डंप करने के लिए चाहते हैं।

11

पहले रन go env
यदि आप देखते हैं कि इंस्टॉल नहीं किया गया है तो आप इसे होमब्रू या पैकेज और/या अन्य तरीकों के माध्यम से इंस्टॉल कर सकते हैं।
यदि आप आउटपुट देख रहे हैं तो आपका जाना इंस्टॉल हो गया है।
यह आपको दिखाए गए सभी envs दिखाता है और नहीं हैं।

आप GOROOT के लिए खाली दिखाई देता है तो:

  1. रन `जो go` (अपने कंप्यूटर पर:/usr/स्थानीय/जाना/bin/जाना)
  2. तो यह निर्यात GOROOT की तरह निर्यात =/usr/स्थानीय/जाना

आप GOPATH के लिए खाली दिखाई देता है तो:

  1. मेरे मामले में जाने परियोजनाओं के लिए अपने कंप्यूटर पर कहीं भी किसी भी निर्देशिका बनाएँ: ~/GO_PROJEC टीएस
  2. तो निर्यात GOPATH = ~/GO_PROJECTS
+2

'जो जाना' यह मेरे लिए किया था। यह Chocolatey का उपयोग कर पिछली स्थापना से एक और जाने स्थापना स्थान का उपयोग कर रहा था। उस फ़ोल्डर को हटा दिया और इसे PATH चर से हटा दिया। अब यह काम कर रहा है। धन्यवाद! – sgarg

4

के साथ जाने के 1.8 (Q2 2017), GOPATH आप के लिए $ HOME/करने के लिए डिफ़ॉल्ट रूप से स्थापित किया जाएगा जाना

issue 17262 और रोब पाईक टिप्पणी देखें शुरू:

$HOME/go यह होगा।
कोई भी सबसे अच्छा जवाब नहीं है लेकिन यह छोटा और प्यारा है, और $HOME/go पहले से मौजूद है, तो यह केवल उस नाम को चुनने में समस्या हो सकती है, जो केवल उन विशेषज्ञों के लिए खुश होगी जो पहले से ही स्थापित हो चुके हैं और GOPATH समझेंगे।

2

GOROOT के बारे में विशेष रूप से, जाओ 1.9 इसे स्वचालित रूप से अपने स्थापना पथ पर सेट कर देगा।
भले ही आपके पास एकाधिक गो इंस्टॉल हो, भले ही 1.9.x कॉल करने से GOROOT/path/to/go/1.9 (पहले, यदि सेट नहीं किया गया है, तो यह /usr/local/go या c:\Go) जैसे डिफ़ॉल्ट पथ को मानता है।

CL Go Review 53370 देखें:

go tool अब पेड़ स्थापित की जाएं जड़ का पता लगाने का प्रयास करने के लिए पथ जिसमें से यह लागू किया गया था का उपयोग करेगा।
इसका मतलब है कि अगर संपूर्ण गो स्थापना को नए स्थान पर ले जाया जाता है, तो go tool सामान्य रूप से काम करना जारी रखना चाहिए।

पर्यावरण में GOROOT सेट करके इसे ओवरराइड किया जा सकता है, जो केवल असामान्य परिस्थितियों में किया जाना चाहिए।
ध्यान दें कि यह runtime.GOROOT() function के परिणाम को प्रभावित नहीं करता है, जो मूल स्थापना स्थान की रिपोर्ट करना जारी रखेगा; यह बाद में रिलीज में तय किया जा सकता है।

0

OSX में, मैं काढ़ा के साथ स्थापित किया, यहां सेटिंग है कि ऊपर के लिंक @Motin मेरे लिए काम करता

GOPATH="$HOME/my_go_work_space" //make sure you have this folder created 

GOROOT="/usr/local/Cellar/go/1.10/libexec" 
संबंधित मुद्दे