Sau đây là OK cho phát hành bản vá 8.4.x> 8.4.y , nhưng không bật đèn xanh cho các phiên bản nhỏ 8.4.x> 8.5.x . Chuyển đến CẬP NHẬT 3 dưới đây cho những gì tôi tin là "câu trả lời" cho các bản cập nhật phát hành nhỏ.
1- Sao lưu mọi tệp đi kèm với Drupal mà bạn đã sửa đổi, chẳng hạn như .htaccess, robot.txt, v.v. (2 tệp này được thay đổi phổ biến nhất).
2- [Tôi nói xóa tập tin khóa là sai, xem CẬP NHẬT bên dưới] Xóa trình soạn thảo.lock tệp (trong thư mục cấp cao nhất của trang web của bạn). Điều này được tạo lại trong bước 5.
3- Kiểm tra composer.json của bạn (trong thư mục cấp cao nhất của trang web của bạn) và đảm bảo rằng "drupal: core" nằm trong phần yêu cầu chứ không phải trong phần thay thế, ví dụ
"require": {
"drupal/core": "^8.4"
},
không phải
"replace": {
"drupal/core": "^8.4"
},
Nếu "drupal / core" nằm trong phần thay thế, hãy di chuyển nó đến phần yêu cầu và xóa phần thay thế. Nếu có các mục khác trong phần thay thế, chỉ cần loại bỏ "drupal / core" không phải toàn bộ phần thay thế - nhưng tôi nghĩ "drupal / core" thường là thứ duy nhất ở đó.
Đặt phiên bản bạn muốn cập nhật vào "drupal / core", ví dụ:
"drupal / core": "^ 8,5" - sẽ cập nhật lên phiên bản mới nhất của 8.5. "Drupal / core": "8.4.6" - sẽ cập nhật lên phiên bản 8.4.6.
5- Chạy cái này (trong thư mục cấp cao nhất của trang web của bạn):
composer update drupal/core --with-dependencies
6- Nếu không có lỗi, thì hãy làm như bình thường, chạy các bản cập nhật và xóa bộ đệm:
drush updatedb
drush cr
Hoặc nếu không sử dụng drush, hãy truy cập /update.php để chạy các bản cập nhật, sau đó đến admin / config / Development / Performance và nhấn nút "Xóa tất cả bộ nhớ cache".
7- Nếu bạn đã sao lưu các tệp trong bước đầu tiên (.htaccess, robot.txt), hãy đặt chúng trở lại. Nhưng hãy kiểm tra xem liệu Drupal có thực hiện cập nhật cho các tệp đó không và thêm những thay đổi đó vào của bạn.
LÀM XONG
Nếu có lỗi với bản cập nhật của nhà soạn nhạc ở bước 5, thì thường là do sự cố với các phiên bản của nội dung trong thư mục nhà cung cấp.
Đây là một bài viết tuyệt vời để xử lý các vấn đề như vậy: https : //www.jeffge Muff.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update và đọc 2 bài đăng khác của Jeff trên Drupal và Composer để có được thêm kiến thức về điều đó.
Tôi đã được 2 người trên Twitter nói rằng composer.lock không nên bị xóa (Bước 2 ở trên). Các composer update drupal/core --with-dependencies
lệnh tái tạo các tập tin khóa anyways.
Khi thử nghiệm phương pháp này, tôi thấy nó hoạt động tốt trong 8.4.3> 8.4.6 (ví dụ) nhưng tôi gặp lỗi với 8.4.6> 8.5.x. Sẽ báo cáo lại khi tôi tìm ra nó.
Ví dụ về lỗi:
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].
Bài đăng này của Jeff Geantic giải quyết các vấn đề tương tự, nhưng cho đến nay không có may mắn cho tôi: https : //www.jeffge Muff.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
Vì vậy, ... điều duy nhất có vẻ hiệu quả với tôi trong 8.4.x> 8.5.x là "tùy chọn hạt nhân" mà rất nhiều người khác dường như sử dụng, đó là chạy composer update
.
Tôi đoán điều đó là ổn miễn là bạn chắc chắn về các phiên bản mô-đun trong composer.json. Có lẽ người ta nên khóa chúng xuống phiên bản hiện tại. Ví dụ:
"drupal/address": "1.3"
thay vì:
"drupal/address": "^1.3"
Nhưng câu trả lời có đúng không?
OK câu trả lời dường như ở khắp mọi nơi là thực hiện "tùy chọn hạt nhân":
A. Xóa /vendor
thư mục.
B. Chạy composer update
và chỉ cần cập nhật các mô-đun của bạn cùng với lõi. Hoặc, khóa các phiên bản mô-đun composer.json
nếu bạn không muốn cập nhật chúng.
Một người trên Drupal Slack nói rằng "toàn bộ triết lý của Nhà soạn nhạc là bạn phải luôn cập nhật các gói, càng thường xuyên càng tốt" . Đóng gói bao gồm các mô-đun tôi nghĩ. Vì vậy, nó làm cho một số ý nghĩa tôi đoán.
Khi tôi nhận được từ 8.4.6 đến 8.5.0, điều này hoạt động tốt để có được từ 8.5.0 đến 8.5.1 composer update drupal/core --with-dependencies
giống như đã làm cho 8.4.3 đến 8.4.6.
Tôi bắt đầu kết luận rằng "câu trả lời" là việc xóa thư mục nhà cung cấp và tệp composer.lock, sau đó sử dụng composer update
là ổn và người ta chỉ cần đảm bảo số phiên bản cho các phụ thuộc trong tệp composer.json là những gì bạn muốn . Nó không phải là một thỏa thuận lớn để quản lý các phiên bản mô-đun bạn muốn giữ hoặc cho phép cập nhật composer.json
.
Ví dụ:
"drupal/admin_toolbar": "1.18",
có nghĩa là gắn bó với 1,18
"drupal/admin_toolbar": "^1.18",
có nghĩa là tiếp tục và cập nhật nhưng trong vòng 1.x (không phải 2.x)
Điều này được hỗ trợ bởi một bình luận (General Redneck) trên bài đăng này: https
: //www.jeffge Muff.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update "Một trong những điều tôi đã tìm thấy khi tôi hỗ trợ là việc khóa các phiên bản mô-đun và lõi là một ý tưởng hay để bạn CÓ THỂ điều chỉnh nhiệt khi bạn muốn bởi vì có những lúc một số plugin khác nhau thậm chí không muốn hành xử chính xác. "
Nhân tiện, tệp composer.lock không giúp được gì composer update
vì nó bị thổi bay (trái ngược với composer install
nơi anh ta khóa tệp được đọc):
Chạy composer install
sẽ:
- Kiểm tra nếu
composer.lock
tồn tại
- Nếu không, thực hiện một
composer update
để tạo một
- Nếu
composer.lock
tồn tại, cài đặt các phiên bản đã chỉ định từ tệp khóa
Chạy composer update
sẽ:
- Kiểm tra
composer.json
- Xác định các phiên bản mới nhất để cài đặt dựa trên thông số kỹ thuật phiên bản của bạn
- Cài đặt các phiên bản mới nhất
- Cập nhật
composer.lock
để phản ánh các phiên bản mới nhất được cài đặt
Tham chiếu: https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
Tôi thấy điều này được đề cập ở trên: https://github.com/drupal-composer/drupal-project . Tôi đã sử dụng nó và nó vẫn ổn nhưng nó không phải là một yêu cầu để sử dụng Trình soạn thảo với Drupal. Thật khó hiểu vì nó giống như "âm thanh" giống như tên của nó. Khi tôi mới bắt đầu với Drupal 8, tôi nghĩ rằng nó là bắt buộc, vì vậy đã xây dựng trang web D8 đầu tiên của tôi với điều đó, nghĩ rằng đó là cách thực hành tốt nhất.
"Phiên bản" đó của Drupal có tài liệu trong thư mục / web chứ không phải trong thư mục trên cùng của dự án. Ngoài ra, có một loạt các công cụ được thêm vào .gitignore so với Drupal bình thường:
/drush/contrib/
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
Vì vậy, phiên bản Drupal này thực sự có ý nghĩa hơn đối với các trang web đang sử dụng tích hợp liên tục để thực hiện bản dựng mới của Drupal trên mỗi triển khai, sử dụng cài đặt của nhà soạn nhạc. Nếu bạn triển khai với một phương thức bình thường hơn, rõ ràng bạn phải cam kết tất cả những thứ trên với git repo của mình hoặc nó sẽ không được triển khai đến máy chủ của bạn [1] và những thứ đó là tất cả cần thiết để Drupal chạy.
[1] nếu git có liên quan đến việc triển khai của bạn - nếu bạn triển khai với SFTP, hãy bỏ qua điều này.