rilevante


  rilevante > comp.lang.* > comp.lang.perl

 #1  
16.02.2012, 15:26
Spaccafumo
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  
19.02.2012, 15:26
Spaccafumo
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  
19.02.2012, 21:12
enoquick
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  
20.02.2012, 15:51
Spaccafumo
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  
21.02.2012, 08:10
Emanuele Zeppieri
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  
21.02.2012, 09:52
Spaccafumo
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  
21.02.2012, 13:44
Emanuele Zeppieri
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  
21.02.2012, 19:13
Spaccafumo
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  
22.02.2012, 09:09
Emanuele Zeppieri
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  
22.02.2012, 09:11
Emanuele Zeppieri
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  
04.03.2012, 07:43
Spaccafumo
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  
04.03.2012, 17:34
Emanuele Zeppieri
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  
04.03.2012, 20:08
Spaccafumo
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  
04.03.2012, 22:21
Emanuele Zeppieri
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  
05.03.2012, 12:25
Spaccafumo
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