Posted by s-jack on October 7, 2017 at 4:39am
drupal-composer/drupal-projectを利用し、composerでのDrupal 8.3.4から8.4へのアップグレードで、実際にやるべきことは初心者には難しいです。
Drushも一部drushのバージョンを8では障害があるので、9へあげたほうが良いという情報もありました。
drupal-composer/drupal-projectでは、Composerで管理するのでdrush pm-updateは使えないようになってますが、Drush9では単独でもdrush pm-updateが使えなくなる前提とのこと。
また、symfonyのコンポーネントの一部依存があるようですし。
composer.jsonをどう修正したら良いかアドバイスお願いします。
Comments
8.4にならない
新規インストールの場合、drupal-composer/drupal-projectに記載のとおり、
composer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction
すると、なぜか8.4はダウンロードされず、8.3.7がダウンロードされます。バグですかね。。。
現在のサイトですが、coreを8.3.7から8.4にアップデートしようとすると、何も起こりません。
composer require drupal/core --with-dependencies
composer.jsonは次のようにセマンティックバージョンな記述となっており、なにか記述しなければいけないのでしょうか。。。特にコントリビュートモジュール以外はrequireしてないのですが、8.4にするための依存関係だけをちょっと修正しないといけないとか。
"require": {
"composer/installers": "^1.2",
"cweagans/composer-patches": "^1.6",
"drupal-composer/drupal-scaffold": "^2.2",
"drupal/admin_toolbar": "^1.20",
"drupal/chosen": "^2.4",
"drupal/console": "^1.0.1",
"drupal/core": "~8.0",
"drupal/devel": "^1.0",
"drupal/edit_content_type_tab": "^1.0",
"drupal/extlink": "^1.0",
"drupal/field_group": "1.x-dev",
"drupal/geofield": "^1.0@alpha",
"drupal/geofield_map": "^1.11",
"drupal/geolocation": "^1.11",
"drupal/gtranslate": "^1.13",
"drupal/l10n_client": "^1.0@alpha",
"drupal/module_filter": "^3.0",
"drupal/taxonomy_container": "^1.0",
"drupal/taxonomy_formatter": "^1.0@alpha",
"drupal/tmgmt": "^1.2",
"drupal/tmgmt_google": "1.x-dev",
"drupal/tmgmt_microsoft": "1.x-dev",
"drupal/tmgmt_mygengo": "1.x-dev",
"drupal/token": "^1.0",
"drush/drush": "~8.0",
"harvesthq/chosen": "^1.7",
"webflo/drupal-finder": "^1.0.0",
"webmozart/path-util": "^2.3"
},
composer update でsymfonyなど全体をアップデートしてからでないと、drupal/coreがアップできないとか。
どのような順序で行うのが良いのでしょうか。
Drupal/coreの依存関係が他のrequireに書かれているので、そうするとたのdrupal/core以外の部分を修正しないといけないのでしょうか?
composer why-not drupal/core 8.4.0
composer why-not drupal/core 8.4.0
でどのパッケージが足を引っ張っているか分かるかもしれません。使い方などは以下を確認してみてください。Command-line interface / Commands - Composer
twitter: @snize
composer update
composer update —with-dependencies は非推奨みたいですが、—dry-runで調べたら行けそうなので、テスト環境なのでやっちゃいました。
次回は教えていただいたcomposerのコマンドをもっと沢山勉強して調べてからにします。
Slackで色々とおしえていただいたおかげで、やっとcomposerでのアップーデートに少し慣れてきた感じです。
解決されたようで良かったです〜 composer
解決されたようで良かったです〜
composer update —with-dependenciesが非推奨とはどういう意味でしょうか?
twitter: @snize
非推奨の記述がありました
Update procedure in Drupal 8 | Drupal.org
このドキュメントによると、
とあり日本語訳も一応記しておきますが、
ご注意ください:composer update --with-dependenciesはコアとすべてのモジュールを更新しますが、状況によっては問題を引き起こす可能性があるため、推奨されていません。
おそらくつまり、コアをアップデートするときは、単純にdrupal/core --with-dependencies でコアに関連するものだけ段階的に限定してあげるように、ってことじゃないでしょうか?
なるほど、これは引用された文章の直前も含める必要がありco
なるほど、これは引用された文章の直前も含める必要があり
composer update drupal/modulename --with-dependencies
であれば指定したモジュールとそれの依存するパッケージがアップデートされることに対して、composer update drupal/modulename --with-dependencies
はおっしゃる通りすべてのモジュール及び依存パッケージがアップデートされるので推奨しない。という意味だと思います。https://www.drupal.org/docs/8/update/update-procedure-in-drupal-8
twitter: @snize
順序がきになる
はい、おっしゃるとおりです。
いきなり全体でupdate --with-dependenciesはかけるなと。
そこでアプデの順序が気になるわけです。
1 コアを除くcontributeモジュールを、drupal/modulename --with-dependenchiesでアップデートし、
2 次にコアを、drupal/core --with-dependenchiesでアップデートし、
3 最後にcomposer update (ここで--with-dependenciesをつけるかはよく分からない)ということなのでしょうか?
あってますでしょうか。。。
良いのではないでしょうか。僕の場合は小まめにcompose
良いのではないでしょうか。僕の場合は小まめにcomposer updateしているので直接モジュールやコアの指定をすることは多くないですが、あえてアップデートを控えた場合などで後からまとめてアップデートするときは、大体ご提示の手順で行います。
twitter: @snize
こまめにアップデート
こまめにcomposer updateをされているというのは、--with-dependenciesをつけずに単純にcomposer updateをされているということでしょうか?
どうも--with-dependenciesの使い所がイマイチ理解できません。
ライブラリやモジュール単体が依存する他のライブラリやモジュールがある場合、それをまとめてアップデートするというのはわかるのですが。。。
Drupal/coreはそもそもsymphonyやその他のライブラリが「全部」依存なのでは?
下位互換性がある場合に限り、--with-dependenciesつけなくても、kanekoさんのとおり単純に全体にcomposer updateで良いのではないか?
うーん、難しいです(笑)
そうです、単純に普段はcomposer
そうです、単純に普段は
composer update
しています。多分、モジュールをwhitelistにモジュールを指定しない
composer update --with-dependencies
とcomposer update
は等価なのだと思います。composer.lockを比較してみるとスッキリするかもしれないですね。
twitter: @snize
追加で教えてくいただけませんか?
@Tomotsugu Kanekoさん、追加で教えてくいただけませんか?
Composer updateですが例えば、
当初インストールしたcomposer.jsonで、drupal/hogehoge:^8.1.1とかなっていて、
しばらくcomposer updateでdrupal/hogehoge:8.1.5くらいまでアップデートすると.jsonは当初のまま、.lockは現バージョンが記載されてると思いますが、
8.1.6がリリースされた時に、.jsonファイルを書き換える意味でcomposer require drupal/hogehoge:^8.1.6とかすると(requireの上書き)入れ替えてくれるわけですが、つまり毎回requireしても良いんでしょうか?(笑)
もう1つですが、
drupal/hogehoge:1.x-devみたいな開発版いれたときのアップデートってどうすれば良いのでしょうか?
新規に入れる時は引っ張ってきてくれるが、dev版もcomposer updateでアップデート対象がないと言われてしまいます。
dev版なのでUIでモジュール更新で良いんでしょうか?
drush upでdevの後に数字が付いているのを見かけますが、dev版も細かい識別番号があるのでしょうか?