2012-04-02 14 views
5

Pulizia directory dei sorgenti del progetto Snap (rimozione di dist) ha emesso la seguente denuncia:Haskell Snap: La distribuzione delle applicazioni e run-time dipendenze

A web handler threw an exception. Details: 
GHC error: can't find a package database at dist/package.conf.inplace 

Quindi, se posso pulire la directory di origine si smette di funzionare? Questo succede solo se compilo con flag di sviluppo?

Questo mi porta alla domanda di distribuzione dell'applicazione snap. Cosa eseguiamo effettivamente rsync sul server e quali sono le dipendenze del runtime? I, di coourse, non voglio installare l'intera piattaforma haskell sul server di distribuzione. Tutto ciò di cui ho bisogno sul server è l'eseguibile del progetto e i file statici come * .tpl, * .css, ecc. È corretto?

Sono in grado di vedere due modi per distribuire l'applicazione: rsync l'eseguibile e le sue dipendenze o creare un archivio tar di distribuzione binaria e spostarlo sul server. Qual è la pratica comune?

Quali file esattamente devo includere nel file binario o nello script rsync per soddisfare tutte le dipendenze di runtime?

Grazie

risposta

3

In primo luogo, sì, questo è solo il risultato dell'utilizzo di modalità di sviluppo. Usa tutti i tipi di artefatti dal tuo ambiente di compilazione. (Questo è l'unico modo in cui può garantire che duplichi correttamente l'ambiente di compilazione quando si esegue il ricaricamento dinamico.) Se li rimuovi, smetterà di funzionare.

Ma in modalità di produzione, le risorse binarie e statiche sono tutto ciò che serve. Bene, e qualunque libreria dinamica GHC colleghi l'eseguibile a. Questo è per lo più solo roba standard come libc. L'unico che a volte manca nelle installazioni standard di Linux è libgmp. Ovviamente, se stai usando qualsiasi codice FFI che si lega ad altre librerie dinamiche, devi essere sicuro che anche queste librerie sono coperte.

+0

Grazie. Ho pensato che avrebbe avuto qualcosa a che fare con la modalità di sviluppo. –

Problemi correlati