Come risolvere un conflitto “Può installare solo uno di:”?

Ho installato un pacchetto tramite Composer e ha installato anche Guzzlehttp, a causa del pacchetto. Dopo che ho provato a installare un altro pacchetto tramite Composer, che richiede anche Guzzlehttp e Composer, ho provato ad installarlo di nuovo.

Ma ottengo quell’errore:

Problema 1

  • È ansible installare solo uno di: guzzlehttp / guzzle [6.2.0, 6.0.2].

  • È ansible installare solo uno di: guzzlehttp / guzzle [6.0.2, 6.2.0].

  • È ansible installare solo uno di: guzzlehttp / guzzle [6.0.2, 6.2.0].

Vedo qual è il problema, ma non so come risolverlo.

    Ho avuto un problema simile e ho dovuto solo correre

    composer update

    prima di installare il nuovo pacchetto. Questo funzionerà a seconda che gli altri pacchetti installati abbiano aggiornato anche le loro dipendenze.

    Il messaggio ” Può installare solo un [x, y] ” appare quando due diversi pacchetti puntano alla stessa dipendenza, ma diverse versioni principali, mutuamente esclusive, in cui solo una può essere installata.


    Risoluzione dei problemi

    Ad esempio, una versione può essere ” bloccata ” a causa delle informazioni presenti nel file composer.lock che potrebbero entrare in conflitto con quello che stai tentando di installare. In questo caso, quando l’errore di confusione viene fornito con il messaggio ” locked at xyz “, è ansible utilizzare i seguenti comandi per comprendere le dipendenze esistenti dei pacchetti installati:

     composer show -t 

    Nota: -t mostra una vista ad albero nidificata, rilasciarla per vedere l’elenco semplice.

    Per vedere da dove viene fatto riferimento al pacchetto problematico nel tuo progetto, esegui:

     composer why org/package -t 

    Nota: -t mostra una vista ad albero nidificata, rilasciarla per vedere l’elenco semplice.

    Per vedere i dettagli del pacchetto che stai tentando di installare, puoi eseguire:

     composer show -a org/package # Package to inspect. 

    Nota: per ispezionare la versione specifica, aggiungi xyz , ad esempio: composer show -a guzzlehttp/guzzle 6.2.0


    Per risolvere ulteriormente il problema, a seconda della situazione, puoi provare a:

    • Aggiorna i pacchetti esistenti con le dipendenze tramite:

       composer update --with-dependencies 
    • Aggiorna o rimuovi le dipendenze in conflitto da composer.json (mantieni semplice).

    • Quando il messaggio di confusione mostra ” locked at xyz “, usa il composer why org/package per vedere dove viene fatto riferimento al pacchetto (o controlla manualmente il contenuto di composer.lock cercando xyz ). Se non aiuta, prendi in considerazione la rimozione di composer.lock e riprovare di nuovo;
    • Quando viene chiesto di utilizzare composer.json dalla cartella diversa , selezionare n .
    • Prova nuovamente il tuo semplice composer.json , configurazione semplificata nella cartella vuota.
    • Esegui la composer diagnose per verificare eventuali errori comuni.
    • Usa -v / -vv / -vvv per aumentare la verbosità dei tuoi comandi.
    • Vedi anche: Come spiegare il log degli errori di Composer?