Por que "o compositor atualiza drupal / drupal" não funciona?

10

Eu instalei um site Drupal 8.2.0 com composer create-project drupal/drupal testsite.

Agora eu gostaria de atualizá-lo para o Drupal 8.2.1. No entanto, a execução composer update drupal/drupal não funciona. Ele imprime o seguinte erro:

O pacote "drupal / drupal" listado para atualização não está instalado. Ignorando.

Como eu faço isso? O suporte está claramente documentado em example.gitignore.

# Ignore core when managing all of a project's dependencies with Composer
# including Drupal core.
# core

Então tem que haver alguma maneira de fazer isso com o compositor, mas como?

Christoph Burschka
fonte

Respostas:

5

Edit: isso provavelmente não é útil b / c Acabei de reler sua declaração e você não teve o mesmo caso que o meu, de onde eu vinha de uma instalação antiga do Drupal 8, mas deixarei isso para o caso de alguém ter isso problema e tente ver se consigo encontrar o problema específico que você está tendo. Desculpe.

Eu tive esse problema ao lidar com uma atualização recente e esse foi o meu problema, mas o YMMV, por isso, se não funcionar, avise-me.

Isso pode ser um problema, pois o arquivo do compositor está definido para a lista de repositórios antiga no compositer.org. Recentemente, o Drupal configurou seus próprios pontos de extremidade do compositor, um para o Drupal 7 e outro para o Drupal 8. Você pode ler mais sobre essa alteração aqui: https://www.drupal.org/docs/develop/using-composer/using-composer- para instalar o drupal-packages-through-drupalorg

Este é o comando que precisa ser executado para trocar o repositório pelo Drupal.org.

$ composer config repositories.0 
$ composer https://packages.drupal.org/8
burnsjeremy
fonte
2
Mensagem de erro interessante desse segundo comando: "Não há comandos definidos no espaço para nome" https "". Estou realmente perdido agora.
Mojo
4

Acho que eu resolvi isso. Imaginei que precisaria de um arquivo root composer.json diferente que puxasse o pacote drupal em vez de substituí-lo, mas não sabia como fazê-lo.

Felizmente, alguém já fez isso e reembalou o Drupal de maneira amigável ao compositor: https://github.com/drupal-composer/drupal-project (aparentemente, ainda não há uma versão estável).

Ao usar, composer create-project drupal-composer/drupal-project:8.x-dev --stability dev drupal-dirconsegui uma instalação que pode ser atualizada com o compositor.

Christoph Burschka
fonte
2
O comando composer create-projectusa o projeto solicitado como modelo para o novo projeto, portanto, em sua primeira tentativa, git.drupal.org/project/drupal.git foi usado como modelo para o seu novo projeto. O uso de github.com/drupal-composer/drupal-project como modelo, faz com que o Drupal seja uma parte do projeto. De fato, em vez de usar drupal/drupal, ele usa drupal/core(para o diretório principal) e drupal-composer/drupal-scaffoldpara outros arquivos importantes como index.php e .htaccess.
David Lanier
3

O comando composer create-projectclona o pacote solicitado, que neste caso é https://git.drupal.org/project/drupal.git . No final do processo de criação do projeto, você deve ser perguntado se deseja remover o histórico existente do VCS. Se você respondeu n, você poderá atualizar a partir do repositório drupal upstream. Navegue até o site de teste e use o git para buscar e verificar a versão do Drupal desejada. Em seguida, execute composer installpara obter as dependências identificadas em composer.json e composer.lock da versão atualizada do Drupal.

David Lanier
fonte
3

Na linha de comando, precisávamos exigir o núcleo drupal (substitua pela sua versão):

composer require drupal/core:8.6.3 --update-with-dependencies

No arquivo composer.json em substituir, tivemos que remover "drupal / core": "^ 8.6" para substituir se parece com:

"replace": {

},

no nosso arquivo composer.json agora. Em seguida, executamos:

composer update

e drupal atualizado para a versão mais recente.

jasonflaherty
fonte