2011-10-15 26 views
19

Ieri ho voluto mettere alla prova alcuni software e nella documentazione, si legge, di installare ho solo bisogno di digitare CPANDisinstallare tutti i moduli Perl installati da CPAN

cpan -i Software 

non ho mai usato, so solo che è il gestore pacchetti perl. (E '..?) Tuttavia, ho scoperto che avevo bisogno di un sacco di dipendenze e, per quanto stupido, ho appena installato tutti loro. (In primo luogo, ho dovuto installare Cpan che mi ha fatto molte domande) Per farla breve, voglio solo rimuoverlo tutto di nuovo. Ho cercato un po 'su google, e sembra che cpan non abbia una routine di disinstallazione, specialmente per tutti i pacchetti in una volta. Posso semplicemente rimuovere qualche directory o ho problemi?

risposta

27

il comando cpan non è realmente un gestore di pacchetti come apt-get. È più uno strumento che scarica e installa da CPAN (il sito, o uno dei suoi mirror). Dopo aver completato questa attività, non ricorda molto di ciò che è stato fatto prima, almeno non abbastanza per rimuovere i moduli installati in precedenza, almeno non in modo affidabile, pulito o dipendente, in modo sicuro. (Aggiornamento: Dopo aver esaminato App::pmuninstall, può essere utilizzato per gestire le dipendenze, ma lo fa collegandosi a fonti esterne (leggi: web), che le calcolano separatamente, il che va bene, ma sostengo la precedente affermazione che CPAN.pm non lo fa.)

Mi sono preoccupato di rimuovere i moduli, ma ora mi rendo conto che la maggior parte dei moduli Perl occupa così poco spazio che non mi preoccupo di avere alcuni moduli aggiuntivi installati che non userai mai. Quindi, a meno che tu non sia su un computer con un disco veramente piccolo, lo lascerei stare.

Su Windows o se si utilizza un Perl non di sistema su Linux/Mac, è sufficiente rimuovere Perl e reinstallarlo. Non lo consiglierei se stai usando il sistema installato Perl su Linux/Mac, dato che potresti interrompere il tuo sistema operativo in questo modo (potresti essere ok se stai attento, ma non ne vale la pena per risparmiare qualche Mb!).

In futuro, è possibile installare facilmente una versione locale di Perl utilizzando perlbrew, ci sono tutorial su tutto il Web se i documenti non sono sufficienti (dovrebbero essere). Questo ha anche il vantaggio di permetterti di giocare con le versioni Perl più nuove e più grandi, che probabilmente il tuo sistema non ha ancora. Quindi se installi una montagna di spazzatura o addirittura la rompi facendo qualcosa di pazzo, rimuovi quella versione e reinstalla/installa una versione diversa.

Un altro strumento piacevole è cpanminus (o cpanm in breve) che è uno strumento cpan più nuovo e più user-friendly. Tutti i bambini fantastici lo stanno usando.

+1

Grazie per la bella spiegazione. Ho scavato un po 'più a fondo nelle directory lib e ho deciso di conservare tutti quei file come suggerito. – janoliver

+0

'pm-uninstall' può rimuovere i moduli. – xenoterracide

+0

@xenoterracide dipende dal fatto di aver usato cpanm per l'installazione? una rapida occhiata al dottore sembrava suggerirlo. In entrambi i casi, non vedo la necessità di disinstallare quasi nessuno dei moduli su CPAN, almeno dal punto di vista dell'archiviazione dei dati. Comunque è bello sapere che esiste qualcosa –

0

Penso che l'opzione migliore sia disinstallare Perl e installarlo di nuovo.

+7

L'unico problema con questo suggerimento è che NON dovresti farlo, stai utilizzando l'installazione a livello di sistema su Linux/Mac. Se sei su Windows, questo è probabilmente preferito. –

2

Non sono sicuro di rimuovere "tutto". Ma per rimuovere un singolo modulo è possibile utilizzare App::pmuninstall con il suo unico script pm-uninstall per disinstallare i moduli. Potresti quindi essere in grado di scrivere una sorta di script per rimuovere ricorsivamente i deps.

13

È possibile disinstallare singoli moduli con CPANPLUS (navi con Perl) come questo:

cpanp uninstall SQL::Abstract 

È possibile visualizzare tutti i moduli installati con lo script CPAN come questo:

perldoc perllocal 

Mettendo insieme i due :

+1

Suppongo che la riga 2 dello script debba essere 'cpanm --uninstall" $ module "' –

1

Se non è possibile utilizzare cpan più perché ci sono moduli incompatibili in voi percorso, è possibile rimuovere tutti i moduli installati a mano. Ad esempio, ho aggiornato da Fedora 22 a Fedora 23 e la versione Perl è cambiata. Tutti i moduli installati precedentemente tramite cpanm su /usr/local/lib64/perl5 non funzionavano più e mi impedivano di usare cpanm.

$ cpanm --uninstall Apache::DBI 
Attempt to reload Scalar/Util.pm aborted. 
Compilation failed in require at /usr/share/perl5/vendor_perl/File/Temp.pm line 18. 
... 

ho potuto risolvere questo spostando quella directory:

$ mv /usr/local/lib64/perl5 /root/usr-local-lib64-perl5 

Il nome della directory che può variare nel sistema.

Attenzione: Se un modulo ha installato file all'esterno di tale directory, ad esempio file di libreria di sistema, questi file rimarranno lì.

Problemi correlati