Ho un problema con compositore. Sto lavorando con git in un ambiente locale. Sono l'unico sviluppatore.Perché il compositore rimuove le mie dipendenze dalla distribuzione?
Quando ho bisogno di qualche altro dipendenze (o bisogno di cambiare alcune versioni), posso modificare il composer.json e corro composer install
localmente.
Tutto bene.
Poi, quando tutto funziona a livello locale, consegno il mio modifiche (tra cui composer.json e composer.lock) e spingere al mio server di produzione.
A post-ricezione lo script aggiorna le origini ed esegue un composer install
sul server remoto.
cosa ci si aspetta:
- Compositore dovrebbe installare le nuove dipendenze in base al file dicomposer.lock.
- Dovrei essere felice.
Cosa succede:
- Composer è arrabbiato:
Attenzione: Il file di blocco non è al passo con le ultime modifiche in composer.json. Potresti avere delle dipendenze obsolete. Eseguire aggiornamento a aggiornarli.
- Compositore rimuove tutte le dipendenze.
- La mia produzione di è interrotta.
- Ho un attacco di cuore
- devo accedere al mio server tramite ssh ed eseguire una
composer update
per rendere le cose funzionano bene, ma so che uncomposer update
non è consigliato su un server di produzione.
ecco l'output della sezione post-ricezione del compositore :
composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
- Removing guzzle/guzzle (v3.9.3)
- Removing symfony/event-dispatcher (v2.7.1)
- Removing geoip/geoip (v1.15)
- Removing pimple/pimple (v3.0.0)
- Removing cocur/slugify (1.1.x-dev)
- Removing bentools/url (0.2)
- Removing bentools/simplexmlextended (1.2.0)
Generating autoload files
Che cosa sto facendo di sbagliato?
Grazie, Ben
OK, lo farò in questo modo allora. Perché il github del caso è giù, qual è il tuo consiglio? – user4994579
Né Git né Composer sono strumenti di distribuzione. Vengono utilizzati come tali, ma ciò non significa che sia la soluzione migliore. In generale, avresti messo insieme uno ZIP o un TGZ contenente tutto il codice necessario per l'aggiornamento di produzione (incluso il codice in Git così come tutto da Composer), spostalo nella macchina di produzione, scompattalo, (testalo in un nascondiglio luogo - opzionale), quindi passare ad esso all'istante.Ci sono strumenti per questo - Capistrano è uno di questi. Per evitare i tempi di inattività di Github e un accesso più rapido, utilizzare Satis per creare una copia locale delle dipendenze che si utilizzano. I dettagli giustificano una nuova domanda. – Sven