composer install non è composer update
Data Pubblicazione: | | Stack

composer install non è composer update

Se il lock c’è, install usa quelle versioni. Update risolve di nuovo e riscrive il lock. Upgrade è un alias, non un comando più prudente. --with, dice la nota, aggiorna tutti i pacchetti.

composer install non ricalcola le versioni se in cartella c’è già un composer.lock. composer update sì: risolve di nuovo e riscrive il lock. I due comandi non sono sinonimi, e upgrade non è un terzo comportamento: nel manuale è solo un alias di update. Rilettura del 15 ottobre 2026 su getcomposer.org, pagina CLI.

In breve: install legge composer.json, installa in vendor e, se il lock c’è, usa quelle versioni esatte. Update esiste proprio per ottenere le versioni più recenti consentite e per aggiornare il lock. --no-install ferma update prima della copia in vendor. Non è il pezzo su PHP 8.5 e 8.6: lì si parla del runtime, qui del file che inchioda le librerie.

Cosa trovi in questo articolo

  1. Che cosa fa install

  2. Che cosa fa update

  3. Un pacchetto solo, e la trappola di --with

  4. Errori da evitare

  5. In sintesi

Che cosa fa install

Nella documentazione CLI, voce install / i: il comando legge il composer.json della cartella corrente, risolve le dipendenze e le installa in vendor. Se nella stessa cartella c’è un composer.lock, usa le versioni esatte scritte lì invece di risolverle un’altra volta. La frase del manuale è netta: così chi usa la libreria ottiene le stesse versioni. Se il lock non c’è, Composer lo crea dopo la risoluzione.

Quindi un install su un repository che ha già il lock non è un «dammi l’ultima versione». È una ricostruzione di vendor a partire da un elenco già deciso. La scheda sta nel cluster Stack.

Che cosa fa update

La voce update / u / upgrade apre così: per avere le ultime versioni delle dipendenze e per aggiornare il composer.lock si usa update. Il comando è aliasato come upgrade perché, se si pensa ad apt-get o a un gestore simile, «upgrade» è il nome che ci si aspetta. Non è un comando apt. Fa la stessa cosa di update.

Senza argomenti, update risolve tutte le dipendenze del progetto e scrive le versioni esatte nel lock. L’opzione --no-install non esegue il passo di installazione dopo aver aggiornato il lock: il file cambia, vendor no. --no-dev salta i pacchetti di require-dev. Sono flag del manuale, non una policy aziendale.

Un pacchetto solo, e la trappola di --with

Per non toccare tutto l’albero si elencano i pacchetti: composer update vendor/package vendor/package2. Il manuale ammette anche una wildcard, composer update "vendor/*".

Per scendere a una versione precisa senza modificare il composer.json c’è --with, per esempio composer update --with vendor/package:2.0.1. La nota subito sotto dice che, con quella forma, tutti i pacchetti vengono aggiornati. Se si vuole limitare l’aggiornamento ai pacchetti di cui si passa il vincolo, il manuale dice di non usare --with e di usare la sintassi parziale: composer update vendor/package:2.0.1. Per un pacchetto che è anche in composer.json, quel vincolo temporaneo deve essere un sottoinsieme del vincolo già scritto. Il json non viene modificato.

ComandoLockChe cosa non fa
install con lock presenteLegge le versioni esatteNon cerca una risoluzione nuova
install senza lockLo crea dopo la risoluzioneNon è un update di un lock già in repo
updateRisolve e riscriveNon è un alias innocuo di install
update --no-installRiscrive il lockNon copia i pacchetti in vendor
update --with pkg:2.0.1Aggiorna tutti i pacchetti, dice la notaNon è l’aggiornamento del solo pacchetto nominato

Errori da evitare

  • Lanciare update sul server per «installare come in locale». Se il lock c’è già, il comando giusto per ricostruire vendor è install.

  • Aspettarsi che install porti le librerie all’ultima versione compatibile. Con il lock presente il manuale dice il contrario.

  • Credere che upgrade sia più prudente di update. È lo stesso comando.

  • Usare --with per toccare un solo pacchetto. La nota dice che si aggiorna tutto. La forma parziale è update vendor/package:vincolo.

  • Dare per modificato il composer.json dopo un vincolo temporaneo. Il manuale dice che non lo modifica, e che il vincolo deve restare dentro quello già dichiarato.

In sintesi

Il lock fermo si installa con install. Si ricalcola con update, che è anche upgrade. --no-install lascia il lock nuovo e vendor com’era. --with non è un aggiornamento chirurgico: la nota del manuale dice che partono tutti i pacchetti. Verifica del 15 ottobre 2026 sulla pagina CLI di getcomposer.org. Nessun numero di versione di Composer: quella pagina, in questa rilettura, non ne stampa uno da citare.

Copertina: NOIRLab/NSF/AURA/T. Slovinský, «NOIRLab HQ Server Racks», Wikimedia Commons, CC BY 4.0. È la sala macchine della sede NOIRLab a Tucson, non uno screenshot di Composer.

Domande frequenti

No, se c’è composer.lock. Il manuale CLI, voce install, rilettura 15 ottobre 2026: usa le versioni esatte del lock invece di risolverle di nuovo.
install risolve le dipendenze e crea il lock dopo la risoluzione. Non è il caso di un repository che il lock ce l’ha già.
No. La voce update dice che upgrade è un alias, il nome che ci si aspetta se si pensa ad apt-get. Fa la stessa cosa di update.
No. La nota sotto l’esempio dice che tutti i pacchetti vengono aggiornati. Per limitarsi a quelli indicati si usa update vendor/package:vincolo, senza --with.
Sì. --no-install non esegue il passo di installazione dopo aver aggiornato composer.lock.

Potrebbe interessarti anche...