Composer के माध्यम से कोर अपडेट करना
यह दस्तावेज़ अपूर्ण है। अधिक जानकारी जोड़ें।
क्या आपको Drupal 8.8.0 या उससे नए संस्करण में अपडेट करने में समस्या आ रही है?
Drupal 8.8.0 में Composer पहल के हिस्से के रूप में प्रमुख परिवर्तन किए गए थे, जिससे दीर्घकालिक रूप से Drupal साइट प्रबंधन के लिए Composer कार्यप्रवाह में काफी सुधार हुआ। हालाँकि, कुछ विशेष नोट्स हैं जो पुराने संस्करणों से अपडेट को प्रभावित कर सकते हैं।
प्रारंभिक कदम
यह समझने के लिए कि Composer Drupal की निर्भरताओं को कैसे प्रबंधित करता है, देखें Drupal के साथ Composer का उपयोग। यह तय करने के लिए कि Composer आपके अपडेट के लिए उपयुक्त है या नहीं, उपलब्ध विकल्पों की तुलना करें।
सुविधा के लिए, इन निर्देशों में Drush कमांड भी शामिल हैं, जिन्हें अपडेट प्रक्रिया को पूरा करने के लिए आवश्यक है — कई लोग इसे वेब इंटरफ़ेस की तुलना में तेज़ और सरल पाते हैं।
यदि यह एक मौजूदा Drupal साइट है जहाँ पहले कभी Composer का उपयोग नहीं किया गया है, तो पहले सुनिश्चित करें कि यह Composer के लिए तैयार है।
Drupal 8 कोर अपडेट करना
पहले यह सुनिश्चित करें कि Drupal कोर के लिए कोई अपडेट उपलब्ध है:
composer update --dry-run "drupal/*"
यह किसी भी माइनर या पैच अपडेट को दिखाएगा। यदि आउटपुट में drupal/core या drupal/core-recommended नहीं है, तो कोई अपडेट उपलब्ध नहीं है। यदि है, तो नीचे दिए गए कमांड के साथ जारी रखें।
एक-चरणीय अपडेट प्रक्रिया
यदि आप Drupal अपडेट से परिचित हैं और सावधानियाँ जानते हैं, तो अपडेट इस प्रकार किया जा सकता है:
composer update drupal/core --with-dependencies drush updatedb drush cache:rebuild
यदि आप अपने प्रोजेक्ट में core-recommended का उपयोग करते हैं, तो drupal/core को drupal/core-recommended से बदलें।
यदि आपने अपनी साइट को drupal-composer/drupal-project का उपयोग करके बनाया है, तो नीचे दिए गए विशेष नोट्स पढ़ें।
8.8.0 या नए संस्करण में अपडेट करने के लिए
drupal-composer/drupal-project का नवीनतम संस्करण Drupal 8.8.x के साथ संगत है। हालाँकि, यदि आपने 2019 या इससे पहले यह प्रोजेक्ट इस्तेमाल किया था, तो आपको कुछ एकबारगी बदलाव करने होंगे। ये बदलाव नीचे दिए गए विशेष नोट्स में समझाए गए हैं।
यदि आपने Drupal 8 को Composer से स्थापित नहीं किया है
यदि आपकी साइट Composer द्वारा स्थापित नहीं की गई थी, तो आपको इसे Composer-प्रबंधित प्रोजेक्ट में बदलना होगा। इसके लिए देखें: मौजूदा साइटों में Composer जोड़ना।
चरण-दर-चरण अपडेट निर्देश
Composer के माध्यम से Drupal 8 कोर को अपडेट करने के चरण:
1. अपडेट से पहले हमेशा फ़ाइलों और डेटाबेस का बैकअप लें।
drush sql:dumpडेटाबेस का डंप तैयार करेगा।drush archive-dumpअब Drush 9 में नहीं है, इसलिए CLI टूल से बैकअप लें (vendor फ़ोल्डर को छोड़कर)।
2. रिलीज़ नोट्स पढ़ें। कुछ मॉड्यूल या थीम को नए माइनर संस्करण (उदाहरण: 8.3 → 8.4) के साथ संगत होने के लिए अपडेट की आवश्यकता हो सकती है।
3. मेंटेनेंस मोड सक्षम करें (system.maintenance_mode 1), फिर drush cache:rebuild चलाएँ।
4. यदि किसी मॉड्यूल या थीम को अपडेट की आवश्यकता है, तो देखें मॉड्यूल अपडेट निर्देश।
5. Drupal कोर और उसकी निर्भरताएँ अपडेट करें:
composer update drupal/core --with-dependencies
या यदि आप core-recommended उपयोग कर रहे हैं:
composer update drupal/core-recommended --with-dependencies
6. drush updatedb चलाएँ और drush cache:rebuild करें।
7. यदि आप कॉन्फ़िगरेशन मैनेजमेंट का उपयोग करते हैं, तो अपडेट के बाद drush config:export --diff चलाएँ ताकि बदलाव देखें और निर्यात करें।
8. Drupal साइट की जाँच करें:
- “स्टेटस रिपोर्ट” पेज पर त्रुटियाँ देखें।
- यदि डेटाबेस लॉग मॉड्यूल सक्षम है, तो नवीनतम लॉग में त्रुटियाँ या चेतावनियाँ जाँचें।
9. मेंटेनेंस मोड बंद करें:
drush state:set system.maintenance_mode 0 drush cache:rebuild
10. अपडेट के बाद साइट को एक अनाम उपयोगकर्ता के रूप में भी जांचें।
प्रोडक्शन वातावरण में
- Composer install चलाने पर
composer.lockमें सहेजे गए संस्करणों का उपयोग किया जाएगा, इसलिए dev और production दोनों में एक जैसे पैकेज होंगे। - प्रोडक्शन में
composer install --no-devका उपयोग करें ताकि dev निर्भरताएँ इंस्टॉल न हों।
Drupal 8.8.0 और नए संस्करणों में अपडेट के विशेष नोट्स
Drupal के आधिकारिक बीटा पार्टनर PreviousNext ने एक ब्लॉग पोस्ट प्रकाशित किया है जिसमें Drupal 8.7 से 8.8.0-beta तक अपडेट करने के चरण दिए गए हैं।
/vendor डायरेक्टरी हटाने का प्रयास करें
कभी-कभी vendor डायरेक्टरी हटाने से Composer अपडेट संघर्षों को हल किया जा सकता है:
cd your_install_dir rm -rf vendor
webflo/drupal-core-strict से drupal/core-recommended पर माइग्रेशन
Drupal 8.8.0 से पहले, कई साइटें webflo/drupal-core-strict का उपयोग करती थीं। अब Drupal इसका स्थानापन्न drupal/core-recommended प्रदान करता है।
माइग्रेशन के चरण:
composer updategit add composer.lock; git commitcomposer remove webflo/drupal-core-strict --no-updatecomposer remove drupal/core --no-updatecomposer require 'composer/installers:^1.7' --no-updaterm composer.lockrm -rf vendorcomposer require drupal/core-recommended:^8.8 --update-with-dependenciesgit add composer.json composer.lock; git commit -m "Update Drupal to 8.8.0"
webflo/drupal-core-require-dev से drupal/core-dev पर माइग्रेशन
यदि आपकी साइट पुराने dev पैकेज का उपयोग करती है, तो उसे हटाएँ:
composer remove --dev webflo/drupal-core-require-dev
फिर नया dev पैकेज जोड़ें:
composer require --dev drupal/core-dev
पैच अपडेट
यदि आप composer-patches का उपयोग करते हैं, तो आपको अपने पैच reroll करने की आवश्यकता हो सकती है।
सॉफ्ट डिपेंडेंसी संघर्ष
यदि कोई निर्भरता Drupal के नवीनतम संस्करण के साथ असंगत है, तो पहले Composer require के माध्यम से उसे सही संस्करण में अपडेट करें। उदाहरण:
composer require --update-with-dependencies \ drupal/core:^8.8.0 \ symfony/finder:^3.4 \ symfony/filesystem:^3.4
फिर dev निर्भरताएँ:
composer require --dev --update-with-dependencies \ drupal/core-dev:^8.8.0 \ symfony/debug:^3.4
फिर इन अस्थायी निर्भरताओं को हटाएँ:
composer remove -n symfony/finder symfony/filesystem composer remove -n --dev symfony/debug
डेटाबेस और कॉन्फ़िगरेशन अपडेट करें
drush updb drush cr drush config-export
settings.php अपडेट करें
Drupal 8.8.0 में अब $settings['config_sync_directory'] का उपयोग होता है, न कि $config_directories['sync'] का।
$config_directories['sync'] = 'foo/bar';
को बदलें:
$settings['config_sync_directory'] = 'foo/bar';
ज्ञात समस्याएँ और समाधान
यदि composer update चलाने के बाद भी drupal/core अपडेट नहीं होता, तो संभव है कि कोई अन्य निर्भरता इसे रोक रही हो। आप composer prohibits drupal/core:8.5.0 कमांड से यह देख सकते हैं।
कई Composer अपडेट समस्याएँ पुराने टेम्पलेट्स या गलत composer.json सेटिंग्स से जुड़ी होती हैं। सुनिश्चित करें कि आप अनुशंसित टेम्पलेट का उपयोग कर रहे हैं।
जनवरी 2020 से, drupal-composer/drupal-project टेम्पलेट अब Drupal 8.8+ के लिए अनुशंसित नहीं है। इसके बजाय, देखें Drupal Composer प्रोजेक्ट टेम्पलेट्स गाइड।
- Drupal 8.4.0 और Drush 9 के लिए अपडेट – Benji Fisher द्वारा ब्लॉग पोस्ट।
- Drupal 8.4 कोर के लिए चरण-दर-चरण गाइड – PreviousNext का ब्लॉग।
- Composer के साथ Drupal 8.5 अपडेट करना – Eirik Morland द्वारा ब्लॉग।
- Composer 8.4.4 से 8.5.0-alpha1 तक अपडेट नहीं कर सका – Composer अपडेट मुद्दों पर चर्चा।
- Drupal 8 साइट अपडेट करने में समस्या? – GoComposer प्लगइन के बारे में ब्लॉग।
यदि अपडेट प्रक्रिया के दौरान त्रुटियाँ या चेतावनियाँ आती हैं, तो उन्हें ध्यानपूर्वक पढ़ें और समाधान खोजें। किसी फेटल त्रुटि के मामले में प्रक्रिया को रोकें और बैकअप से पुनः आरंभ करें।