|
|
||||||
|
#1
|
|
|
|
|
Stamattina ho scoperto quel che accade a digitare "perl -MCPAN -e shell"
sulla console. Mi hanno creato una directory /root/.cpam dove hanno messo nuovi moduli, che credo di aver istallato, con tutte le loro dipendenze.. E quelli che da tempo già stanno in /usr/lib/perl5/ecc. che fine hanno fatto? Sicuro che siano tutti in path? In /etc/profile non ho visto nessuna variabile d' ambiente che definisca delle path per i moduli perl. Non posso ancora vedere se i nuovi funzionano perché ancora non ho trovato dove vengono elencati e descritti i comandi giusti per loro. |
|
|
|
#2
|
|
|
|
|
Il 16/02/2012 17:26, Spaccafumo ha scritto:
> Stamattina ho scoperto quel che accade a digitare "perl -MCPAN -e shell" > sulla console. Mi hanno creato una directory /root/.cpam > dove hanno messo nuovi moduli, che credo di aver istallato, con tutte le > loro dipendenze.. E quelli che da tempo già stanno in > /usr/lib/perl5/ecc. che fine hanno fatto? Sicuro che siano tutti in > path? In /etc/profile non ho visto nessuna variabile d' ambiente che > definisca delle path per i moduli perl. Non posso ancora vedere se i > nuovi funzionano perché ancora non ho trovato dove vengono elencati e > descritti i comandi giusti per loro. >Una specie di (c)pan di casa. Oggi, dopo tentativi di intervenire sul misterioso array @INC cercando di aggiungerci una directory personale con "unshift @INC '/dir/personale`;" (si aggiunge solo temporaneamente) ho avuto successo aggiungendo in path la mia directory 'personale' in /etc/profile e poi copiandoci vecchi listati autonomi trasformati in subroutine e rinominati file.pm (all'inizio dell'ultima riga deve figurare: "1;"). Funzionano in file normali (file.pl) dichiarando "use personale::file" senza l' estensione ".pm" all'inizio, chiamandone le funzioni (qui note perché fatte da me stesso) con "$var=funzione();" e infine usando la "$var". Nello stesso file.pl si posson usare anche più moduli. |
|
#3
|
|
|
|
|
Il 19/02/2012 17:26, Spaccafumo ha scritto:
> Il 16/02/2012 17:26, Spaccafumo ha scritto: > Una specie di (c)pan di casa. > Oggi, dopo tentativi di intervenire sul misterioso array @INC cercando > di aggiungerci una directory personale con "unshift @INC > '/dir/personale`;" (si aggiunge solo temporaneamente) ho avuto successo > aggiungendo in path la mia directory 'personale' in /etc/profile e poi > copiandoci vecchi listati autonomi trasformati in subroutine e > rinominati file.pm (all'inizio dell'ultima riga deve figurare: "1;"). > Funzionano in file normali (file.pl) dichiarando "use personale::file" > senza l' estensione ".pm" all'inizio, chiamandone le funzioni (qui note > perché fatte da me stesso) con "$var=funzione();" e infine usando la > "$var". Nello stesso file.pl si posson usare anche più moduli. > La ricerca dei moduli avviene o con use lib <dir> all' interno di un programma o di un modulo oppure usando la variabile d' ambiente PERL5LIB |
|
#4
|
|
|
|
|
Il 19/02/2012 23:12, enoquick ha scritto:
__OMISSIS__ >> > La ricerca dei moduli avviene o con use lib <dir> all' interno di un > programma o di un modulo > oppure usando la variabile d' ambiente PERL5LIB > In pratica: che bisogna scrivere per avere l'elenco di tutti i moduli esistenti e disponibili sul pc? Saluti. |
|
#5
|
|
|
|
|
On Feb 20, 5:51 pm, Spaccafumo <spaccafumo> wrote:
> In pratica: che bisogna scrivere per avere l'elenco di tutti i moduli > esistenti e disponibili sul pc? Saluti. perldoc perlmodlib per vedere tutti i moduli in boundle con la tua distribuzione Perl. Invece: perldoc perllocal per vedere tutti i moduli che ti sei installato in locale (con tanto di data di installazione, versione ecc.) Per il resto ti stai complicando la vita senza alcuna ragione: quello che stai tentando di fare a manella, te lo fa già local::lib in maniera automatica, pulita e corretta. Basta *prima* installare local::lib, seguendo la procedura di bootstrap: https://metacpan.org/module/local::l...ping-technique poi riloggarsi e usare semplicemente cpan col proprio utente, e tutti i moduli installati andranno a finire nella propria $HOME senza toccare i moduli /di sistema/, e @INC verrà aggiornato automaticamente per l'utente in questione. Infine @INC lo pui ispezionare con: perl -V (e il suo valore dipenderà dall'utente). Ciao. |
|
#6
|
|
|
|
|
Il 21/02/2012 10:10, Emanuele Zeppieri ha scritto:
[..] > toccare i moduli /di sistema/, e @INC verrà aggiornato automaticamente > per l'utente in questione. > > Infine @INC lo pui ispezionare con: > > perl -V > > (e il suo valore dipenderà dall'utente). > > Ciao. Bene. Ho istallato manualmente (per semplificare, spesso i piatti precucinati sono più difficili da digerire delle pietanze al naturale)il modulo con tanto di opzione --bootstrap aggiunta. Più tardi voglio proprio vedere che accadrà quando si istalleranno moduli da cpan (se andranno da sé nella directori /root/perl5 che s'è creata adesso con diverse sottodir), che accadrà alla misteriosa @INC, e se i miei moduli caserecci, messi nei nuovi spazi, funzioneranno da qualunque punto del file-system. Grazie mille, saluti. C'è ancora tanta neve sporca per strada e questo non invita a uscire, ma pur si deve... |
|
#7
|
|
|
|
|
On Feb 21, 11:52 am, Spaccafumo <spaccafumo> wrote:
> Bene. Ho istallato manualmente (per semplificare, spesso i piatti > precucinati sono più difficili da digerire delle pietanze al naturale)il > modulo con tanto di opzione --bootstrap aggiunta. Perfetto :-) > Più tardi voglio proprio vedere che accadrà quando si istalleranno > moduli da cpan (se andranno da sé nella directori /root/perl5 che > s'è creata adesso con diverse sottodir), Sì, andranno tutti automagicamente a finire lì sotto (purché ovviamente esegui cpan da root). E lo stesso avverrebbe anche con cpanp o cpanm, che puoi installare rispettivamente con: cpan CPANPLUS cpan App::cpanminus > che accadrà alla misteriosa > @INC, e se i miei moduli caserecci, messi nei nuovi spazi, funzioneranno > da qualunque punto del file-system. Anche qui, tutto funzionerà da qualsiasi parte, solo che, ovviamente, anche i programmi li devi eseguire con lo stesso utente con cui hai installato local::lib, che sembra essere root, e questo non è bello. Sarebbe stato meglio usare il tuo utente non privilegiato (e sei ancora in tempo per farlo). Ad ogni modo, anche in queste condizioni, per far eseguire i tuoi programmi da qualsiasi utente, basta mettere in testa al tuo codice: use lib '/root/perl5/lib'; o, senza toccare il codice, lanciare i programmi con: perl -I/root/perl5/lib prog.pl senza alcuna necessità di toccare @INC (od anche di conoscerne l'esistenza). > Grazie mille, saluti. C'è ancora > tanta neve sporca per strada e questo non invita a uscire, ma pur si deve.... Coraggio, il peggio è passato ;-) |
|
#8
|
|
|
|
|
Il 21/02/2012 15:44, Emanuele Zeppieri ha scritto:
[..] > cpan CPANPLUS > cpan App::cpanminus >> Anche qui, tutto funzionerà da qualsiasi parte, solo che, ovviamente, > anche i programmi li devi eseguire con lo stesso utente con cui hai > installato local::lib, che sembra essere root, e questo non è bello. > Sarebbe stato meglio usare il tuo utente non privilegiato (e sei > ancora in tempo per farlo). > Con Puppy Linux non esistono padroni e sotto. C'é uno solo e naturalmente, non foss'altro per questo, è sempre "root". Solo una volta un piccolo server ftp che avevo montato pretese che mi fornissi di password per proteggermi da me stesso... Se poi dovesse fare crash non solo lo potrei istallare da capo in quattro e quattr'otto, ma con la "iso" del disco originale montata sull' hd, entro certi limiti, potrei rimettere in pristino stato intere directory cancellandole e ricopiandole a nuovo. E poi ne ho parecchie edizioni su penna usb. Adesso vado a vedere che sta facendo quel chiappinpiso di @INC attraverso perl -V. > Ad ogni modo, anche in queste condizioni, per far eseguire i tuoi > programmi da qualsiasi utente, basta mettere in testa al tuo codice: > > use lib '/root/perl5/lib'; > > o, senza toccare il codice, lanciare i programmi con: > > perl -I/root/perl5/lib prog.pl > > senza alcuna necessità di toccare @INC (od anche di conoscerne > l'esistenza). >> Coraggio, il peggio è passato ;-) Saluti e grazie. |
|
#9
|
|
|
|
|
On Feb 16, 5:26 pm, Spaccafumo <spaccafumo> wrote:
> Stamattina ho scoperto quel che accade a digitare "perl -MCPAN -e shell" > sulla console. Mi hanno creato una directory /root/.cpam > dove hanno messo nuovi moduli Credo sia chiaro, ma per chi dovesse avere dubbi in proposito, in questa directory non vengono installati i moduli, vengono solo scompattati (temporaneamente) per la compilazione ed i test (cpan si occupa in automatico di svuotarne il contenuto periodicamente, per non farla diventare troppo grande - la dimensione massima è pure configurabile). Altra precisazione per chi dovesse leggerci in futuro: non c'è bisogno di invocare "perl -MCPAN -e shell", ma semplicemente: cpan Ciao |
|
#10
|
|
|
|
|
On Feb 21, 3:44 pm, Emanuele Zeppieri <ema> wrote:
> Ad ogni modo, anche in queste condizioni, per far eseguire i tuoi > programmi da qualsiasi utente, basta mettere in testa al tuo codice: > > use lib '/root/perl5/lib'; > > o, senza toccare il codice, lanciare i programmi con: > > perl -I/root/perl5/lib prog.pl Chiedo scusa per l'imprecisione, il path da utilizzare nei due esempi precedenti è: /root/perl5/lib/perl5 |
|
#11
|
|
|
|
|
Il 22/02/2012 11:11, Emanuele Zeppieri ha scritto:
> On Feb 21, 3:44 pm, Emanuele Zeppieri<ema> wrote: >> Chiedo scusa per l'imprecisione, il path da utilizzare nei due esempi > precedenti è: > > /root/perl5/lib/perl5 > Grazie di tutte le indicazioni. Per il momento però credo,riguardo all' istallazione dei moduli, di aver raggiunto un buon compromesso con perl adottando la seguente prassi: 1°-digitare "perl -V" nella shell. -appare finalmente chiaro il contenuto di @INC e quindi l'elenco di tutte le directory ove validamente copiare i moduli. Prendiamo nota della directory più accessibile e chiamiamola qui: DIRnA. 2°-andare col browser sul sito di CPAN e fare il download dei moduli che ci interessano -sono in formato .tar.gz- e scompattarli in una DIRnB. 3°-dalla shell: cd DIRnB - perl Makefile.PL - make (non seguito da "make install"!) Nella DIRnB adesso s'è creato un file FILEa.pm 4°-In DIRnA creare una directory DIRnC con un nome qualunque (breve). 5°-Dentro DIRnC copiare il file FILEa.pm 6°-Nello script di perl che userà il nuovo modulo questo deve apparire come "use DIRnC::FILEa" (senza estensione ".pm"). 7°-All' interno di DIRnC si possono mettere diversi FILEx.pm creando moduli diversi con uguale struttura "DIRnC::FILEx" Il sistema cpan é nato evidentemente con lo scopo di facilitare la vita all' "utente" perl, ma come a volte accade ai sistemi facilitatori, richiede più studio di quello che vuole evitare. |
|
#12
|
|
|
|
|
On Sunday, March 4, 2012 9:43:29 AM UTC+1, Spaccafumo wrote:
[..] > > 4°-In DIRnA creare una directory DIRnC con un nome qualunque (breve). > 5°-Dentro DIRnC copiare il file FILEa.pm > 6°-Nello script di perl che userà il nuovo modulo questo deve apparire > come "use DIRnC::FILEa" (senza estensione ".pm"). > 7°-All' interno di DIRnC si possono mettere diversi FILEx.pm creando > moduli diversi con uguale struttura "DIRnC::FILEx" > Il sistema cpan é nato evidentemente con lo scopo di facilitare la > vita all' "utente" perl, ma come a volte accade ai sistemi facilitatori, > richiede più studio di quello che vuole evitare. Scusa, ma è tafazzismo (autolesionismo) allo stato puro (sei mica del PD?) Confronta i tuoi *7* passi con questo semplice *unico* passo: cpan Modulo::Da::Installare che tra l'altro gestisce le dipendenze in maniera automatica, mentre tu dovresti fare pure quello a manella, potenzialmente moltiplicando per 100 i passi (e gli errori) per l'installazione di un singolo modulo /finale/. Un'alternativa a cpan più flessibile è semmai (il già citato) App::cpanminus (che installa lo script cpanm), che ti permette con la stessa semplicità di fare diverse cose in più, come ad esempio evitare i test: cpanm --notest Modulo::Da::Installare tra l'altro funziona anche con un modulo scaricato in locale: cpanm Modulo-Da-Installare-1.00.tar.gz permettendoti di risparmiare almeno sei dei tuoi sette passi, se proprio volessi lavorare in quella maniera (e gestirebbe le dipendenze). https://metacpan.org/module/cpanm |
|
#13
|
|
|
|
|
Il 04/03/2012 19:34, Emanuele Zeppieri ha scritto:
> On Sunday, March 4, 2012 9:43:29 AM UTC+1, Spaccafumo wrote: > >> Per il momento ..omissis... Tutte le volte che ho provato cpan mi sono sempre imbattuto in quel passaggio in cui viene chiesto se sul pc si ha il brower "lynx". Invece di affannarsi a cercare lynx per tutto il web uno non fa altro che scaricarsi a mano il modulo e montarselo a piacere. I sette passaggi sette sono un modo di sminuzzare l'argomento, ma in realtà trovo questo sistema no-cpan di estrema naturalezza e quindi rapidità. Certo le dipendenze servono, se si vogliono scrivere cose complesse sarebbe molto più utile se invece di avere tutti i moduli bell'e pronti si avesse una informazione più chiara delle funzioni loro e delle dipendenze che richiedono. Comunque non nutro affatto odio "ideologico", almeno verso cpan. A parte "lynx" e qualche altra cosa che sempre gli manca è un bell'esempio di apparente magia. Saluti. |
|
#14
|
|
|
|
|
On Sunday, March 4, 2012 10:08:11 PM UTC+1, Spaccafumo wrote:
> Tutte le volte che ho provato cpan mi sono sempre imbattuto in quel > passaggio in cui viene chiesto se sul pc si ha il brower "lynx". Ed era solo questo il problema?! :-) Ignoralo, lascia la stringa vuota! lynx è solo uno dei mezzi che cpan può utilizzare per scaricare i moduli, se non ce l'hai funziona tutto ugualmente in mille altri modi (ftp o http per mezzo di altri moduli). Inoltre se usi cpanm (già citato in almeno altri due messaggi) non ti chiede alcuna configurazione e fa tutto da solo. > Certo le dipendenze servono, se si vogliono scrivere cose > complesse sarebbe molto più utile se invece di avere tutti i moduli > bell'e pronti si avesse una informazione più chiara delle funzioni > loro e delle dipendenze che richiedono. cpanm --scandeps Modulo:Da::Installare e ti vengono mostrate tutte le dipendenze. > Comunque non nutro affatto > odio "ideologico", almeno verso cpan. Non ne dubito. Dico soltanto che stai scegliendo una strada incomprensibilmente complicata (e sbagliata), mentre potresti fare le cose in maniera incommensurabilmente più semplice (e corretta). Credimi, ti stai veramente perdendo in un bicchiere d'acqua. Né lo dico perché voglia convincere te a tutti i costi, ma perché possa tornare utile a chi dovesse leggerci in futuro, trattandosi di un ng. > A parte "lynx" e qualche altra > cosa che sempre gli manca è un bell'esempio di apparente magia. Allora usa cpanm: ha tutta la magia che vuoi ed anche di più: zero configurazione e funziona tutto fin dal primo colpo. Ripeto: https://metacpan.org/module/cpanm Ciao |
|
#15
|
|
|
|
|
Il 05/03/2012 00:21, Emanuele Zeppieri ha scritto:
> cpanm --scandeps Modulo:Da::Installare Essenziale informazione. Però, per non rischiare di infarcire troppo il mio attuale puppylinux (4.31) andrò senz'altro a vedere come funziona "in corpore vili", cioè su un altro computer che ho apposta in cantina (via onde convogliate: D-Link dhp-200) per esperimenti più duri. Si tratta di ripercorrere tutto il percorso di istallazione di cpan, lynx compreso (sono curioso di vedere a che serve la sua finora inutilmente invocata presenza). Saluti. |
|
|
| Discussioni simili | |
| La scoperta Roma | 11 febbraio 2009 La Corte dei conti: la corruzione c'è ancora, servono più controlli Allarme corruzione nella pubblica amministrazione da parte della Corte dei Conti.... |
|
| scoperta Da padre orgoglioso comunico la scoperta di mia figlia, Impellizzeri Caterina. [..] [..] [..] [..] |
|
| una scoperta Ho scoperto due siti che credo valga assolutamente la pena di conoscere! Provateli sono veramente eccezzionali e ci trovate tutti i film appena usciti ( ed a volte anche... |
|
| Che scoperta...! (O no?) Il percorso (l'accidentatissima pista Tagliafuoco del monte Musinè) e il pilota (io) sono sempre gli stessi. Il telaio e la forcella sono cambiati, tuttavia sono sempre... |
|
|
Tutti gli orari sono GMT. Attualmente sono le 09:57. | Privacy Policy
|