8.4.x> 8.4.y yama sürümleri için aşağıdaki gibidir , ancak 8.4.x> 8.5.x küçük sürümler için uygun değildir . Küçük sürüm güncellemeleri için "cevap" olduğuna inandığım şey için aşağıdaki GÜNCELLEME 3'e atlayın .
1- Drupal ile gelen, .htaccess, robots.txt vb. Gibi değiştirilmiş tüm dosyaları yedekleyin (en sık değiştirilenler 2'dir).
2- [Kilit dosyasının silinmesinin yanlış olduğu söylendi, aşağıdaki GÜNCELLEŞTİRİN] composer.lock dosyasını silin (sitenizin en üst düzey klasöründe). Bu, 5. adımda yeniden oluşturulur.
3- composer.json'unuzu ( sitenizin en üst düzey klasöründe) kontrol edin ve "drupal: core" un bir değiştirme bölümünde değil, zorunlu bölümde olduğundan emin olun.
"require": {
"drupal/core": "^8.4"
},
değil
"replace": {
"drupal/core": "^8.4"
},
Değiştirme bölümünde "drupal / core" varsa, gereken bölüme taşıyın ve değiştirme bölümünü silin. Eğer değiştirme bölümünde başka girişler varsa, sadece tüm değiştirme bölümünü değil "drupal / çekirdek" kaldırmak - ama bence "drupal / çekirdek" normalde orada tek şeydir.
Güncellemek istediğiniz sürümü "drupal / core" içine koyun, örnekler:
"drupal / core": "^ 8.5" - 8.5'in en son sürümüne güncellenecektir. "drupal / core": "8.4.6" - 8.4.6 sürümüne güncellenecektir.
5- Bunu çalıştırın (sitenizin üst düzey klasöründe):
composer update drupal/core --with-dependencies
6- Hata yoksa, olağan işlemleri yapın, güncellemeleri çalıştırın ve önbelleği temizleyin:
drush updatedb
drush cr
Veya drush kullanmıyorsanız güncellemeleri çalıştırmak için /update.php adresine gidin, ardından admin / config / development / performance adresine gidin ve "Tüm önbellekleri temizle" düğmesine basın.
7- İlk adımda (.htaccess, robots.txt) dosyaları yedeklediyseniz, onları geri koyun. Ancak Drupal'ın bu dosyalarda güncelleme yapıp yapmadığını kontrol edin ve bu değişiklikleri kendi dosyalarınıza ekleyin.
YAPILAN
5. adımda besteci güncellemesinde hatalar varsa, bunun nedeni genellikle satıcı klasöründeki öğelerin sürümleriyle ilgili sorunlardır.
Bu, bu tür sorunlarla ilgilenmek için harika bir gönderi: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update ve Jeff'in Drupal ve Composer'daki diğer 2 yayınını okuyun bu konuda daha fazla bilgi.
Twitter'da 2 kişi tarafından composer.lock dosyasının silinmemesi gerektiği söylendi (yukarıdaki 2. Adım). composer update drupal/core --with-dependencies
Komut neyse kilit dosyasını yeniden oluşturur.
Bu yöntemi test ederken 8.4.3> 8.4.6 için iyi çalışıyor (örneğin) ama 8.4.6> 8.5.x için hatalar alıyorum. Anladýđým zaman rapor vereceđim.
Hatalara örnek:
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].
Jeff Geerling'in bu yayını benzer sorunları ele alıyor, ancak şu ana kadar bana şans getirmiyor: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Yani ... 8.4.x> 8.5.x için benim için işe yarayan tek şey, diğer pek çok kişinin kullandığı "nükleer seçenek" composer update
.
Composer.json modül sürümleri hakkında emin olduğunuz sürece sorun yok sanırım. Belki de onları mevcut sürüme kilitlemelisiniz. Örneğin:
"drupal/address": "1.3"
ziyade:
"drupal/address": "^1.3"
Peki doğru cevap bu mu?
Tamam her yerde gibi görünen cevap "nükleer seçenek" yapmaktır:
A. /vendor
Klasörü silin .
B. composer update
Modüllerinizi çekirdek ile birlikte çalıştırın ve güncelleyin. Veya composer.json
güncellemek istemiyorsanız modül sürümlerini kilitleyin .
Drupal Slack'deki bir kişi "Composer'ın tüm felsefesi, paketleri olabildiğince sık güncellemeniz gerektiğidir" dedi . Paketlenmiş bence modülleri içerir. Bu yüzden sanırım bir anlam ifade ediyor.
8.4.6'dan 8.5.0'a ulaştığımda, bu 8.4.3'den 8.4.6'ya olduğu gibi 8.5.0'dan 8.5.1'e ulaşmak için iyi çalıştı composer update drupal/core --with-dependencies
.
Ben "cevap" satıcı klasörü ve composer.lock dosyasını silmek, sonra kullanarak composer update
gayet olduğunu ve bir basit sadece composer.json dosyasında bağımlılıklar için sürüm numaralarının istediğiniz olduğundan emin olun sonucuna başlıyorum . Hangi modül sürümlerini saklamak istediğinizi veya güncellemenize izin vermek istediğiniz kadar büyük bir anlaşma değildir composer.json
.
Örneğin:
"drupal/admin_toolbar": "1.18",
1.18 ile sopa anlamına gelir
"drupal/admin_toolbar": "^1.18",
devam edip güncelleme anlamına gelir, ancak 1.x içinde (2.x değil)
Bu, bu yayına bir yorum (Genel Redneck) ile desteklenir: https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
"Yaptığım şeylerden biri Ben destek olarak çalışırken bulundu modüllerin ve çekirdek sürümlerini kilitlemek iyi bir fikir olduğunu, böylece istediğiniz zaman bir şey termonuke yapabilirsiniz çünkü çeşitli eklentileri bazı bile doğru davranmak istemiyorum zamanlar var. "
Bu arada, composer.lock dosyası yardım etmiyor composer update
çünkü havaya uçuyor ( composer install
dosyayı kilitlediği yerin aksine ):
Koşu composer install
olacak:
- Bir kontrol edin
composer.lock
varsa
- Değilse, bir
composer update
tane oluşturmak için
- Varsa
composer.lock
, kilit dosyasından belirtilen sürümleri yükleyin
Koşu composer update
olacak:
- Kontrol
composer.json
- Sürüm özelliklerinize göre yüklenecek en son sürümleri belirleyin
- En son sürümleri yükleyin
composer.lock
Yüklü en son sürümleri yansıtacak şekilde güncelleme
Ref: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Bunun yukarıda belirtildiğini görüyorum: https://github.com/drupal-composer/drupal-project . Bunu kullandım ve sorun değil ama Besteci Drupal ile kullanmak için bir gereklilik değil. Adından olduğu gibi "sesler" gibi kafa karıştırıcı. Drupal 8 ile ilk başladığımda bunun gerekli olduğunu düşündüm, bu yüzden ilk D8 sitemi bununla inşa ettim, en iyi uygulama olduğunu düşündüm.
Drupal'ın bu "sürümü", projenin en üst klasöründe değil, bir / web klasöründe doktora yaptı. Ayrıca .gitignore'a normal Drupal'a kıyasla bir sürü şey eklendi:
/drush/contrib/
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
Bu nedenle, Drupal'ın bu sürümü, besteci yüklemesini kullanarak her dağıtımda yeni bir Drupal derlemesi yapmak için sürekli entegrasyon kullanan siteler için daha çok amaçlanmıştır. Daha normal bir yöntemle dağıtıyorsanız, yukarıdaki tüm şeyleri git repo'nuza tabi tutmanız gerekir, aksi takdirde sunucunuza dağıtılmaz [1] ve Drupal'ın çalışması için bunların hepsi gereklidir.
[1] git konuşlandırmanızla ilgiliyse - SFTP ile konuşlandırıyorsanız, bunu dikkate almayın.