निम्नलिखित पैच रिलीज 8.4.x> 8.4.y के लिए ठीक है, लेकिन मामूली रिलीज 8.4.x> 8.5.x के लिए ठीक नहीं है । करने के लिए कूद अद्यतन 3 मैं क्या विश्वास है के लिए नीचे दिए गए नाबालिग रिलीज अद्यतन के लिए "जवाब" है।
1- ड्रुपल के साथ आने वाली किसी भी फाइल को बैकअप करें, जिसे आपने संशोधित किया है। जैसे कि .htaccess, robots.txt, आदि। (उन 2 को सबसे अधिक बदला गया है)।
2- [मुझे बताया गया है कि डिलीट लॉक फाइल गलत है, नीचे UPDATE देखें] कंपोजर.लॉक फाइल (अपनी साइट के टॉप लेवल फोल्डर में) डिलीट करें । यह चरण 5 में फिर से बन जाता है।
3- अपने कंपोज़र की जाँच करें। Json (आपकी साइट के शीर्ष स्तर के फ़ोल्डर में) और सुनिश्चित करें कि "ड्रुपल: कोर" आवश्यक अनुभाग में है और एक बदले हुए अनुभाग में नहीं है, उदाहरण के लिए
"require": {
"drupal/core": "^8.4"
},
नहीं
"replace": {
"drupal/core": "^8.4"
},
यदि "ड्रुपल / कोर" रिप्लेसमेंट सेक्शन में है, तो इसे आवश्यक सेक्शन में ले जाएं और रीप्ले सेक्शन को हटा दें। यदि प्रतिस्थापित अनुभाग में अन्य प्रविष्टियाँ हैं, तो बस "ड्रुपल / कोर" को हटा दें पूरे बदले हुए खंड को नहीं - लेकिन मुझे लगता है कि "ड्रुपल / कोर" सामान्य रूप से केवल एक ही चीज है।
"ड्रुपल / कोर" में आप किस संस्करण को अद्यतन करना चाहते हैं, उदाहरण:
"ड्रुपल / कोर": "^ 8.5" - 8.5 के नवीनतम संस्करण में अपडेट होगा। "ड्रुपल / कोर": "8.4.6" - संस्करण 8.4.6 में अपडेट होगा।
5- इसे चलाएं (अपनी साइट के शीर्ष स्तर फ़ोल्डर में):
composer update drupal/core --with-dependencies
6- यदि कोई त्रुटि नहीं है, तो सामान्य करें, अपडेट चलाएं और कैश साफ़ करें:
drush updatedb
drush cr
या यदि ड्रश का उपयोग नहीं कर रहे हैं, तो अपडेट चलाने के लिए /update.php पर जाएं, फिर व्यवस्थापक / कॉन्फ़िगर / विकास / प्रदर्शन करने के लिए और "सभी कैश साफ़ करें" बटन दबाएं।
7- यदि आपने पहले चरण (.htaccess, robots.txt) में फ़ाइलों का बैकअप लिया था, तो उन्हें वापस लाएँ। लेकिन यह देखने के लिए जांचें कि क्या ड्रुपल ने उन फाइलों में अपडेट किया है और उन परिवर्तनों को आपके पास जोड़ दिया है।
किया हुआ
यदि चरण 5 में संगीतकार अपडेट के साथ त्रुटियां थीं, तो यह आमतौर पर विक्रेता फ़ोल्डर में सामान के संस्करणों के साथ मुद्दों के कारण होता है।
इस तरह के मुद्दों से निपटने के लिए यह एक बेहतरीन पोस्ट है: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update और पाने के लिए Drupal और Composer के साथ Jeff के अन्य 2 पोस्ट पढ़ें उस बारे में अधिक जानकारी।
मुझे ट्विटर पर 2 लोगों द्वारा बताया गया था कि कंपोजर.लॉक को हटाया नहीं जाना चाहिए (ऊपर चरण 2)। composer update drupal/core --with-dependencies
आदेश वैसे भी ताला फ़ाइल का पुनर्निर्माण करने वाला।
इस पद्धति के परीक्षण में मुझे लगता है कि यह 8.4.3> 8.4.6 (उदाहरण के लिए) के लिए ठीक काम करता है, लेकिन मुझे 8.4.6> 8.5.x के लिए त्रुटियां मिलती हैं। जब मैं इसका पता लगाऊंगा तब रिपोर्ट करूंगा।
त्रुटियों का उदाहरण:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- symfony/yaml 3.4.x-dev conflicts with symfony/console[v3.2.8].
- symfony/yaml 3.4.x-dev conflicts with symfony/console[v3.2.8].
- symfony/yaml 3.4.x-dev conflicts with symfony/console[v3.2.8].
- drupal/core 8.5.0 requires symfony/yaml ~3.4.5 -> satisfiable by symfony/yaml[3.4.x-dev].
- Installation request for drupal/core 8.5.0 -> satisfiable by drupal/core[8.5.0].
- Installation request for symfony/console (locked at v3.2.8, required as ~3.2.8) -> satisfiable by symfony/console[v3.2.8].
जेफ जेरलिंग द्वारा की गई यह पोस्ट इसी तरह के मुद्दों को संबोधित करती है, लेकिन अभी तक मेरे लिए कोई भाग्य नहीं है: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-upate
तो ... केवल एक चीज जो मेरे लिए 8.4.x> 8.5.x पर काम करती है वह "परमाणु विकल्प" है जो कि कई अन्य लोग उपयोग करते हैं, जो चलाया जाता है composer update
।
मुझे लगता है कि जब तक आप संगीतकार.जेन्स में मॉड्यूल संस्करणों के बारे में निश्चित हैं, तब तक ठीक है। हो सकता है कि कोई उन्हें वर्तमान संस्करण के लिए लॉक कर दे। उदाहरण के लिए:
"drupal/address": "1.3"
बजाय:
"drupal/address": "^1.3"
लेकिन क्या सही जवाब है?
हर जगह होने वाले उत्तर को "परमाणु विकल्प" करना है:
A. /vendor
फ़ोल्डर को हटा दें ।
B. भागो composer update
और बस अपने मॉड्यूल को कोर के साथ अपडेट करें। या, composer.json
यदि आप उन्हें अपडेट नहीं करना चाहते हैं तो मॉड्यूल संस्करणों को बंद कर दें।
ड्रुपल स्लैक के एक व्यक्ति ने कहा "संगीतकार का संपूर्ण दर्शन यह है कि आपको हमेशा संकुल अद्यतन करना चाहिए, जितना संभव हो सके" । पैकेज्ड में मेरे विचार से मॉड्यूल शामिल हैं। तो यह कुछ समझ में आता है मुझे लगता है।
एक बार जब मैं 8.4.6 से 8.5.0 तक पहुंच गया, तो यह 8.5.0 से 8.5.1 तक पहुंचने के लिए ठीक काम किया, जैसा कि 8.4.3 से 8.4.6 के लिए किया composer update drupal/core --with-dependencies
था।
मैं यह निष्कर्ष निकालना शुरू कर रहा हूं कि "उत्तर" विक्रेता फ़ोल्डर और कंपोजर.लोक फ़ाइल को डिलीट कर रहा composer update
है , फिर उपयोग करना ठीक है, और यह कि किसी को कंपोज़र में निर्भरता के लिए संस्करण संख्याओं को सुनिश्चित करना चाहिए। जेसन फ़ाइल वही है जो आप चाहते हैं । यह इतना बड़ा सौदा नहीं है कि आप किन मॉड्यूल संस्करणों को प्रबंधित करना चाहते हैं या अपडेट करना चाहते हैं composer.json
।
उदाहरण के लिए:
"drupal/admin_toolbar": "1.18",
1.18 के साथ छड़ी का मतलब है
"drupal/admin_toolbar": "^1.18",
मतलब आगे बढ़ें और अपडेट करें लेकिन 1.x के भीतर (2.x नहीं)
यह इस पोस्ट पर एक टिप्पणी (सामान्य Redneck) द्वारा समर्थित है: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update -
इनमें से एक चीज़ जो मैंने की है जैसा कि मैं समर्थन में काम करता हूं पाया गया है कि मॉड्यूल और कोर के संस्करणों को बंद करना एक अच्छा विचार है ताकि आप जब चाहें तब थर्मोन्यूक कर सकें क्योंकि कई बार ऐसा होता है जब विभिन्न प्लगइन्स भी सही तरीके से व्यवहार नहीं करना चाहते हैं। "
वैसे, composer.lock फ़ाइल कोई मदद नहीं है composer update
क्योंकि यह उड़ जाती है ( composer install
जहाँ वह लॉक फ़ाइल पढ़ी जाती है, उसके विपरीत ):
चल रहा है composer install
:
- अगर
composer.lock
मौजूद है तो जाँच करें
- यदि नहीं, तो एक
composer update
बनाने के लिए प्रदर्शन करें
- यदि
composer.lock
मौजूद है, तो लॉक फ़ाइल से निर्दिष्ट संस्करण स्थापित करें
चल रहा है composer update
:
- चेक
composer.json
- अपने वर्जन स्पेक्स के आधार पर इंस्टॉल करने के लिए नवीनतम संस्करणों का निर्धारण करें
- नवीनतम संस्करण स्थापित करें
- अद्यतन
composer.lock
स्थापित नवीनतम संस्करणों को प्रतिबिंबित करने के लिए
Ref: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
मुझे लगता है कि यह ऊपर वर्णित है: https://github.com/drupal-composer/drupal-project । मैंने इसका उपयोग किया है और यह ठीक है लेकिन यह ड्रुपल के साथ संगीतकार का उपयोग करने के लिए एक आवश्यकता नहीं है। यह भ्रामक है क्योंकि यह "ध्वनियों" की तरह है जैसे यह नाम से है। जब मैंने पहली बार ड्रुपल 8 के साथ शुरू किया, तो मुझे लगा कि इसकी आवश्यकता है, इसलिए इसके साथ मेरी पहली डी 8 साइट बनाई, यह सोचते हुए कि यह सबसे अच्छा अभ्यास था।
ड्रुपल के उस "संस्करण" में उन्होंने एक / वेब फ़ोल्डर में डॉकरॉट किया है, परियोजना के शीर्ष फ़ोल्डर में नहीं। सामान्य द्रुपाल की तुलना में .gitignore में जोड़ा गया सामान का एक गुच्छा भी है:
/drush/contrib/
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
इसलिए, ड्रुपल का यह संस्करण उन साइटों के लिए वास्तव में अधिक है जो संगीतकार के उपयोग से हर तैनाती पर ड्रुपल का एक नया निर्माण करने के लिए निरंतर एकीकरण का उपयोग कर रहे हैं। यदि आप अधिक सामान्य विधि के साथ तैनाती करते हैं, तो आपको स्पष्ट रूप से उपरोक्त सभी चीजें अपने git रेपो में करनी होंगी या यह आपके सर्वर [1] में तैनात नहीं किया जाएगा, और Drupal को चलाने के लिए सामान की आवश्यकता है।
[१] अगर git आपकी तैनाती के साथ शामिल है - यदि आप SFTP के साथ तैनात हैं, तो इसे अनदेखा करें।