अन्य निर्भरता को छूने के बिना एक एकल पॉड को कैसे अपडेट किया जाए


201

मैं समझता हूं कि निम्न कमांड एक पॉड को अपडेट करेगा pod update <podname>:। हालाँकि यह अन्य पॉड्स की निर्भरता को भी अपडेट करता है (पॉड्स जो अपडेट कमांड में शामिल नहीं थे) जो आपने पहले स्थापित किए हैं। क्या एक एकल पॉड को अपडेट करने और अन्य सभी निर्भरताओं को अकेला छोड़ने का एक तरीका है?


1
अंतर को समझने के लिए आपको पहले समझना चाहिए कि क्या podfile.lockहै। लिंक और वीडियो देखें जो इसे संदर्भित करता है।
हनी

जवाबों:


285

सुनिश्चित करें कि आपके पास CocoaPods का नवीनतम संस्करण स्थापित है। $ pod update PODहाल ही में पेश किया गया था।

अधिक जानकारी के लिए इस समस्या को देखें :

$ फली अद्यतन

जब आप चलाते हैं pod update SomePodName, तो कोकोआ पॉड्स के अपडेटेड संस्करण को खोजने का प्रयास करेंगे, बिना सूचीबद्ध किए गए संस्करण को ध्यान में रखे बिना Podfile.lock। यह पॉड को नवीनतम संस्करण में अपडेट करेगा (जब तक यह आपके पॉडफाइल में संस्करण प्रतिबंधों से मेल खाता है)।

यदि आप बिना किसी पॉड के नाम के पॉड अपडेट चलाते हैं, तो कोकोआपोड आपके पॉडफाइल में सूचीबद्ध प्रत्येक पॉड को नवीनतम संस्करण में अपडेट करेगा।


19
प्रतिक्रिया @mattt के लिए धन्यवाद, मुझे कोकोआपोड्स (0.34.2) का नवीनतम संस्करण मिला है और मैंने कोशिश की है $ pod update SomePodName। हालांकि, कुछ मामले हैं जहां कोकोआपोड अन्य पॉड्स की निर्भरता को अपडेट करने का भी प्रयास करेंगे। छोटी कहानी, कुछ पॉडपनाम एकमात्र ऐसी फली नहीं है जो कुछ मामलों में अपडेट हो जाएगी।
केन

2
@mattt, क्या आप नहीं जानते कि पहले से स्थापित लोगों को अपडेट किए बिना विशिष्ट पॉड कैसे स्थापित करें?
शमसीद्दीन

1
जब मैं खुद कुछ निर्भरता को संशोधित करता हूं और pod installइसे चलाता हूं तो यह अपने मूल संस्करण पर वापस लौट आता है। लेकिन मैं अपने बदलावों को खोना नहीं चाहता
शमशीदीन

2
@mattt, जिस निर्भरता का मैं जिक्र कर रहा था, वह उस पॉड की निर्भरता नहीं थी जिसे अपडेट किया जा रहा था। मुझे लगता है कि मैंने प्रश्न की संरचना अच्छी तरह से नहीं की है, लेकिन यह मानते हुए कि हम पॉड ए को अपडेट करते हैं, कुछ अन्य पॉड्स जो पॉड ए की निर्भरता नहीं हैं, अपडेट भी हो जाते हैं। यह एक पुराना प्रश्न है, इसलिए यह निश्चित नहीं है कि अगर यह तब से तय हो गया है ..
ken

8
pod updateसब कुछ छूता है। यह टिन पर जो कहता है वह नहीं करता है, और यह बहुत निराशाजनक है। अन्य पॉड्स से बेतरतीब ढंग से हेडर निकालता है जिसे आपने स्पर्श करने के लिए नहीं कहा है, आदि
ल्यूक

185

मौजूदा पॉड्स को अपडेट किए बिना एकल पॉड स्थापित करने के लिए-> उस पॉड को अपने पॉडफाइल में जोड़ें और उपयोग करें:

pod install --no-repo-update

एक विशिष्ट पॉड उपयोग को हटाने / अपडेट करने के लिए:

pod update POD_NAME

परीक्षण!


49

यह 2015 की बात है

इसलिए क्योंकि pod update SomePodकोकोपॉड्स के नवीनतम संस्करणों में सब कुछ छूता है, मुझे एक वर्कअराउंड मिला।

अगले चरणों का पालन करें:

  1. निकालें SomePodसेPodfile

  2. Daud pod install

पॉड्स अब SomePodहमारे प्रोजेक्ट से और Podfile.lockफाइल से हट जाएंगे ।

  1. वापस रख SomePodमेंPodfile

  2. pod installफिर से दौड़ो

इस बार हमारे पॉड का लेटेस्ट वर्जन इनस्टॉल और सेव होगा Podfile.lock


आप यहां
बताए

17
आप pod update somepod anotherpod thirdpodएक साथ कई पॉड्स अपडेट करने के लिए भी कर सकते हैं :)
Entea

यह बहुत चालाक है। आप उन्हें दो स्वतंत्र चरणों में कर रहे हैं और अन्य निर्भरता को बनाए रखने के लिए पॉडफाइल.लॉक का भरोसा कर रहे हैं। मुझे आश्चर्य है कि अगर SomePodइसकी नवीनतम निर्भरता के लिए अद्यतन किया जाता है तो क्या यह नवीनतम की साझा निर्भरता को अद्यतन नहीं करेगा anotherPod? क्या ऐसा नहीं होगा जो पोडलॉक में हो? अन्यथा यह की आवश्यकताओं को पूरा करने में सक्षम नहीं होगाSomePod
हनी

