गो थर्ड-पार्टी पैकेज को कैसे अपडेट करता है?


189

यह देखते हुए कि सक्रिय रूप से गोलंग पैकेज कैसे बढ़ते हैं और मुझे आश्चर्य होता है कि पैकेज संस्करणों के साथ समस्या कैसे हल होती है?

मुझे लगता है कि एक तरह से एक परियोजना फ़ोल्डर के तहत तीसरे पक्ष के संकुल को स्टोर करने के लिए है।

लेकिन क्या होगा अगर मैं इसे स्थापित go getकरूं?

जवाबों:


309

go getपहली निर्देशिका में पैकेज स्थापित करेगा GOPATH(एक पर्यावरण चर जिसमें निर्देशिकाओं की एक अलग से अलग सूची हो सकती है)। आप go get -uमौजूदा पैकेज को अपडेट करने के लिए उपयोग कर सकते हैं ।

आप go get -u allअपने सभी पैकेजों को अपडेट करने के लिए भी उपयोग कर सकते हैंGOPATH

बड़ी परियोजनाओं के लिए, प्रत्येक परियोजना के लिए अलग-अलग GOPATH बनाने के लिए उचित हो सकता है, ताकि प्रोजेक्ट में एक लाइब्रेरी को अपडेट किया जा सके क्योंकि परियोजना बी में कोई समस्या नहीं होगी।

पर्यावरण चर के go help gopathबारे में अधिक जानने के लिए टाइप करें GOPATH


2
क्या सभी पैकेजों को नवीनतम संस्करण में अपडेट करना संभव है, जैसे बंडल अपडेट?
चौरोबिन

73
बस go get -u all पुनर्जीवित होने के लिए खेद होना चाहिए , लेकिन अगर कोई और देख रहा था तो बस।
डैन एंडरसन

go get -u allअब काम नहीं करता है! GOPATH में इस कमांड को चलाने पर, कम से कम 1.13 के लिए, एक चेतावनी लौटाएगा: `चेतावनी" सभी "मेल नहीं हुए पैकेज"
Contrapak

१.१२.९ के साथ काम करता है
१२:27 पर fiktor


18

चूंकि प्रश्न में तीसरे पक्ष के पुस्तकालयों और सभी पैकेजों का उल्लेख नहीं है, तो आप शायद वाइल्डकार्ड का उपयोग करने के लिए वापस गिरना चाहते हैं।

एक उपयोग का मामला है: मैं सिर्फ अपने सभी पैकेजों को अपडेट करना चाहता हूं जो कि जीथूब वीसीएस से प्राप्त किए गए हैं, तो आप बस कहेंगे:

go get -u github.com/... // ('...' being the wildcard). 

यह आगे बढ़ता है और केवल वर्तमान में आपके गिटब पैकेज को अद्यतन करता है $GOPATH

वही VCS के लिए भी लागू होता है, कहते हैं कि आप केवल ogranizaiton A के रेपो के सभी पैकेजों को अपग्रेड करना चाहते हैं क्योंकि उन्होंने एक हॉटफ़िक्स जारी किया है जिस पर आप निर्भर हैं:

go get -u github.com/orgA/...

11

उपरोक्त उत्तर में निम्नलिखित समस्याएं हैं:

  1. वे आपके ऐप सहित (आपके द्वारा परिवर्तन किए गए मामले में) सब कुछ अपडेट करते हैं।
  2. वे अद्यतन किए गए पैकेज जिन्हें आपने पहले ही अपनी परियोजना से हटा दिया है, लेकिन पहले से ही आपकी डिस्क पर हैं।

इनसे बचने के लिए, निम्न कार्य करें:

  1. उस 3 पार्टी फोल्डर को डिलीट करें जिसे आप अपडेट करना चाहते हैं।
  2. अपने ऐप फोल्डर में जाएं और रन करें go get -d

1

जाना 1.13

(मॉड्यूल रूट निर्देशिका से निष्पादित)

निर्दिष्ट निर्भरता अद्यतन करें:

go get -u <package-name>

नवीनतम माइनर या पैच अपग्रेड के लिए सभी प्रत्यक्ष और अप्रत्यक्ष निर्भरताओं को अपडेट करें (पूर्व-रिलीज़ को अनदेखा किया गया है):

go get -u ./...
# or
go get -u=patch ./...

संदर्भ:

https://github.com/golang/go/wiki/Modules#daily-workflow

go help get



-2

पथ और प्रकार पर जाएं

go get -u ./..

यह सभी आवश्यक पैकेजों को अद्यतन करेगा।


यह शाब्दिक व्याख्या काम नहीं करती है। कुछ और संदर्भ मददगार होंगे।
23

2
मेरा मानना ​​है कि उनका मतलब go get -u ./...(3 डॉट्स)
ब्रायन लीशमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.