Approfondimento GNU Autotools Sistemi Operativi (9 CFU), Cdl Informatica, A
Total Page:16
File Type:pdf, Size:1020Kb
Approfondimento GNU Autotools Sistemi Operativi (9 CFU), CdL Informatica, A A !"#$%!"#& Dipartimento di Scienze Fisic)e, Informatic)e e *atematiche Università di *odena e Re--io .milia )ttp/%%0e1lab ing unimo it/people%andreolini/didattica/sistemi2operativi 1 Quote of t)e da4 (*editate, -ente, meditate ) “The difference between a good and a poor architect is that the poor architect succumbs to every temptation and the good one resists it.” Ludwig Wittgenstein (1889-1951) Filosofo, ingegnere, logico Pioniere della logica filosofica 2 GNU AUTOTOOLS 3 Scenario e domande (Esistono strumenti di ausilio alla scelta di una distribu(ione GNU%Linu56) Scenario: l7utente ha a disposizione un )ost%-uest su cui 8 stata appena installata una distribu(ione GNU/Linu5 L7utente vuole imparare a gestire (installare, rendere porta1ile) il soft0are 9a mano: Domande: .sistono strumenti per installare soft0are partendo da archivi sor-ente6 ;ali strumenti gestiscono le differenze presenti nei diversi SO UNI=6 4 Un caso di vita vissuta (Un programmatore scopre X11 e vuole condividere la sua scien(a con altri) Un pro-rammatore scrive un programma in lingua--io C che apre una >nestra di =## A puro titolo di esempio, fate conto che ?uesto programma sia window.c, presente nella se(ione 9Approfondimenti: della presente lezione Lo compila con successo gcc -o window window.c -L/usr/X11R6/lib -lX11 Lo esegue ./window 5 Funziona Un caso di vita vissuta (Un pro-rammatore scopre =## e vuo e condividere la sua scienza con altri) Il programmatore, pieno di orgoglio, fornisce il sorgente al suo amico e gli chiede di compilarlo e testarlo Scaricate window.c sul vostro guest 'e1ian. @rovate a compilarlo gcc -o window window.c -L/usr/X11R6/lib -lX11 La compilazione fallisce 6 ;rue stor4 (Neil @atrick a-rees) 7 Cosa 8 andato storto6 (Nell7esempio in ?uestione) Sul guest 'ebian mancano i >le include della li1reria =## /usr/include/X11/X.h in primis ;ali >le non sono installati di default in Debian. 'e1ian 8 un SO universale, non un SO orientato solo ai programmatori B possibile installare i >le include tramite un pacchetto binario opportuno 8 .terogeneità de-li ambienti UNIX (La causa più -enerale del fallimento) La causa principale del fallimento 8 una ed una sola Gli )ost dei due pro-rammatori non sono uguali. Sono simili, ma non u-uali Che cosa cam1ia6 @acc)etti soft0are installati Dersioni dei pacc)etti soft0are installati @osi(ione nel >le s4stem dei soft0are ric)iesti 9 @ortabilit+ (Lo strumento con cui contrastare l7eterogeneit+ de-li ambienti UNIX) @er contrastare l7eterogeneità il soft0are i sistemi di tipo UNI= (nello specifico, GNU/Linu5) incora--iano la produ(ione di soft0are portabile "ortabilità: un soft0are 8 detto portabile se 8 compila1ile e/o eseguibile con sfor(o ridotto (al limite, nullo) su un host diverso da ?uello su cui 8 stato scritto ;anto minore 8 lo sfor(o, tanto piC 8 portabile il soft0are 10 Come si ottiene la portabilit+6 (Scrittura di codice portabile, costru(ione portabile di un ese-uibile) Si scrive codice portabile che non fa assunzioni di alcun tipo sulla piattaforma In altre parole: rende tutto parametrico Esempio: se un >le di con>-urazione cam1ia nome tra uno UNI= ed un altro, si de>nisce una costante con il nome corretto #define LOGNAME /var/log/auth.log Nel programma non si usa direttamente la strin-a 9/var/log/auth.log:, 1ensE la macro LOGNAME 11 Come si ottiene la portabilit+6 (Scrittura di codice portabile, costru!ione portabile di un eseguibile) Nel caso di lingua--i compilati ?uali il C, si usano strumenti per la compilazione di soft0are in modo portabile ;ali strumenti/ anali((ano il SO e l'albero sor-enteF identi>cano dipenden(e soft0are necessarie (li1rerie e programmi ese-ui1ili)F veri>cano la presen(a delle dipenden(eF costruiscono un Makefile adatto all'arc)itettura )ard0are e soft0are 12 Un esempio di soft0are portabile (Il soft0are di esempio GNU Gello) $NU &ello 8 un soft0are del pro-etto GNU che svolge una sola, semplice azione/ salutare l7utente Come soft0are non serve ad un granc)H B, tuttavia, un esempio di soft0are portabile Essendo contenuto, 8 piC semplice da studiare 13 Scelta della versione di GNU Gello (L7ultima disponibile su http:%%000 -nu or-%soft0are%hello) Aprite un bro0ser e navigate all7URL seguente/ )ttp/%%000 -nu.or-/soft0are%)ello Identificate la sezione 9'o0nloading Hello: Cliccate sul primo link HT*L. Identificate l7ultima versione/ hello-2.10.tar.gz 14 Scaricamento di GNU Gello (;ramite il comando wget) Una volta sopra il link G;*L, premete il pulsante destro del mouse e selezionate la voce 9Copia indiri((o link: Aprite un terminale ed usate il comando wget per scaricare l7arc)ivio: wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz @er incollare l7URL copiato in precedenza, potete/ premere la sequen(a Ctrl-Shift-vF premere il tasto centrale del mouse 15 Installa(ione del pacchetto wget (;ramite pacc)etto soft0are) Se non avete wget, installatelo (per il momento, tramite il gestore dei pacc)etti di Debian): apt-get install wget 16 @erc)H wget6 (. non, ad esempio, il bro0ser6) @erc)H wget supporta il ripristino dei do0nload interrotti. Basta attivare l7opzione -c wget -c http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz Non tutti i bro0ser moderni supportano tale funzione out2of2the2bo5 3uando si rende necessario proteggersi dalle interru(ioni? Quando: la connessione di rete )a una 1anda 1assa ed il do0nload deve essere svolto in piC puntateF la connessione di rete )a un alto tasso di erroriF la dimensione del >le da scaricare 8 -rande 17 Esercizi (5 min ) J Scaricate l7arc)ivio sorgente dell7ultima versione disponi1ile del soft0are GNU Kget Interrompete lo scaricamento a met+ con la se?uenza Ctrl-c ,ipristinate lo scaricamento 18 Altol+ (“Chi va l+6”) @rima di procedere con lo studio di GNU Hello, dovete verificare c)e l7arc)ivio da voi scaricato sia autentico ed inte-ro tramite la verifica della >rma di-itale dell7archivio 19 Installa(ione di GNU @rivac4 Guard (apt-get install gnupg) Il controllo della >rma ric)iede strumenti per la -estione della critto-ra>a asimmetrica (a c)iave pu1blica e privata). Il SO mette a disposizione il soft0are GNU @rivac4 Guard (GNUPG) allo scopo Installatelo apt-get install gnupg 20 Creazione di una coppia di c)iavi (Comando gpg, op(ione --gen-key) @er verificare per bene l7inte-rità di un archivio soft0are, createvi una coppia di chiavi pubblica e privata con il comando seguente/ gpg --gen-key Accettate i primi tre valori prede>niti premendo INVIO Inserite nome e co-nome @otete proteggere le c)iavi con una password, se volete 21 Scaricamento della firma digitale (;ramite il comando wget) @onete il cursore sopra il link di nome/ hello-2.10.tar.gz.sig @remete il pulsante destro del mouse e selezionate la voce 9Copia indirizzo linA: Aprite un terminale ed usate il comando wget per scaricare la firma di-itale/ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz.sig L7estensione .sig sta per signature ('rma) 22 Derifica di inte-rità e di autenticit+ (Comando gpg, op(ione --verify) Il comando gpg --verify riceve in ingresso la >rma di-itale e verifica/ c)e l'arc)ivio sia stato >rmato dal pro-rammatore responsa1ile e nessun altroF c)e l'arc)ivio sia inte-ro .se-uite il comando seguente/ gpg --verify hello-2.10.tar.gz.sig 23 Esercizi (3 min ) $ Scaricate la >rma digitale dell7arc)ivio soft0are di GNU K-et e veri>catela 24 Un piccolo problema (Non avete la c)iave pubblica dello sviluppatore c)e ha >rmato l7archivio) Il comando non riesce a validare la firma gpg: Impossibile controllare la firma: chiave pubblica non trovata @er verificare la >rma 8 necessario disporre della c)iave pu1blica dello sviluppatore che ha >rmato l7arc)ivio ,icordate/ la >rma di-itale va decriptata con tale c)iave e l'hash contenuto al suo interno 8 confrontato con l'has) calcolato sull'arc)ivio scaricato 25 Identi>cazione della chiave pu11lica (B presente un identificatore apposito nel messa--io di output di gpg) 'ovete innanzitutto identificare la c)iave pu1blica dello sviluppatore c)e )a >rmato l7arc)ivio L7identificatore della c)iave 8 presente nel messa--io se-uente/ gpg: Firma eseguita in data dom 16 nov 2014 13:08:37 CET usando RSA, ID chiave FDE9B739 26 Scaricamento della c)iave pu11lica (Comando gpg, op(ione --recv-key) Una volta noto l7identificatore della c)iave pu1blica, la si puM importare da un server remoto di c)iavi pu11lic)e Si usa il comando seguente/ gpg --recv-key FDE9B739 27 IIG FAT KARNING (Nou have been 0arned) Il comando gpg --recv-key si connette ad un servizio remoto 1asato sul protocollo ;C@ Se un >re0all intermedio 1locca il tentativo di connessione, il comando non fun(ionaO In tal caso, 8 necessario scaricare ed importare a mano la c)iave pu11lica dello sviluppatore 28 Individuazione di una chiave pu11lica (Nel caso in cui gpg --recv-key non fun(ioni) Il primo passo consiste nella individuazione dell7ID della c)iave pu1blica gpg --verify vi dice ?ual 8 la c)iave privata con cui 8 stato >rmato l'arc)ivio Doi dovrete individuare la corrispondente c)iave pu11lica Annotatevi su un file di testo il valore dell7I' Nel caso di GNU Hello: FDE9B739 29 Localiz(azione di una chiave pu11lica (;ramite un motore di ricerca) La c)iave pu11lica è di solito ospitata su siti Ke1/ )ome pa-e dello sviluppatoreF motore di ricerca di c)iavi PGP I motori di ricerca indicizzano tali siti Aprite un bro0ser all7U,L/ )ttp/%%000 -oogle com Inserite la stringa FDE9B739 Cercate i risultati relativi a/ )ome pa-e dello sviluppatoreF server di c)iavi PGP 30 Locali((azione home page (;ramite un