28

बस केह रहा हू:

pod install - नई फली लगाने के लिए,

pod update - मौजूदा पॉड्स को अपडेट करने के लिए,

pod update podName - अन्य फली को छूने के बिना केवल विशिष्ट फली को अद्यतन करने के लिए,

pod update podName versionNum - अन्य पॉड्स को छूने के बिना विशिष्ट पॉड को अपडेट / डाउनलोड करने के लिए


क्या podइसके बजाय आपका मतलब था git?
ken

कभी-कभी ऐसा नहीं होता, मुझे नहीं पता कि क्यों। वर्कआउट सॉल्यूशन: 1. पोडफाइल 2 से विशिष्ट पॉड निकालें। पॉड इंस्टॉल 3. पॉडफाइल में फिर से विशिष्ट पॉड जोड़ें। पॉड इंस्टॉल
योनिवव

21

बस एक छोटा सा नोटिस।

pod update POD_NAME

यह पॉड पहले से स्थापित होने पर ही काम करेगा। अन्यथा आपको उन सभी को अपडेट करना होगा

pod update

आदेश


आप अभी भी pod installपहले का उपयोग कर सकते हैं , जो दूसरों को छूने के बिना केवल लापता (एस) को स्थापित करेगा। हालाँकि आपके द्वारा स्थापित नहीं की गई पॉड को अपडेट करने के लिए कोई उपयोग मामला नहीं है, क्या वहाँ है?

18

टीएल; डॉ। उपयोग:

pod update podName

क्यों? नीचे दिया गया पढ़ें।

  • pod updateसम्मान नहीं करेंगे podfile.lock। यह इसे ओवरराइड करेगा।
  • pod install सम्मान करेंगे podfile.lock

यह आरेख मतभेदों को बेहतर ढंग से समझने में मदद करता है:

यहां छवि विवरण दर्ज करें


बड़ी समस्या ~>उर्फ आशावादी ऑपरेटर की है

में सटीक संस्करणों का उपयोग करना Podfileपर्याप्त नहीं है

कुछ लोग सोच सकते हैं कि उनके पॉड्स के सटीक संस्करणों को निर्दिष्ट करके Podfile, जैसे pod 'A', '1.0.0', यह गारंटी देने के लिए पर्याप्त है कि प्रत्येक उपयोगकर्ता का टीम के अन्य लोगों के समान संस्करण होगा।

फिर वे pod updateएक नए फली जोड़ते समय भी उपयोग कर सकते हैं , यह सोचकर कि अन्य पॉड्स को अपडेट करने का जोखिम कभी नहीं होगा क्योंकि वे एक विशिष्ट संस्करण में तय किए गए हैं Podfile

लेकिन वास्तव में, यह गारंटी देने के लिए पर्याप्त नहीं है कि हमारे ऊपर के परिदृश्य में user1 और user2 को हमेशा उनके सभी पॉड्स का सटीक समान संस्करण मिलेगा।

एक विशिष्ट उदाहरण है अगर फली Aमें फली पर निर्भरता है A2- A.podspecजैसा कि घोषित किया गया है dependency 'A2', '~> 3.0'। ऐसे मामले में, 'A', '1.0.0'अपने पॉडफाइल में पॉड का उपयोग करना वास्तव में user1 और user2 दोनों को हमेशा पॉड ए के संस्करण 1.0.0 का उपयोग करने के लिए मजबूर करेगा, लेकिन:

  • user1 A2संस्करण में पॉड के साथ समाप्त हो सकता है 3.4(क्योंकि A2उस समय का नवीनतम संस्करण था)
  • जब उपयोगकर्ता pod installबाद में प्रोजेक्ट में शामिल होने के दौरान चलाता है , तो उन्हें A2संस्करण में पॉड मिल सकता है 3.5(क्योंकि A2संभव है कि अनुचर इस बीच एक नया संस्करण जारी कर सकता है)। इसीलिए प्रत्येक टीम के सदस्य को प्रत्येक कंप्यूटर के सभी पॉड के समान संस्करणों के साथ काम करना सुनिश्चित करने का एक ही तरीका है, Podfile.lockऔर उचित रूप से pod installबनाम का उपयोग करना pod update

उपर्युक्त अंश पॉड इन्स्टॉल बनाम पॉड अपडेट से लिया गया था

मैं यह देखने की भी अत्यधिक सलाह देता हूं कि क्या करता podfile.lockहै


9

मैं पूरी तरह से काम कर रहा हूं cocoapods version 1.0.1और उपयोग कर रहा हूं pod update name-of-pod। कोई अन्य पॉड्स अपडेट नहीं किए जाते हैं, बस आपके द्वारा दर्ज किया गया विशिष्ट।


2

यह एक हद तक थोड़ा सा है और ओपी के साथ जो व्यवहार किया गया था, वह होने की संभावना नहीं है, लेकिन pod update <podname> सभी मामलों में काम नहीं करेगा यदि आप अपने कंप्यूटर पर स्थानीय पॉड का उपयोग कर रहे हैं।

इस स्थिति में, केवल एक चीज जो pod updateकाम करने के लिए ट्रिगर होगी यदि पॉडस्पेक फ़ाइल में कोई परिवर्तन हो। हालांकि, एक बदलाव करने की भी अनुमति होगीpod install काम करने की ।

इस स्थिति में, आप केवल एक अक्षर द्वारा विवरण या सारांश जैसे कुछ मामूली को संशोधित कर सकते हैं, और फिर आप इंस्टॉल या अपडेट कमांड को सफलतापूर्वक चला सकते हैं।

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