Come posso sapere quali moduli sono stati originariamente forniti con l'installazione Perl specifica su una macchina?
-
21-09-2019 - |
Domanda
Come posso sapere quali moduli sono stati originariamente forniti con l'installazione Perl specifica su una macchina?
(Questo è non un duplicato di:Come posso sapere se un modulo Perl è core o parte dell'installazione standard?("Come posso capire se un modulo Perl è core o parte dell'installazione standard?") - In realtà è una domanda di spin -off da esso)
Sto cercando cosa è arrivato con l'installazione originariamente, quali moduli sono stati forniti come parte di tale installazione, cosa è stato integrato.NON quello che è stato installato da allora.
Mi piacerebbe lavorare con questo Qualunque Versione Perl.
Voglio essere in grado di fare questo:
- utilizzando uno script all'interno di un programma/comando Perl stesso sulla macchina che ha l'installazione.Quindi per questo farei affidamento sull'installazione per avere una registrazione in qualche forma di ciò che ha originariamente.
- sul pacchetto scaricato prima di eseguire l'installazione.Chiedigli quali moduli ha.
I motivi per cui voglio farlo sono:
- Voglio sapere quali moduli posso aspettarmi come predefiniti quando scrivo software da eseguire su una macchina con l'installazione Perl e quali moduli dovrei aggiungere che non sono predefiniti
- se conservo l'immagine/pacchetto di installazione originale OPPURE so come ottenere di nuovo online la stessa cosa, avrò un'installazione Perl coerente e ripetibile per diverse macchine con la conoscenza di quali moduli saranno presenti e quali no.
- il mio software Perl avrà una procedura di distribuzione ben definita poiché è facile definire esattamente ciò che è richiesto dal software
- Potrei non essere in grado di aggiornare facilmente la versione di Perl a causa delle politiche in atto nella mia organizzazione (è proprio così, non voglio una discussione secondaria su questo).Tale politica può essere giustificata in quanto esiste sempre il rischio di passare a un nuovo software che può superare i benefici.Gli sviluppatori devono quindi sapere cosa possono aspettarsi che sia disponibile.
Il motivo per cui pongo questa domanda è perché, per qualsiasi versione di Perl, sembra non esserci un modo automatizzato per scoprire l'installazione standard generale che definisce quali moduli puoi aspettarti di essere presenti nell'installazione predefinita sul tuo computer - vedi domanda:Come posso sapere se un modulo Perl è core o parte dell'installazione standard?("Come posso sapere se un modulo Perl è core o fa parte dell'installazione standard?")
Non si può fare affidamento sulle versioni Perl per sapere quali moduli sono presenti o meno.Certo, potrebbe esserci documentazione online che te lo dice.Ma ho bisogno di un automatizzato modo di farlo nella versione che scarico/installa.Anche la stessa versione di Perl su diverse distribuzioni Linux/Unix può essere diversa.
Soluzione
In generale, non si può. Avrai un sacco meno frustrazione se si accetta che e affrontare il problema da una diversa angolazione. Modulo :: CoreList fornisce un elenco di ciò che dovrebbe essere incluse in tutte le installazioni come minimo ma venditori non sono tenuti ad aderire a questo e la maggior parte delle distribuzioni includono molti moduli che non fanno parte del nucleo. Escludendo costruire il proprio database di quello che era inclusa nella quale versione di ogni distribuzione - un compito arduo - non c'è molta speranza. Si noti che anche per i moduli che sono venuto con una distribuzione la versione installata potrebbe essere differente.
riesco a vedere un paio di modi diversi per avvicinarsi a questo:
- Se si conosce il bersaglio a tempo di sviluppo (ad esempio una specifica versione di ActivePerl) è possibile prendere decisioni basate su questo.
- Per il caso generale distribuire l'applicazione come un modulo e specificare
dipendenze. per esempio. utilizzare Modulo :: costruire e lista prerequisiti nella
sezione
requires
dello script Build.pl. cpan coperture possono seguire e risolvere dipendenze automaticamente. - Se si vuole eludere la questione del tutto utilizzare PAR e Par :: Packer per creare self-contained fasci di distribuzione.
Altri suggerimenti
Per Debian o Ubuntu, è possibile utilizzare
$ dpkg --listfiles perl | grep '\.pm$'
Per Redhat:
$ rpm -ql perl | grep '\.pm$'
sto cercando quello che è venuto con il installazione in origine, quali moduli sono stati forniti come parte di tale installazione, ciò che è stato costruito.NON È VERO. ciò che è stato installato da allora.
Forse per i moduli non core potresti analizzare perllocal.pod, separando il batch iniziale di moduli installati insieme all'installazione Perl stessa da quelli successivi in base alla data.Stai cercando righe come:
=head2 Wed Apr 30 15:40:38 2008: C<Module> L<URI|URI>
Quindi i primi sarebbero presumibilmente quelli che sono stati installati con Perl stesso e dovrebbero avere la stessa data (anche se ovviamente non alla stessa ora).Quelli installati con una differenza di 24 ore o più sarebbero quello che stai cercando.
Non sono sicuro dei moduli principali, poiché secondo me le risposte che hai ottenuto nella domanda precedente a cui ti sei collegato sono soddisfacenti, ma chiaramente non la pensavi così.Probabilmente mi sono perso qualcosa :)
Saluti Offerta