다음은 패치 릴리스 8.4.x> 8.4.y 에 대해서는 정상이지만 부 릴리스 8.4.x> 8.5.x에 대해서는 정상이 아닙니다 . 부 릴리스 업데이트에 대한 "답변"이라고 생각되는 부분은 아래 업데이트 3으로 이동하십시오 .
1- .htaccess, robots.txt 등과 같이 수정 한 Drupal과 함께 제공되는 모든 파일을 백업하십시오 (2가 가장 일반적으로 변경됨).
2- [삭제 파일 삭제가 잘못되었다고 들었습니다. 아래 업데이트 참조] composer.lock 파일을 삭제 하십시오 (사이트의 최상위 폴더에 있음). 이것은 5 단계에서 다시 작성됩니다.
3- 사이트의 최상위 폴더에있는 composer.json 을 확인하고 "drupal : core"가 replace 섹션이 아닌 require 섹션에 있는지 확인하십시오 (예 :
"require": {
"drupal/core": "^8.4"
},
아니
"replace": {
"drupal/core": "^8.4"
},
"drupal / core"가 replace 섹션에 있으면 require 섹션으로 옮기고 replace 섹션을 삭제하십시오. 바꾸기 섹션에 다른 항목이 있으면 전체 교체 섹션이 아닌 "drupal / core"를 제거하십시오. 그러나 일반적으로 "drupal / core"가 유일한 것으로 생각합니다.
업데이트 할 버전을 "drupal / core"에 넣으십시오 (예 :
"drupal / core": "^ 8.5"-최신 버전 8.5로 업데이트됩니다. "drupal / core": "8.4.6"-버전 8.4.6으로 업데이트됩니다.
5- 이것을 사이트의 최상위 폴더에서 실행하십시오 :
composer update drupal/core --with-dependencies
6- 오류가 없으면 평소대로 업데이트를 실행하고 캐시를 지우십시오.
drush updatedb
drush cr
또는 drush를 사용하지 않는 경우 /update.php로 이동하여 업데이트를 실행 한 다음 admin / config / development / performance로 이동하여 "모든 캐시 지우기"버튼을 누르십시오.
7- 첫 단계에서 파일을 백업 한 경우 (.htaccess, robots.txt) 파일을 다시 넣습니다. 그러나 Drupal이 해당 파일을 업데이트했는지 확인하고 변경 사항을 귀하의 파일에 추가하십시오.
끝난
5 단계에서 작성기 업데이트에 오류가있는 경우 일반적으로 공급 업체 폴더의 항목 버전에 문제가 있습니다.
이 같은 문제를 다루는에 큰 게시물입니다 : https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update 및하려면 드루팔와 작곡가 제프의 다른이 개 게시물을 읽어 그것에 대한 더 많은 지식.
트위터에서 두 사람이 composer.lock을 삭제해서는 안된다고 들었습니다 (위의 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].
Jeff Geerling 의이 게시물은 비슷한 문제를 해결하지만 지금까지는 운이 없습니다 : https://www.jeffgeerling.com/blog/2018/updating-drupalcore-composer-drupal-core-doesnt-update
그래서 ... 8.4.x> 8.5.x에서 저에게 효과가있는 유일한 것은 다른 많은 사람들이 사용하는 것처럼 보이는 "핵 옵션"입니다 composer update
.
composer.json의 모듈 버전에 대해 확신하는 한 괜찮습니다. 어쩌면 현재 버전으로 고정해야 할 수도 있습니다. 예를 들면 다음과 같습니다.
"drupal/address": "1.3"
오히려
"drupal/address": "^1.3"
그러나 정답입니까?
OK는 모든 곳에서 "핵 선택"을하는 것입니다.
A. /vendor
폴더를 삭제하십시오 .
B. composer update
코어와 함께 모듈을 실행 하고 간단히 업데이트하십시오. 또는 composer.json
업데이트하지 않으려면 모듈 버전을 잠그십시오 .
Drupal Slack의 한 사람은 "Composer의 전체 철학은 항상 가능한 한 자주 패키지를 업데이트해야한다는 것"이라고 말했습니다 . 패키지에는 내가 생각하는 모듈이 포함되어 있습니다. 그래서 내가 추측하는 것이 의미가 있습니다.
8.4.6에서 8.5.0에 도달하면 composer update drupal/core --with-dependencies
8.4.3에서 8.4.6에서와 마찬가지로 8.5.0에서 8.5.1 로 올바르게 작동했습니다.
"답변"은 공급 업체 폴더와 composer.lock 파일을 삭제 한 다음 사용하는 composer update
것이 좋으며 composer.json 파일의 종속성에 대한 버전 번호가 원하는지 확인해야한다는 결론을 내리기 시작했습니다 . . 어떤 모듈 버전을 유지하거나 업데이트 할 것인지 관리하는 것은 그리 큰 문제가 아닙니다 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
존재 하는지 확인
- 그렇지 않은 경우 a
composer update
를 수행하여 하나를 만듭니다.
composer.lock
존재하는 경우 잠금 파일에서 지정된 버전을 설치하십시오.
러닝 composer update
윌 :
- 검사
composer.json
- 버전 사양에 따라 설치할 최신 버전 확인
- 최신 버전 설치
composer.lock
설치된 최신 버전을 반영하도록 업데이트
참조 : https://www.engineyard.com/blog/composer-its-all-about-the-lock-file
https://github.com/drupal-composer/drupal-project 위에 언급되어 있습니다 . 나는 그것을 사용했지만 괜찮지 만 Drupal과 함께 Composer를 사용할 필요는 없습니다. 이름에서 온 것처럼 "소리"와 같이 혼동됩니다. Drupal 8을 처음 시작했을 때 필요하다고 생각했기 때문에 D8 사이트를 구축하여 모범 사례라고 생각했습니다.
Drupal의 "버전"은 프로젝트의 최상위 폴더가 아닌 / web 폴더에 docroot를 가지고 있습니다. 또한 일반적인 Drupal과 비교하여 .gitignore에 추가 된 많은 것들이 있습니다.
/drush/contrib/
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
따라서이 버전의 Drupal은 컴포저 설치를 사용하여 모든 배포에서 새로운 Drupal 빌드를 수행하기 위해 지속적인 통합을 사용하는 사이트에 더 적합합니다. 보다 일반적인 방법으로 배포하는 경우, 위의 모든 내용을 git repo에 커밋해야합니다. 그렇지 않으면 서버에 배포되지 않습니다 [1]. Drupal을 실행하려면 해당 내용이 모두 필요합니다.
[1] git이 배포와 관련된 경우-SFTP와 함께 배포하는 경우 무시하십시오.