Come posso sapere quali moduli sono stati originariamente forniti con l'installazione Perl specifica su una macchina?

StackOverflow https://stackoverflow.com/questions/2085516

  •  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.

È stato utile?

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:

  1. Se si conosce il bersaglio a tempo di sviluppo (ad esempio una specifica versione di ActivePerl) è possibile prendere decisioni basate su questo.
  2. 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.
  3. 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top