Cập nhật Drupal 8 core với Composer đã được chứng minh là một quá trình có vấn đề đối với nhiều nhà phát triển. Đối với một số người, điều này gần như gây khó chịu vì biểu tượng Composer thực sự là một nhạc trưởng và một số người đã từ bỏ hoàn toàn nền tảng này, chọn gắn bó với Drupal 7
Quá trình này không phải lúc nào cũng đơn giản như chạy composer update drupal/core
và tiếp tục công việc trong ngày của bạn — bản cập nhật từ 8. 3 đến 8. 4 nổi tiếng là khó và gần đây tôi đã gặp sự cố khi cập nhật từ 8. 4. 5 đến 8. 5. 0. Trong bài viết này, tôi đã cung cấp hướng dẫn cập nhật lõi D8 với Composer, cùng với một số mẹo để xử lý các vấn đề phổ biến
Điều này hiện đặc biệt quan trọng vì chúng tôi đang chờ bản cập nhật bảo mật cực kỳ quan trọng cho tất cả các phiên bản của Drupal, sẽ được phát hành vào Thứ Tư, ngày 28 tháng 3 năm 2018. Mức cập nhật bảo mật này khá hiếm, nhưng bản cập nhật cần được triển khai trên tất cả các trang web càng sớm càng tốt sau khi phát hành
Vì PSA được liên kết với các ghi chú ở trên, Nhóm bảo mật Drupal sẽ cung cấp các bản phát hành bảo mật cho các phiên bản phụ 8 không được hỗ trợ. 3. x và 8. 4. x do các sự cố mà nhiều người gặp phải khi cập nhật từ các phiên bản này. Nếu bạn vẫn đang sử dụng một trong những phiên bản đó, thì bản cập nhật có thể đơn giản hơn nếu bạn tiếp tục phát hành phiên bản nhỏ đó
Hướng dẫn chung để cập nhật lõi
Trước tiên, chúng ta hãy thực hiện các bước cần thiết để cập nhật Drupal 8 core với Composer
Để cập nhật gói lõi, hãy chạy
composer update drupal/core --with-dependencies -v
Bạn nên chạy lệnh cập nhật với cờ
--with-dependencies
để cập nhật bất kỳ phần phụ thuộc nào của lõi Drupal- Để nắm bắt mọi cập nhật cơ sở dữ liệu đi kèm, hãy chạy
drush updb -y.
- Để ghi lại mọi thay đổi cấu hình đi kèm, hãy chạy
drush config-export -y
và thực hiện các thay đổi
Tất cả ba bước này đều cần thiết bất cứ khi nào gói lõi được cập nhật
Xử lý lỗi
Phiên bản cốt lõi không cập nhật
Nếu bạn chạy lệnh composer update
nhưng lõi không cập nhật, hãy chỉnh sửa tệp composer.json
của bạn để bao gồm phiên bản lõi cụ thể mà bạn muốn, e. g. ^8.5
. Sau đó, chạy lại lệnh composer update
Lỗi đầu ra lệnh của nhà soạn nhạc
Trình soạn thảo có thể không giải quyết được tất cả các phụ thuộc của lõi và sẽ xuất ra lỗi như thế này
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Conclusion: don't install drupal/core 8.5.0
- Conclusion: don't install drupal/core 8.5.0-rc1
- Conclusion: don't install drupal/core 8.5.0-beta1
- Conclusion: don't install drupal/core 8.5.0-alpha1
- Conclusion: don't install drupal/core 8.6.x-dev
- Conclusion: remove symfony/config v3.2.9
- Installation request for drupal/core ^8.5 -> satisfiable by drupal/core[8.5.0, 8.5.0-alpha1, 8.5.0-beta1, 8.5.0-rc1, 8.5.x-dev, 8.6.x-dev].
- Conclusion: don't install symfony/config v3.2.9
- drupal/core 8.5.x-dev requires symfony/dependency-injection ~3.4.0 -> satisfiable by symfony/dependency-injection[3.4.x-dev, v3.4.0, v3.4.0-BETA1, v3.4.0-BETA2, v3.4.0-BETA3, v3.4.0-BETA4, v3.4.0-RC1, v3.4.0-RC2, v3.4.1, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6].
- symfony/dependency-injection 3.4.x-dev conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0-BETA1 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0-BETA2 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0-BETA3 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0-BETA4 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0-RC1 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.0-RC2 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.1 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.2 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.3 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.4 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.5 conflicts with symfony/config[v3.2.9].
- symfony/dependency-injection v3.4.6 conflicts with symfony/config[v3.2.9].
- Installation request for symfony/config [locked at v3.2.9] -> satisfiable by symfony/config[v3.2.9].
Điều này xảy ra khi một trong các phần phụ thuộc của Drupal được cập nhật và phiên bản mới yêu cầu phiên bản cập nhật của gói khác. Để giải quyết vấn đề này, hãy đưa gói phụ thuộc gây ra sự cố vào lệnh composer update
. Cờ --with-dependencies
điều này sẽ đảm bảo rằng các phần phụ thuộc của thành phần phụ thuộc cũng được cập nhật. Để sửa lỗi trên, tôi đã chạy
composer update drupal/core symfony/config --with-dependencies -v
Bạn không cô đơn
Nếu bạn tiếp tục gặp sự cố, lời khuyên tốt nhất mà tôi có thể dành cho bạn là tìm kiếm bản cập nhật cụ thể mà bạn đang cố thực hiện. Mỗi khi tôi gặp sự cố, tôi có thể tìm thấy các cuộc thảo luận trực tuyến về bản cập nhật cụ thể đó và các giải pháp tiềm năng
Trên thực tế, khi tôi gặp lỗi ở trên khi cố gắng cập nhật lên 8. 5. 0, tôi đã tìm thấy bài viết hữu ích này của drupal. người dùng org eiriksm và có thể giải quyết vấn đề. Kiểm tra bài viết và nhận xét của nó để thảo luận thêm về cách xử lý các sự cố Trình soạn thảo khi cập nhật Drupal 8 core