GOPATH और GOROOT: सही वैल्यू क्या हैं और ये क्यों ज़रूरी हैं?
\n\nअगर आप Go सीखना शुरू कर रहे हैं, तो देर-सबेर आप GOPATH और GOROOT जैसे शब्दों से ज़रूर टकराएँगे। Stack Overflow पर सबसे ज़्यादा पूछे जाने वाले सवालों में से एक है – "GOPATH और GOROOT की वैल्यू क्या होनी चाहिए?" और यह कोई हैरानी की बात नहीं है। शुरुआती लोग अक्सर इन्हें गलत सेट कर देते हैं और प्रोजेक्ट बिल्ड करते समय अजीबोगरीब एरर का सामना करते हैं।
इस आर्टिकल में हम आसान भाषा में समझाएँगे कि ये वेरिएबल क्यों ज़रूरी हैं, इनकी डिफ़ॉल्ट वैल्यू क्या होती है, और आप go modules के साथ आधुनिक तरीके से कैसे काम कर सकते हैं। चलिए शुरू करते हैं!
GOROOT क्या है?
\n\nGOROOT वह फ़ोल्डर है जहाँ Go कंपाइलर इंस्टॉल होता है। इस फ़ोल्डर के अंदर स्टैंडर्ड पैकेज (fmt, net, os आदि) और go, gofmt जैसी बाइनरी फ़ाइलें होती हैं।
ज़्यादातर डेवलपर्स को GOROOT को मैन्युअली सेट करने की ज़रूरत नहीं होती। अगर आपने Go को ऑफिशियल इंस्टॉलर या पैकेज मैनेजर से इंस्टॉल किया है, तो कंपाइलर खुद ही अपना लोकेशन जानता है।
\n\nGOROOT की मौजूदा वैल्यू कैसे चेक करें?
\nटर्मिनल खोलें और यह कमांड चलाएँ:
\ngo env GOROOT\n\nLinux पर आउटपुट का उदाहरण:
\n/usr/local/go\n\nWindows पर (डिफ़ॉल्ट इंस्टॉलेशन के साथ):
\nC:\\Program Files\\Go\n\nGOROOT कब बदलना चाहिए?
\n- \n
- अगर आपने Go फ़ोल्डर को किसी दूसरी जगह शिफ्ट किया है। \n
- अगर आपके पास Go के कई वर्ज़न इंस्टॉल हैं और आप उनके बीच स्विच करना चाहते हैं। \n
- अगर आप Go को सोर्स कोड से कंपाइल कर रहे हैं और इसे किसी अलग डायरेक्ट्री में इंस्टॉल किया है। \n
बाकी सभी मामलों में GOROOT को अकेला छोड़ दें – Go खुद इसका ध्यान रखेगा।
\n\nGOPATH क्या है?
\n\nGOPATH एक और भी दिलचस्प वेरिएबल है। पहले के समय में Go चाहता था कि आपका सारा कोड एक ही वर्कस्पेस में हो। इस वर्कस्पेस को GOPATH के ज़रिए डिफ़ाइन किया जाता था।
डिफ़ॉल्ट रूप से GOPATH यहाँ पॉइंट करता है:
- \n
- Linux/macOS:
$HOME/go\n - Windows:
%USERPROFILE%\\go\n
इस फ़ोल्डर के अंदर स्टैंडर्ड स्ट्रक्चर होता है:
\ngo/\n├── bin/ # कंपाइल की गई बाइनरी फ़ाइलें\n├── pkg/ # ऑब्जेक्ट फ़ाइलें और कैश\n└── src/ # आपके प्रोजेक्ट्स का सोर्स कोड\n ├── github.com/\n │ └── user/\n │ └── myproject/\n └── example.com/\n └── myapp/\n\nGOPATH की मौजूदा वैल्यू कैसे चेक करें?
\ngo env GOPATH\n\nGOPATH और GOROOT में क्या डालें? (सही वैल्यू)
\n\nयहाँ मुख्य सवाल का छोटा जवाब है:
\n\n| वेरिएबल | \nडिफ़ॉल्ट वैल्यू (Linux/macOS) | \nडिफ़ॉल्ट वैल्यू (Windows) | \n
|---|---|---|
GOROOT | \n /usr/local/go | \n C:\\Program Files\\Go | \n
GOPATH | \n $HOME/go | \n %USERPROFILE%\\go | \n
ज़रूरी बात: GOPATH और GOROOT हमेशा अलग-अलग फ़ोल्डर होने चाहिए। इन्हें कभी एक जैसा न सेट करें!
आम गलतियाँ और उनका समाधान
\n\nगलती 1: "GOPATH not set" या "cannot find package" एरर
\nअगर आप पुराने तरीके (Go 1.11-1.13 से पहले) का उपयोग कर रहे हैं, तो Go पैकेज को $GOPATH/src के अंदर ढूँढता है। अगर आपने अपना प्रोजेक्ट कहीं और रखा है, तो कंपाइलर उसे नहीं ढूँढ पाएगा।
समाधान:
\n- \n
- या तो प्रोजेक्ट को
$GOPATH/srcमें ले जाएँ। \n - या फिर Go Modules का उपयोग करें (आधुनिक तरीका)। \n