2016-07-08 35 views

risposta

12

cpan la shell CPAN è stata fornita con Perl dal 1997 circa. Quando la esegui la prima volta, fa una serie di domande e salva le risposte in un file di configurazione. Quindi è possibile installare un modulo eseguendo:

cpan -i Module::Name 

La shell fornisce altri comandi per cercare CPAN e cercare all'interno dei file di distribuzione.

Un progetto per creare un guscio di più nuovo migliore e più ricco di funzioni CPAN chiamato CPANPLUS (cpanp dalla riga di comando) è stato avviato da Jos Boumans, ma non era mai del tutto completata al punto in cui era stata realizzata la visione originale.

Nel frattempo MIYAGAWA deciso che cpanp stava cercando di fare troppo e ciò che il mondo realmente necessario era un guscio più semplice che ha fatto meno e ha chiesto un minor numero di domande (idealmente nessuno). Ha creato App::cpanminus che fornisce il comando cpanm e fa esattamente ciò che intendeva. Si può usare per l'installazione di un modulo (e tutte le dipendenze del modulo), con un comando come:

cpanm Module::Name 

La differenza principale tra i due è che se si dispone di Perl si dovrebbe già avere il comando cpan. Considerando che non avrai cpanm a meno che/non lo installi.

+0

Quindi quale utilizzare per installare i moduli? 'Cpanm' è migliore perché è più recente? – CJ7

+2

L'uso che preferisci - o va bene. Vorrei usare 'cpan -i App :: cpanminus' per installare cpanm e quindi usare' cpanm'.Penso sia meglio perché è più semplice (certamente non solo perché è più recente). –

+1

@ CJ7, in realtà non installa nulla. Eseguono l'installer incluso nella distribuzione da installare. In quanto tali, le differenze saranno per lo più cosmetiche. Non vedo l'intenzione di non installare "cpanm" solo per evitare di premere Invio una volta che viene eseguito il primo 'cpan' – ikegami

7

Gli utenti Perl più moderni preferiscono cpanm per la sua semplicità e soprattutto, brevità di output.

L'utilizzo di cpan può causare centinaia di righe di output in quanto mostra tutto ciò che sta facendo: download, checksum, esecuzione del programma di installazione, analisi, caricamento, l'elenco continua. Lo stesso vale per ogni dipendenza.

cpanm d'altra parte ti dice cosa sta facendo in un modo più generale e generale, ovvero: Recupero, Configurazione, Costruzione e test, Fatto.

Quindi la principale differenza nell'utilizzo è che cpanm elimina molte (in genere) informazioni irrilevanti. A volte, quando un modulo fallisce, potresti volere più informazioni. C'è un flag -v|--verbose che mostra essenzialmente tutto ciò che sarebbe cpan.

Inoltre, alcuni moduli che richiedono l'input dell'utente possono sembrare "bloccati" quando si tenta di installarli. Questo perché l'output che ti chiede di digitare qualcosa è soppresso. È possibile utilizzare i flag --interactive (o --verbose) per ovviare a questo problema.

Per un confronto dell'output, vedere diapositive 35-39 here o diapositive 37-41 here. (Si tratta della stessa presentazione. Sto solo duplicando i collegamenti nel caso in cui uno passi fuori linea.)

+4

* "La maggior parte degli utenti moderni di Perl preferisce cpanm per la sua semplicità e soprattutto, brevità di output." * Ciò richiede un citazione ed è una parte non necessaria della risposta. Sei chiaramente un fan 'cpanm' senza dirlo, e non ci si può fidare di dare un account fattuale. * "un modo più conciso e generale" * sicuramente non può essere entrambi? – Borodin

+0

"Generale" come definito da "_considerando o includendo solo le caratteristiche o gli elementi principali di qualcosa_". Dichiarando solo gli elementi principali dell'installazione del modulo, l'output di 'cpanm' è molto più corto di quello di' cpan'. – Joshua