Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - trascrizione

1,653 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - trascrizione

  1. 1. IV LINUX DAY TERAMO ­ 27 NOVEMBRE 2004 LINUX NASCITA E CARATTERISTICHE VINCENTI relatore: Maurizio Antonelli       Some rights reserved: http://www.maury.it#licenza
  2. 2. Buongiorno a tutti. Mi presento: io sono Maurizio Antonelli. Nella vita studio fisica e sono appassionato d'informatica  da   quando ero piccolo, da quando smanettavo sul primo VIC­20 che aveva comprato mio padre.  Poi, dopo varie evoluzioni informatiche (Commodore 64, Amiga 2000) ho avuto il mio primo pc  durante gli anni di Università, quando preparavo gli esami di informatica e programmazione. Ho  preso un portatite, un Compaq Presario 1200, con Windows 98 Second Edition pre­installato. Il portatile ha girato con il sistema operativo di fabbrica per qualche mese. Un buon portatile, per  l'epoca,   ma   molti   crash...   Ho   pensato   che   probabilmente   fosse   la   normale   evoluzione  dell'informatica... Poi, in Università, nell'LCM, il Laboratorio di Calcolo e Multimedia, fatto dagli studenti per gli  studenti, ho conosciuto Linux. Al tempo ci si poteva giusto programmare, navigare in internet, gestire e­mail e scrivere in LaTeX.  Io naturalmente provai subito ad installare Linux nel mio laptop ed in questi pochi anni ho assistito  all'evoluzione  di  questo sistema operativo con cui  oggi  svolgo quasi  il 100% delle mie attività  informatiche. E con grande efficienza, dato che il mio pc non crasha mai e ho la netta impressione  che sia anche più veloce... Passiamo ora alla presentazione che farò: all'inizio dell'intervento parlerò un po' di storia dell'open  source e di Linux. Poi riassumerò brevemente cos'è l'open source, come è nato e da chi. E poi si  passerà a Linux, descrivendo anche di esso la nascita e le caratteristiche di base che ne fanno la più  grande (e temuta) alternativa ai sistemi Microsoft.
  3. 3. Questa è una frase che si trova spesso navigando su internet per siti che trattano di Open Source e di  Linux. Vediamo un attimino chi sono questi due signori e cosa hanno combinato di bello... anzi, cosa  stanno combinando... Richard Stalmann Richard Stallman è americano, laureato in fisica. Durante gli anni '60­'70 ha lavorato presso il MIT  (Massachussets Institute of Tecnology), dove i computer giravano sotto sistemi Unix. Nei laboratori  del MIT Stallman lavorava con computer in rete che condividevano una stampante, una HP. Cosa  succedeva: quando più di un PC mandava qualcosa in stampa, non essendoci ancora lo strumento  delle   code   di   stampa,   la   carta   s'inceppava,   poiché   la   stampante   provava   a   stampare   più   cose  contemporaneamente. Stallman risolse questo problema modificando il software di gestione della  stampante di cui aveva il codice sorgente: ogni volta che si mandava in stampa qualcosa, su tutti i pc  veniva visualizzato un messaggio che indicava che la stampante era occupata.
  4. 4. Spieghiamo   brevemente  cos'è   questo  codice  sorgente.  Un   computer   esegue   un  programma   che  fondamentalmente è sotto forma di bit, sotto forma di una lunga serie di 1 e di 0 disposti in maniera  tale da essere interpretati come istruzioni eseguibili: il famoso linguaggio macchina. Programmare  scrivendo le istruzioni in questa maniera è naturalmente scomodissimo e difficilissimo. Andando  avanti nel tempo, gli informatici hanno inventato dei linguaggi che potevano essere tradotti da un  qualche  sistema automatico in linguaggio macchina:  d'apprima l'assembler esadecimale, sempre  linguaggio macchina, ma umanamente più accessibile, riducendo la difficoltà degli 1 e degli 0 a un  base  16   (per   capire  meglio:  il  nostro  sistema  numerico è  a  base  10).  Poi   linguaggi   un po'   più  semplici, spesso basati su parole del vocabolario inglese: il C, il Fortran, il Basic, fino ai moderni  Java, Perl, ecc. ecc. I file dei programmi scritti in questi linguaggi sono appunto il codice sorgente,  assolutamente incomprensibili da parte di una macchina. Furono creati così i famosi traduttori, che  avevano lo scopo di tradurre il codice sorgente del programma in linguaggio macchina, creando le  istruzioni binarie eseguibili dal computer. Ora un'altra piccola parentesi: in un primo momento si  realizzarono i traduttori di tipo interprete, che prendevano un'istruzione alla volta, la traducevano e  la facevano eseguire prima di passare all'istruzione successiva. Molto lento come processo, dato il  tempo dovuto alla traduzione tra un'esecuzione e la successiva. Chi ha usato il Commodore 64 ha  esperienza di queste cose: il C64 utilizzava per l'appunto un interprete per il Basic. Poi arrivarono i  compilatori, che prendono l'intero codice sorgente, lo traducono completamente creando dei file  binari eseguibili dalla macchina e poi l'esecuzione avviene senza la perdita di tempo dovuta dalla  traduzione in simultanea. Questi sono i traduttori di oggi. Allora,   riprendendo:   Stallman   aggiunse   una   funzione   che   mandava   sui   monitor   un   messaggio  quando   la   stampante   era   occupata   da   qualche   lavoro   di   stampa.   In   questo   modo   si   evitava   di  mandare contemporaneamente più richieste ed il problema non si presentava più. Poi il MIT cambiò la stampante. Sempre un'altra HP, ma stavolta la ditta produttrice, che aveva  cambiato  politica in proposito, non fornì i sorgenti  del programma di gestione della stampa.  Il  problema della carta che si inceppava c'era sempre e stavolta Stallman era impotente: qualsiasi sua  insistenza di farsi dare il sorgente dei driver dalla HP era inutile. Da   qui   l'idea   di   Stallman   di   formare   il   movimento   dell'Open   Source  (o  software   libero)   e   il  progetto   GNU,   che   nasce   nel   1984.   Il   sistema   operativo   GNU   doveva   essere   composto   da  programmi a codice sorgente aperto, disponibile a tutti e da tutti modificabile. Doveva nascere con  il   fine   principale   di   dare   un   servizio   ulteriore   alla   società,   garantendo   sicurezza,   stabilità   e  possibilità di essere modellato in base a qualsiasi esigenza... ATTENZIONE:   “software   libero”  non   significa   assolutamente   “software   gratuito”.   Evitiamo   di  continuare a fare confusione. Stallman più di una volta, venendo in Italia per conferenze, ha tenuto a  sottolineare  che  a  differenza  che   negli   Stai  Uniti,   dove  si   usa  il   termine  “free”   per  entrambi   i  concetti, gli italiani hanno la fortuna di avere due termini: “libero” e “gratis”. Quindi non facciamo  confusione.   Il   software   libero   non   è   gratis.   Il   programmatore   può   decidere   tranquillamente   di  metterlo in commercio a pagamento; gli obblighi a cui è tenuto perché il suo prodotto sia “open  source” sono ben altri.
  5. 5. Queste quattro libertà, che devono essere garantite dai progetti Open Source, le ho prese dal sito  dell'Italian Linux Society, l'associazione che ha indetto questo Linux Day, all'URL che vedete nella  slide. Libertà 0 o libertà fondamentale: La libertà di eseguire il programma per qualunque scopo, senza vincoli sul suo utilizzo. Libertà 1: La libertà di studiare il funzionamento del programma, e di adattarlo alle proprie esigenze. Libertà 2: La libertà di redistribuire copie del programma. Libertà 3: La libertà di migliorare il programma, e di distribuirne i miglioramenti. Queste sono le quattro regole che riassumono quello che Stallman intendeva per software libero.  Come vedete, sono concetti decisamente diversi e lontani da quelli con cui vengono distribuiti i  software ai quali molta gente è abituata. Stallman sviluppò in base agli ideali che si era prefissato il compilatore C, l'editor di testi Emacs e  nel   resto   del   mondo   partirono   altri   progettini,   ma   per   essere   un   Sistema   Operativo   completo,  mancava una cosa fondamentale: un kernel...
  6. 6. E veniamo quindi al secondo personaggio... Inizi degli anni '90, dopo che durante gli anni '80 si era  diffuso abbastanza l'ideale contro il monopolio privato dei sorgenti chiusi. Linus Torvalds era un  semplice studente universitario presso l'Università di Helsinki. Seguiva per passione lo sviluppo e la  diffusione del progetto GNU, ma era consapevole che ne mancava proprio la parte centrale: i sistemi  Unix sotto cui potevano essere compilati ed installati tutti i progetti dell'Open Source erano molto  costosi, circa 30.000­40.000 dollari. Come poteva essere accessibile se non solamente ad università  e grosse aziende una cosa del genere? In questi anni, il professor Tanenbaum, olandese, aveva sviluppato un sistema Unix­like (simile allo  Unix), il Minix, utilizzabile anche sui semplici PC, senza richiedere costosissime workstation. Era  stato sviluppato in base alle sue esigenze di insegnante, ed era a sorgenti chiusi. Tra Tanenbaum e  Torvalds ci fu un'accesa disputa, una discussione sul fatto del Minix a sorgenti chiusi. Fu il 25  agosto 1991 che comparve su qualche forum dell'internet di allora un messaggio di Torvalds che  annunciava che lui (sottolineando che al tempo era studente universitario e non un professionista)  stava scrivendo un kernel per un sistema operativo Unix­like che sarebbe girato sui PC, e a sorgenti  aperti, rispettando appieno le direttive che aveva sviluppato Stallman. E fu a settembre 1991 che fu disponibile su internet il kernel Linux 0.01. Successivamente GNU  Linux. Naturalmente poi si creò la comunità di sviluppo: molte altre persone hanno dato il loro contributo.  Ad esempio un certo Alan Cox sviluppò le intrefacce di gestione delle reti. Ecco  quindi  raccontata un po'  la storia che viene sintetizzata con la frase che compariva  nella  seconda diapositiva...
  7. 7. Ora che si aveva un kernel che rispettava tutti i requisiti dell'Open Source ideato da Stallman, la  comunità si buttò con molto entusiasmo su tantissimi progetti senza i quali Linux non sarebbe stato  nessuno: X­Window:   l'ambiente   grafico.   Era   impensabile   che   con   l'avvento   di   Windows,   dove   tutto   era  un'icona, dove la visuale era a colori, dove si utilizzava il mouse, Linux avrebbe retto il confronto  rimanendo col semplice ambiente testuale. Ecco quindi l'X­Free, un ambiente grafico che permette  oggi alte risoluzioni, la possibilità di utilizzare il pc in maniera multimediale, con visualizzazione di  foto e filmati. KDE, Gnome e altri windows manager. Gestori di finestre, ognuno con una sua veste grafica e un  suo modo di essere utilizzato, chi più, chi meno intuitivamente. È possibile installarli tutti e ogni  volta che si entra decidere su che ambiente lavorare. Inoltre gli sviluppatori li stanno arricchendo  sempre più con molte applicazioni:  KOffice, una suite per ufficio; GnomeToaster un programma  per masterizzare in maniera veloce; KsCD, un programma per ascoltare i Compact Disk, ecc. ecc... The  Gimp:   un programma per l'elaborazione di  immagini  e fotografie digitali. Completamente  Open Source e con tantissime funzioni. In continua evoluzione. È possibile aprire tantissimi formati  di foto digitale, compresi quelli proprietari di altri programmi commerciali. Mozilla: una suite per il web. Comprende un browser, un client di posta, un programma per chat, e  altre cosette. Proviene direttamente dai codici sorgenti del Natscape Navigator ed è molto intuitivo  da utilizzare, senza avere tutte le falle di sicurezza che ha invece Internet Explorer. Xine,  Mplayer:   lettori   multimediali.   Per   DVD,   VCD   e   file   creati   con   vari   codec.   L'MPlayer  comprende anche un codificatore per comprimere i propri file creando CD, DVD o DivX. OpenOffice.org:   la   suite   per   ufficio   Open   Source.   Arriviamo   all'ultimo   arrivato,   tappa  fondamentale dello sviluppo dell'Open Source. È una suite nata quando la Sun Microsystem decise 
  8. 8. di scindere lo Star Office in due progetti distinti: uno proprietario, rivolto al mondo del business e a  sorgenti chiusi, lo StarOffice; un altro, invece,  OpenOffice.org, a sorgenti aperti, che si rivolgeva  agli utenti con meno pretese, ma con la possibilità di avere a disposizione il codice sorgente. È una  suite che permette di lavorare anche con i documenti creati con il più diffuso Microsoft Office,  grazie   alla   possibilità   di   aprire   i   suoi   formati   proprietari,   i   .doc,   ecc..   per   intenderci.   Questa  caratteristica è stata implementata grazie ad un gran lavoro di  reverse engineering. Che cos'è: la  Microsoft non ha mai pubblicato la struttura di un .doc. Quindi i programmatori di  Sun  e della  comunità hanno dovuto studiare il prodotto finale, appunto diversi file .doc, per poter risalire alla  struttura. Per fare un esempio: avendo i giusti strumenti è possibile costruire una Ferrari avendone il  progetto. Immaginate però di non avere il progetto, ma una Ferrari già montata. Immaginate quanto  diventa difficile costruirne una identica, capire com'è strutturata, smontarla per carpirne i minimi  dettagli... Ecco, questo è il reverse engineering... Non è una cosa da poco... Ebbene,  OpenOffice.org  apre tranquillamente i  documenti  di  Office (attenzione  a quelli troppo  complicati per cui si rivelano ancora alcuni problemi di impaginazione) e in più ha una funzione  utile per chi distribuisce i file in pubblico: la possibilità di esportare in formato PDF, un formato  difficilmente modificabile e che non contiene tutte quelle informazioni personali che memorizza,  invece, il .doc. In più  OpenOffice.org  ha un formato proprietario aperto, cosa che, invece, Office  non ha. Che succederebbe ai vostri .doc se un giorno Microsoft decidesse ti togliervi la licenza di  Office (cosa che può fare benissimo, anche per spingervi a comprare i suoi nuovi prodotti)? Con  OpenOffice.org questo rischio non c'è, perché chiunque è libero di scrivere programmi in grado di  leggere e modificare i .sx(w,x,i), appunto i formati propri di OpenOffice.org. Attenzione,   una   piccola   curiosità   (di   una   certa   importanza):  Gimp,  Mplayer,  Mozilla,  OpenOffice.org sono disponibili anche per i Microsoft Windows e quindi potete già utilizzarli con  questi sistemi operativi. Ecco qui. Questa domanda vuole essere provocatoria. Qualche mese fa, in un'intervista il patron di  Microsoft ha affermato che chi produce OpenSource è gente che programma nelle ore notturne, che  non essendo spinta da un guadagno personale non può produrre roba di buona qualità... Il signor Gates però si è dimenticato forse di qualcosa: che molte persone realizzano cose non solo  per trarne un profitto, ma per semplice passione, per dare un ulteriore servizio alla società intera; 
  9. 9. visto che programmare richiede competenza ed intelligienza, anche per il semplice gusto della sfida  personale. Allora. Che ne pensate dell'affermazione dello zio Bill? Allora, passiamo al concetto di “distribuzione”. Abbiamo detto che ora abbiamo un kernel, dei  compilatori per compilare ed installare, diversi programmi più o meno grandi. Scaricare tutta questa  roba, compilarsela, configurarsela... Sì, utile a livello di prestazioni e di controllo, dato che si ha la  possibilità di compilarla e configurarla in maniera ottimale, ma sarebbe un'ingente perdita di tempo,  per non parlare delle difficoltà che avrebbe chi non è molto pratico di certe cose. Molte ditte di  software hanno quindi raccolto grandi quantità di programmi, oltra al kernel Linux naturalmente,  compilando, configurando e mettendo il tutto in CD liberamente distribuiti. Nasce così il concetto  di distribuzione... Qual è l'aspetto commerciale di questa faccenda? Linux è gratuito e molto spesso,  anche se non sempre, lo sono anche gli altri programmi Open Source; queste ditte hanno il loro  guadagno nell'assistenza tecnica. Tu sei libero di installare il RedHat Linux, ad esempio, ma se hai  un problema, poi puoi comprare il mio manuale pagandolo oppure ti rivolgi ad un mio tecnico che  non ti può far pagare il software, ma ti può far pagare il suo tempo e la sua competenza. Le distribuzioni sono molte e tutte un po' diverse tra loro: da quelle rivolte a chi amministra reti  aziendali (Debian, Slackware), a quelle per uso più casalingo (Mandrake), da quelle che puntano a  soddisfare   programmatori   ed   hacker   smanettoni   (Gentoo)   a   quelle   facili   facili   da   installare   e  configurare   (RedHat).   Attenzione,   qui   vi   faccio   notare   l'ultima:   la  Qi­Linux.   È   una   nuova  distribuzione, nata qualche mese fa ed è completamente italiana. La produce la Qi­Soft, una ditta  software   con   sede   a   Torino.   Io   personalmente   non   l'ho   mai   provata,   ma   ho   letto   che   è   molto  semplice   da   utilizzare.   Queste   ditte,   naturalmente,   oltre   al  kernel,  OpenOffice.org  ed   altre  applicazioni, inseriscono anche degli strumenti creati da loro per installare e configurare, venendo  così incontro agli utenti finali.
  10. 10. Passiamo ora a vedere un po' le caratteristiche fondamentali del sistema operativo GNU/Linux. È   un  sistema   multi­utente.   Il   sistema   operativo   Linux,   come   tutti   i   sistemi   Unix­like   è   stato  progettato per macchine con cui lavorano più persone. Quindi macchine dove si rende necessaria  una certa riservatezza, una certa sicurezza rispetto ai danni causati da altri utenti e anche un certo  diritto   a   personalizzare   l'ambiente   di   lavoro   (screensaver,   sfondi,   configurazioni,   ecc...)   senza  invadere lo stesso diritto degli altri. È   un   sistema   con   un  file­system   caratterizzato   da   permessi.   Che   significa?   Questa   è   la  caratteristica che garantisce proprio la riservatezza dei propri documenti e la sicurezza nei confronti  di danni causati da terzi. Ogni file è caratterizzato da 9 permessi:  lettura, scrittura, esecuzione  da  parte del proprietario; lettura, scrittura, esecuzione da parte dei membri del gruppo del proprietario;  lettura, scrittura, esecuzione da parte di tutti gli utenti della macchina. Quindi il proprietario di un  file può decidere di non rendere accessibile in scrittura un determinato file ad altri utenti e garantirsi  così che quel file non subirà modifiche a propria insaputa. Ad esempio: io ho un documento che per  il momento voglio tenere segreto. Basterà che toglierò tutti e tre i permessi al mio gruppo e a tutti  gli   utenti   (si   fa   col   comando   di   shell   “chmod   700  nomefile”).   In   questo   modo   nessuno   potrà  accedere per nessuno scopo, compresa la visualizzazione, al mio file. C'è un super­utente, l'utente root, che gestisce il sistema. C'è questo “super­man” che è al di sopra  di ogni permesso. Legge e scrive tutto. Questo perché? Per poter risolvere situazioni in caso di  emergenza. Succede spesso, ad esempio, che un utente poco pratico modifichi in maniera errata dei  file personali di configurazione della shell (vedremo più avanti cos'è), in questo modo senza riuscire  più ad avere acceso al PC. In questo caso, per fortuna che c'è il super­utente, l'amministratore, che,  anche se il file in questione non ha i permessi di scrittura per gli altri utenti, può modificarlo  ugualmente. Il super­utente è anche l'unica persona che può installare programmi nel sistema (gli  utenti possono farlo solo nelle cartelle a loro aperte, tra le quali per ovvii motivi non ci sono file di  sistema), aggiornare gli stessi e modificare i file di configurazione di base delle varie applicazioni o  delle funzioni del sistema (tipo rete, o hardware vari). È  un  sistema multi­tasking. Permette quindi di eseguire più applicazioni  contemporaneamente, 
  11. 11. sfruttando al meglio le capacità di calcolo ed elaborazione della macchina. Oramai sono multi­ tasking tutti i sistemi, certo, compresi i vari Windows, ma la caratteristica di multi­tasking dei  sistemi Unix­like è qualcosa di nettamente superiore. Efficienza incredibile, a cui si aggiunge una  forte stabilità. Linux utilizza la  memoria di swap. Anche questa è una cosa ormai comune a tutti i sistemi in  circolazione. Quando si lavora con diverse applicazioni, naturalmente si arriva spesso ad esaurire la  RAM fisica del calcolatore. E' qui che interviene lo swap­space, conosciuta anche come memoria  virtuale.   Lo   swap   è   una   zona   nel   disco   fisso,   in   Linux   ben   definita   (la   si   imposta   in   fase   di  installazione), che viene utilizzata come memoria ausiliaria. Naturalmente rallenta il sistema, dato  che scrivere e leggere da un hard disk è più lento che da una memoria RAM fisica, ma garantisce  maggiori capacità che il sistema non avrebbe se utilizzasse solo i megabyte disponibili con la RAM. Lavoro in rete tramite  SSH. Questa è una proprietà, data da un protocollo esterno, il protocollo  Secure SHell. Permette di fare un login, di entrare, in un sistema remoto collegato ad internet. Così  posso lavorare a distanza sul computer remoto (a cui naturalmente devo avere l'accesso) come se ce  lo avessi davanti. Il tutto in maniera resa sicura dal protocollo di criptazione dei dati SSL: in rete i  dati, comprese le mie password, e i miei comandi passano in maniera criptata, senza poter essere  individuati da qualcuno in ascolto. Passiamo ora alla shell. La shell è l'interprete dei comandi di Linux. È un programma di base che  permette all'utente di mandare comandi al sistema. Apparentemente ricorda molto il vecchio prompt  dell'MS­DOS. In effetti il modo di utilizzo è molto simile. Di shell non ce n'è una sola, ma diversi tipi, tra cui ognuno può scegliere in base alle proprie  esigenze ed ai propri gusti. La prima di questa piccola lista è la  bash, abbreviazione di Bourne  Again SHell. È la shell che molte distribuzioni fanno utilizzare di default e che utilizzo di norma  anch'io. Tra le altre merita una piccola attenzione la csh (C­Shell), una shell studiata per chi lavora  molto con il linguaggio di programmazione C.
  12. 12. Vediamo una piccola carrellata dei principali comandi di shell: ls: è il comando per visualizzare tutti i file della directory corrente. Io personalmente la utilizzo con  le   opzioni  ­laF   ­­color,   in   maniera   da   farmi   visualizzare   tutti   i   file,   compresi   quelli   nascosti,  caratterizzati dal nome che inizia per un punto (.), e facendomi visualizzare se sono dei file di dati,  delle directory o dei link, distinguendomeli anche con colori diversi. pwd: è il comando per far visualizzare alla shell la posizione corrente nel file­system: in quale  directory ci troviamo. exit: è il comando per uscire come utente, rendendo la macchina disponibile ad altri. cd: per entrare in una directory (piccola attenzione: le directory in unix si separano con lo slash (/) e  non con il back­slash () come ci ha abituato qualcun'altro. Guarda caso, tutta internet, che funziona  sotto Unix, utilizza lo slash). cp:   è   il   comando   per   copiare   un   file.   La   sintassi   è   semplice:   cp  nome_file_origine  nome_file_destinazione mv: muove/sposta un file. E' molto simile al comando cp, ma con la differenza che poi rimuove il  file di origine. E' utilizzabile anche per rinominare un file, naturalmente.
  13. 13. cat: concatena due o più file. Prende il primo e dopo la fine inizia a metterci il secondo e così via.  Poi manda tutto allo standard output, cioè al monitor. rm: elimina un file. Attenzione: una volta eliminato, il file è andato perso per sempre. Infatti in  Linux   non   esiste   un   cestino.   Però   è   possibile   invece   di   usare   il   comando  rm,   utilizzare   il  mv  mettendo quello che si vuole cancellare in una directory di Trash creata. more  e  less: sono due comandi per visualizzare un file, senza che scorra velocemente in avanti,  pagina per pagina.  Less  è un po' più avanzato, permette di tornare indietro nella visualizzazione,  more no. man: il comando man visualizza il manuale in linea del programma richiesto. In genere quasi tutti i  programmi hanno un manuale velocemente consultabile, con tutte le opzioni e le funzioni annesse.  La visualizzazione è semplice: man nome_programma.
  14. 14. shutdown: è il comando per arrestare il sistema e riavviarlo o spegnerlo. In genere (ma varia a  seconda delle configurazioni) è un comando che può eseguire solo l'utente root. su: questo è un comando che permette di entrare come altro utente senza dover uscire da quello  sotto cui si lavora. Naturalmente la prima cosa sarà quella di dover inserire la password di accesso.  È molto comodo, poiché permette la manutenzione ad un utente (che amministra il sistema) di  entrare come root senza dover interrompere le applicazioni avviate. La sintassi è “su nome­utente”,  oppure solo “su” per il super­utente. mkdir: il comando mkdir crea una directory vuota. La sintassi è semplice: mkdir nome_directory. rmdir:   è   il   comando   che   elimina   una   directory   vuota.   Se   la   directory   non   è   vuota,   bisognerà  utilizzare il comando per eliminare i file con l'opzione ­r: rm ­r nome_directory.
  15. 15. Oltre a questa piccola carrellata dei principali comandi della shell, vediamo alcune piccole utilità. La PIPE (data dal simbolo “|”). Questo operatore è utile per collegare l'output di un primo comando  all'input di un secondo comando. Per intenderci meglio: esegue il secondo comando sull'output del  primo. Un  esempio:  cat 1°tempo.mpg 2°tempo.mpg | mencoder ­ovc lavc ­lavcopts vcodec=mpeg4 ­oac   copy ­o c.avi Allora: il primo comando concatena i due file mpeg. Non so se lo sapete, ma i file mpeg possono  essere uniti semplicemente concatenando i due file, senza bisogno di riscrivere indici ed header. Si  otterrebbe così un filmato mpeg composto dai due filmati concatenati; come da esempio, è utile per  unire il primo ed il secondo tempo di un film o cose di questo tipo. A questo punto, il file risultante,  il filmato unico appunto, viene passato ad  mencoder  che creerà il file c.avi, cioè tutto il filmato  codificato e compresso in mpeg4 (il famoso DivX per chi giochicchia con queste cose).
  16. 16. Un altro utile operatore è “>“ (redirezionamento dell'output ad un file). Con questo operatore si  può   mandare   l'output   video   (o   meglio   lo   standard   output)   di  qualsiasi  comando   ad   un   file.  Nell'esempio “cat testo1.txt testo2.txt > testone.txt” vengono concatenati i due file di testo e il testo  risultante dall'unione, invece che essere visualizzato sul monitor, viene mandato ad un nuovo file  creato apposta, il testone.txt. Nell'altro esempio “ls ­laF ­­color > la_mia_home.txt”, invece, viene creato un file contenente il  contenuto della directory. Un altro utile comando di shell è “lpr”. Esso invia un file direttamente alla stampa. L'argomento di  lpr può essere qualsiasi file in formato testo semplice, ghostscript o in formato pdf. Se il formato è  di altro genere, la shell cerca di inviarlo come se fosse un testo semplice, quindi è meglio evitare,  dato che molto spesso si tratta di roba incomprensibile che non ha senso stampare.
  17. 17. Abbiamo visto che molti comandi richiedono delle opzioni per svolgere il compito che vogliamo. In  questo modo il comando si allunga. Per abbreviare un po' la battitura e velocizzare il lavoro c'è la  possibilità di creare degli  alias. Gli alias sono dei comandi alternativi, in genere molto brevi, che  vengono programmati per eseguire comandi più lunghi in termini di battitura. Sono personali e sono  liberi. Attenzione però a non creare un alias con il nome di un comando già esistente, poiché quel  comando non sarà poi più accessibile direttamente, ma solo specificando il percorso completo in cui  si trova. Negli esempi ci sono alcuni degli alias che utilizzo io. lll  mi   mostra   il   contenuto   di   una   directory,   visualizzando   tutti   i   file,   anche   quelli   nascosti,  distinguendomi i file eseguibili, le directory e i file di dati utilizzando anche i colori. Il tutto poi  impaginato a schermate. pp  mi visualizza tutti i processi (comando  ps) dell'utente  maury  (cioè io), impaginando il tutto a  schermate. cdm mi monta il cd inserito nel lettore cd­rom. cdr mi entra nella directory in cui è montato il cd­rom. Vedremo poi il concetto di montaggio di un  dispositivo. ucd alla fine del lavoro con il cd, me lo smonta. Attenzione alla sintassi. Quella visualizzata negli esempi è la sintassi per la shell BASH. Per alcune  shell cambia leggermente; ad esempio nell c­shell non si mette l'uguale, ma un semplice spazio.
  18. 18. Un altro sistema per velocizzare il lavoro, che si aggiunge al sistema degli alias, è quello di far  riconoscere   alla   shell   cosa   vogliamo   battere   sulla   tastiera   e   fargli   concludere   il   comando  automaticamente. Per questo si batte il  tasto TAB  dopo i primi caratteri di un comando o di un  nome di file. A questo punto la shell cercherà tutti i possibili comandi e file che iniziano con quei  caratteri e nel caso di risultato unico completerà automaticamente il comando od il nome del file. Se  il risultato non è unico, allora visualizzerà tutte le possibilità sullo schermo, invitando l'utente a  battere qualche carattere ulteriore. Il tasto TAB può essere utilizzato anche per completare i nomi  dei file argomento di un comando. Vi   assicuro   che   prendendo   una   certa   dimestichezza   con   questa   caratteristica,   il   lavoro   diventa  velocissimo. Come molti altri sistemi operativi, anche in Linux si utilizzano i due caratteri jolly da inserire nei  nomi dei file.
  19. 19. Il carattere “?” sostituisce uno e un solo carattere qualsiasi. Come vedete negli esempi, nel primo  caso posso non ricordarmi se il nome del file pdf da aprire è cartellone o cartelloni. Allora posso  sostituire l'ultima lettera con il punto interogativo (?) e la shell identificherà il file, qualsiasi sia  l'ultima lettera. Lo stesso si può fare con le directory, come viene illustrato nel secondo esempio. E poi c'è il  carattere asterisco “*”  che sostituisce un numero qualsiasi di caratteri consecutivi.  Anche qui, come per il punto interrogativo, l'utilizzo può essere sia nel nome di un file, sia nel  nome di una directory. Inoltre i due caratteri jolly possono essere utili per operazioni su più file. Ad esempio, se volessi  cancellare tutte le foto in formato jpeg (con estensione jpg, dato che in Linux l'estensione non è  indicativa), basterà fare un rm *.jpg. Il comando rm sarà così rivolto a tutte le foto (o meglio a tutti i  file) con estensione jpg. Quando si lavora da shell, spesso si lanciano dei comandi di lunga esecuzione. Finché l'esecuzione  non   verrà   terminata   la   shell   risulterà   occupata   ed   inutilizzabile.   E   allora   qual   è   la   soluzione?  Sfruttare   il  multitasking.   Per   fare   questo   da   shell,   si   utilizza   la   cosiddetta  esecuzione   in  background, semplicemente mettendo il simbolo “&” (e commerciale) alla fine del comando. Cosa significa? Il comando verrà lanciato lasciando libera la shell per altri lavori, utilizzando le  risorse libere di sistema. In questo modo sarà possibile lanciare altri comandi, sia in background, sia  non, in maniera che il computer divida tra di essi le risorse. Attenzione, un comando può essere  lanciato in background a patto che non sia interattivo: per intenderci non dovrà chiedere degli input  da tastiera, in quanto tutto quello che sarà battuto da tastiera sarà indirizzato alla shell e non al  programma in esecuzione. Ad esempio se lancio un programma non in background che mi chiede il  mio   nome,   io   potrò   battere   il   mio   nome,   il   tasto   INVIO   ed   esso   sarà   preso   come   input  dall'applicazione. Ma se l'applicazione è in background, essa mi chiederà il mio nome, ma poi  quello che batterò sarà preso come comando di shell e non come input del programma. Insomma si  va solo incontro a problemi. Quindi attenzione: lanciare in background solo applicazioni autonome  e non interattive. Nell'esempio vedete che viene lanciato il Mozilla, lasciando libera la shell. Se non ci fosse la “&” la  shell risulterebbe occupata e non utilizzabile.
  20. 20. Allora. Abbiamo visto come si lavora da shell sotto Linux. La cosa che osserva la maggior parte dei  miei amici che mi vede al lavoro sotto Linux è questa: “Ma si devono dare i comandi da tastiera. Ma   che arretrato Linux!”. Questo non è vero. Tramite gli ambienti a finestre tipo KDE o Gnome si può  lavorare tranquillamente anche con finestre, icone e mouse, più o meno come siete abituati coi vari  Windows. L'utilizzo del lavoro da shell è spesso una scelta; infatti, chi è pratico ed abituato con la  tastiera  riesce a lavorare in maniera più fluida e veloce rispetto a chi lavora generalmente con il  mouse. Un classico esempio: quando si lavora con un word­processor, un programma di battitura, si  utilizza il “copia­incolla” con la seguente procedura: 1 – si seleziona con il mouse la porzione di testo 2 – col tasto destro si richiama il menù 3 – si seleziona la voce “copia” 4 – ci si sposta nell'area dove si deve incollare 5 – si preme il tasto destro per richiamare di nuovo il menù 6 – si seleziona la voce “incolla”. Con la tastiera la cosa si velocizza: 1 – si seleziona 2 – CTRL + C che equivale al ”copia” 3 – si va nell'area di destinazione 4 – CTRL + V che equivale all'”incolla”. Chi è bravo guadagna tempo... Allora,   capite  perché  è   una  questione  di   scelta?  Il  principiante  troverà   più  comoda   e facile   da  memorizzare la procedura con il mouse, ma chi ha una certa dimestichezza ed una certa volontà di  velocizzare il proprio lavoro, ecco che sceglie la keyboard, la tastiera, e quindi anche la shell, che  come abbiamo visto ha molti strumenti che permettono un lavoro più rapido.
  21. 21. I   primi   tempi   in   cui   lavorerete   con   Linux   vi   accorgerete   subito   di   una   cosa:   è   un  sistema  stabilissimo.   Chi   viene   da   ambienti   Microsoft   saprà   benissimo   cosa   significhi   dover   riavviare  spesso il computer. Con Linux questo, salvo rare eccezioni, non avviene mai. Il sistema operativo  rimane   sempre   in   massima   efficienza.   La   cosa   che   può   capitare   è   che   si   blocchi   qualche  applicazione; questo può succedere a causa di bachi nell'applicazione stessa, ma con Linux non  vedrete mai il puntatore del mouse bloccato. Il sistema continua a girare senza problemi e sarà  possibile  chiudere la singola applicazione senza dover  riavviare  l'intero computer.  Per chiudere  un'applicazione bloccata c'è il comando “kill”, a cui bisogna dare come argomento il PID, il numero  che identifica ogni applicazione, che si può trovare con il comando “ps ­u utente”. Verrà chiusa la  singola applicazione, senza bisogno di riavviare tutto il sistema. E poi Linux, come tutti i sistemi UNIX­like, simili come struttura allo UNIX, offre una sicurezza  molto maggiore. Tutti quanti sentiamo sui telegiornali virus fa strage di PC qua, cracker viola il  sistema là, ecc... Attenzione ad una cosa: “cracker” e non “hacker” come erroneamente nominano i mass­media. Il  cracker è il pirata informatico che fa un danno a qualcun altro per divertimento e/o per fini di lucro.  Il termine  hacker, invece, identifica uno smanettone, uno che utilizza l'intelligenza e l'abilità per  degli scopi positivi. È una persona che utilizza l'intelligienza per riuscire ad utilizzare un qualcosa  per uno scopo per la quale non è stata progettata. Un esempio di hacker potete essere voi ogni qual  volta utilizzate ad esempio l'editor degli sms del vostro telefonino semplicemente per ricordarvi un  numero   o   una   data;   l'SMS   è   nato   per   un   altro   scopo,   quello   di   messaggistica,   ma   voi   l'avete  utilizzato come block­notes; questa è una semplice azione di hackeraggio. Quindi attenzione a non  confondere   hacker,   termine   positivo,   con   cracker,   termine   negativo   che   identifica   il   vandalo  informatico. Allora, ebbene, con Linux il termine      virus    ve lo potete dimenticare  . Primo perché Linux è ancora  poco diffuso, quindi chi crea queste “subdole creature” prende poco in attenzione Linux. Un virus,  infatti, come prima cosa deve infettare il mio pc, come seconda poi deve diffondersi ad altri pc. Io  personalmente sono circondato da gente che utilizza Windows e quindi il virus si perderebbe subito, 
  22. 22. poiché   chiaramente   un   eseguibile   Linux   non   può   girare   sotto   Windows   e   viceversa.   Il   sistema  Windows, molto diffuso, invece si presta bene ad epidemie. E poi il motivo più importante: il file system è caratterizzato da permessi. Quindi io singolo utente  che   ho   i   diritti   di   scrittura   solo   della   mia   cartella   personale   e   di   qualche   altra   cartella   meno  importante (tipo la  /tmp), non potrò scrivere sui file di sistema, in quanto non ne ho i diritti di  scrittura. Quindi un programma che vuole scrivere sul sistema, tipo appunto un virus per installarsi,  non ne ha la possibilità. Questo è il motivo per cui non bisogna mai utilizzare l'utente root se non  per stretta necessità, poiché il super­utente può scrivere ovunque. Quindi un virus non riesce ad  installarsi sul mio sistema e a parte qualche danno iniziale poi morirebbe lì. Quindi non si tratta  solo   di   diffusione.   I   sistemi   UNIX­like   sono   sistemi   che   strutturalmente   sono   più   robusti   e  garantiscono più sicurezza sul piano “virus informatici”. Poi ogni utente ha una sua password di accesso. Niente password, niente utilizzo del sistema. Io  utente posso entrare in remoto con la mia password, ma un cracker che non la conosce ha molte  difficoltà. Non è impossibile, ma molto difficile. Per la cronaca: Windows 98 permetteva l'entrata a  chiunque:   in   rete   si   trovano   ancora   programmini   che   permettono   qualsiasi   tipo   di   scherzetto   a  distanza, via internet, ad una potenziale vittima, compreso lo spegnimento del computer. Ultima   cosa,   molto   importante:  Linux   è   software   libero.   Quindi   eventuali   bachi   di   sicurezza  possono essere notati dall'umanità intera e non soltanto da 10 (più o meno) programmatori. La  probabilità di identificare bachi è più alta e saranno più tempestivamente corretti. Poi non sarà  possibile da parte del programmatore inserire codice maligno, tipo spy­ware per spiare quello che  facciamo o cose del genere, in quanto, avendo il sorgente, verrebbe subito individuato. Chi conosce  la programmazione e i vari linguaggi può vedere per filo e per segno tutte le operazioni che esegue  un programma. Quindi Linux e il software open­source battono in sicurezza il software a cui siete abituati. Decidete  voi se vi sembra una cosa da nulla o, invece, molto importante... Vediamo ora alcune possibili installazioni di Linux. Oltre ad essere installato come unico sistema  del computer, Linux offre anche la possibilità di condividere il PC con altri sistemi e sarà possibile  ogni volta decidere se far partire la macchina con Linux, con Windows 98, con BSD, ecc. ecc.
  23. 23. Per far questo la cosa migliore è  partizionare l'Hard­Disk. Si crea una partizione dove starà il  vecchio sistema operativo, a cui potrete tornare quando vorrete. Altre partizioni (perché per Linux  ne servono almeno 2, una per il sistema, l'altra per lo swap, la memoria virtuale) dove potrete  mettere Linux. Quando avvierete il computer, verrà subito caricato un programmino che si chiama il  bootloader che vi permetterà di scegliere se caricare il vecchio sistema o Linux. Questa è la soluzione migliore riguardo a velocità del sistema, in quanto ogni sistema operativo avrà  il suo hard­disk direttamente e le risorse dedicate completamente a lui. Un altro sistema per utilizzare Linux è la distribuzione live. Praticamente il Linux è installato su un  CD avviabile.  Si avvia il computer da cd­rom e da qui verrà caricato Linux. L'hard­disk verrà  utilizzato   solo   per   i   file   personali   e  di   configurazione,   messi   in  una   determinata   directory   del  sistema installato nell'hard­disk. Questa è una soluzione molto comoda, ma non permette modifiche,  installazioni   di   programmi   e   aggiornamenti,   in   quanto   il   sistema   risiede   in   un   cd­rom,   un  dispositivo in sola lettura. La comodità sta nel fatto che con i cd­live si può vedere al volo una  distribuzione, che caratteristiche presenta, senza la scomodità dell'installazione. L'installazione su di un file. Questa è una soluzione che proponeva qualche anno fa la RedHat. Ora  non so di preciso se è ancora utilizzata. Il sistema viene installato non su una partizione reale, ma su  una  partizione virtuale:  cioé  viene creato  un  file  nel vecchio sistema installato nell'hard­disk   e  all'interno di questo file vengono messi i dati che qualche opportuno programma interpreta come se  fossero   dati   in   un   hard­disk   reale.  Anche   questo  è   un   sistema   comodo,   ma   presenta  una   certa  lentezza, in quanto il computer impiega delle risorse nell'interpretazione della partizione virtuale. Infine l'installazione su macchina virtuale. Esistono alcuni programmi, il più famoso è VMWare,  programma  non  open­source e tutt'altro che gratuito, che si avviano da sistemi operativi già in  esecuzione (esiste sia per Linux che per Windows NT, 2K, XP) ed emulano un computer appena  acceso, con tanto di BIOS. Compare lo schermo esatto di un pc all'avvio in una finestra. Da qui si  potrà installare un ulteriore sistema operativo e una volta installato potranno essere eseguiti due  sistemi   contemporaneamente.   L'installazione   può   avvenire   sia   su   una   partizione   virtuale,   come  sopra, sia reale precedentemente creata. Il pc sarà naturalmente più lento, ma la comodità di avere  due sistemi contemporaneamente supera questo aspetto negativo.
  24. 24. Passiamo ora a dare un'occhiata al file system di Linux. Iniziamo col dire che in Linux qualsiasi cosa viene trattata come se fosse un file. Di file ce ne sono  tre tipi: file di tipo  directory  o  cartella, come esattamente in altri sistemi. Sono un tipo di file che non  contengono dati, ma sono strutture che permettono di contenere al loro interno altri file, in maniera  più   ordinata,   rendendo   anche   più   facile   l'accesso.   Abbiamo   già   visto   i   comandi   per   creare,  cancellare od entrare in una directory. Una volta dentro una directory, quella diventerà il luogo di  lavoro della shell. Poi ci sono i file di dati. Sono tutti i file eseguibili, creati e propri di qualche programma, file di  configurazione, di dati, ecc. Possono essere di due tipi. I file di tipo ASCII sono tutti quei file scritti  con codifica ASCII, il vecchio codice che assegna ad ogni carattere visualizzabile un numero da 0 a  255. Sono accessibili, leggibili e modificabili anche con un editor di testo, in quanto ogni byte che  compone il file è tranquillamente interpretabile e visualizzabile tramite il codice ASCII. L'esempio  più standard di un file ASCII è un file di testo semplice, creato col  Notepad  di Windows o con  qualche altro editor di testo semplice (in Linux ce ne sono diversi: vi, emacs, pico, kedit, ecc...). E  poi ci sono i file di tipo binario, non visualizzabili e difficilmente comprensibili. A questa categoria  appartengono tutti i file eseguibili, tutti i file complessi creati da qualche suite per ufficio, tutti quei  file   che   al   loro   interno   contengono   delle   istruzioni   che   devono   essere   interpretate   ed   eseguite  esclusivamente dalla macchina. Ad esempio un foglio di calcolo sarà salvato su un file binario, in  quanto, oltre ai valori inseriti nelle singole celle, dovrà contenere anche delle istruzioni sul formato  (grasseto, sottolineato, ecc.), sui colori, sulle formule, ecc... Infine ci sono i file di tipo collegamento o link. Sono dei file che in sé per sé non contengono dati,  ma si ricollegano ad altri file. Io posso così avere accesso ad un determinato file anche trovandomi  in una directory differente da quella in cui risiede, semplicemente perché nella directory dove sono  ho un collegamento al file in esame. Di collegamenti ne esistono due tipi:  fisici  e  simbolici. Il  collegamento fisico è praticamente un secondo nome dato ad un file. In questa maniera il file risulta  due volte nel file system, anche in directory diverse, ma sul disco rigido è presente in singola copia,  permettendo   un   risparmio   di   spazio.   Se   ad   esempio   ho   questi   due   file,   /home/maury/a   e  /home/guest/b, uno link fisico dell'altro, potrò modificare uno dei due a piacere per modificare il  file. Quindi un link fisico è lo stesso file, ma presente in due percorsi del filesystem differenti. Un  link simbolico è, invece, un file a sé, che contiene la posizione nel file system del file a cui punta. Il 
  25. 25. concetto di link simbolico è molto simile al concetto di link a cui è abituato chi utilizza sistemi  operativi  Microsoft.  La  differenza tra  questi   due  tipi  di   collegamento  è   molto  sottile  e  diventa  significativa   per   chi   fa   un   utilizzo   abbastanza   avanzato   del   sistema.   In   tutti   i   modi   non  approfondiamo, in quanto per capire bene bisogna introdurre il concetto di i­node. Ora vediamo la struttura del file system. In Unix e di conseguenza anche in Linux non esistono le  lettere di unità. Quindi dimentichiamoci dell'hard disk C:, del lettore cd­rom D:, ecc... Tutte le  periferiche sono accessibili dalla directory root (radice) “/”. Ma allora, come si accede ad un hard  disk o ad un cd­rom? Allora vediamo di introdurre il concetto di directory di mount, o punto di  mount.   Esistono   nel   file­system   di   Linux   delle   directory   fittizie,   che   non   contengono   file   che  risiedono   nell'hard   disk,   ma   che   possono   essere   utilizzate   per   “visualizzare”   (attenzione,   non  contenere) il contenuto di un cd­rom o di una partizione di disco rigido, o anche di qualche unità  che  sta  in  rete. In genere queste directory si trovano nella directory  /mnt, ma possono stare  in  qualsiasi altra parte. Per renderle accessibili sarà necessario “montarle”, dire cioè al sistema di  renderle accessibili in un particolare punto di mount. Per far questo si utilizza il comando “mount”.  La sintassi è la seguente: mount dispositivo  punto_di_mount  ­t  tipo Il dispositivo viene individuato dando il file virtuale che identifica quel dispositivo nella directory  /dev (device). Ad esempio gli hard disk IDE sono rappresentati dai file /dev/hda /dev/hdb /dev/hdc  ecc. e le partizioni in un singolo hard disk con un numero progressivo dopo il nome di device:  /dev/hda1, /dev/hda2, ecc. I cd­rom, invece, spesso sono collegati su controller IDE e quindi anche  loro saranno rappresentati da /dev/hdc, ecc, ma in molte distribuzioni sono anche collegati tramite il  link /dev/cdrom, /dev/cdrom1, ecc. Quindi per montare un cd­rom e renderlo accessibile, si dovrà dare il comando mount /dev/cdrom /mnt/cdrom ­t auto (iso9660) Il tipo di filesystem, con l'opzione ­t auto verrà riconosciuto in automatico dal kernel.
  26. 26. Vediamo ora cosa ci presenta la directory radice, la root directory (/). Se diamo il comando ls troviamo una ventina di directory figlie. Allora, descriviamole un attimo: /bin  è una directory che contiene molti comandi binari ed eseguibili per tutti gli utenti. Questa  directory   sarà   scrivibile   solo   dall'utente   root,   così   che   un   utente   normale   non   potrà   installare,  disinstallare applicazioni e tantomeno potrà fare danni al sistema. Gli utenti normali avranno solo il  permesso di lettura ed esecuzione. Molti dei comandi di base si trovano in questa directory:  rm,  rmdir, ecc. /boot contiene i file di boot, di avviamento, la parte centrale del kernel (senza moduli che verranno  caricati   successivamente)   che   viene   caricata   come   prima   cosa   e   in   alcuni   casi   i   file   di  configurazione del bootloader. /dev  l'abbiamo   vista   prima,   contiene   dei   file   speciali,   virtuali,   che   rappresentano   i   dispositivi  collegati al computer: stampanti, harddisk, lettori dvd­cdrom, masterizzatori, schede video, schede  audio, mouse, modem, ecc. ecc. /etc è una directory destinata ai file di configurazione. Questi saranno i file di configurazione base,  poi   ogni   utente   potrà   personalizzare   le   varie   applicazioni   con   dei   file   di   configurazione   che  risiederanno nella propria home. /home  contiene le cartelle personali di ogni utente. Nella propria home ogni utente avrà i propri  documenti, le configurazioni personali e tutto ciò che vorrà.
  27. 27. /lib contiene i moduli del kernel, le parti del kernel che servono a gestire ad esempio le periferiche  di input/output, ma anche altre cose e tutte le librerie che sono condivise da più programmi. /proc  è   una   directory   virtuale,   creata   ogni   volta   che   si   avvia   il   sistema   e   viene   utilizzata  esclusivamente dal kernel. /root è la home del super­utente. /sbin contiene i binari eseguibili che vengono utilizzati generalmente dall'utente root. /tmp è una cartella accessibile a tutti anche in scrittura per i file temporanei. Meglio utilizzare una  /tmp  all'interno   della   home,   in   quanto   la  /tmp  comune   è   disponibile   per   tutti   e   più   o   meno  periodicamente l'utente root potrebbe ripulirla per liberare spazio nell'hard­disk.
  28. 28. /usr contiene molti comandi e molte librerie per i vari programmi e anche la documentazione delle  varie applicazioni. /var  è una directory dedicata a dei file che vengono scritti molto spesso. Tra questi ci sono i log  delle applicazioni, le code di stampa e altre cose di questo tipo. Ad esempio la Mandrake la utilizza  per scaricare i temporanei degli aggiornamenti. Ecco qui. Abbiamo concluso questo rapido tour nel file system di Linux. Per chi viene da sistemi  Microsoft, all'inizio avrà un certo disorientamento a vedere un contenuto dell'harddisk di questa  maniera, in quanto la differenza c'è. Ma con l'abitudine imparerete a girare in maniera tranquilla e  sicura tra le varie cartelle. Passiamo ora a vedere come si installa un programma sotto Linux. Il primo modo consiste nel compilare direttamente i sorgenti. Molte applicazioni per Linux sono,  infatti, open source. Quindi dalla relativa pagina web spesso è possibile scaricare i sorgenti, in C, in  Perl o in qualsiasi altro linguaggio. Toccherà a noi poi compilare il programma ed installarlo. La  cosa può  spaventare, dato che compilare un programma è spesso una procedura lunga, dove le  istruzioni di compilazione da dare sono molte: molti programmi sono composti da diversi moduli e  librerie e bisogna compilare ognuno di essi. Per fortuna che quasi sempre ci aiuta il programmatore  che, oltre ai sorgenti, ci fornisce anche degli strumenti per una compilazione automatica. Questo poi  lo vedremo dopo... L'installazione tramite compilazione diretta è più scomoda, in quanto la compilazione richiede un  certo tempo, ma si ha poi il vantaggio di avere un programma compilato a pennello per il proprio  hardware e per il proprio sistema, ottimizzando così anche il suo successivo utilizzo. Comunque esiste un tipo di installazione anche più semplice. Si possono trovare molto spesso anche  dei pacchetti precompilati che si installano in maniera molto semplice, come siete abituati a fare  con i sistemi Microsoft. I pacchetti RPM, sviluppati da RedHat e adottate poi da altre distribuzioni, 
  29. 29. Fedora, Mandrake, SuSe, ecc... I pacchetti DEB sviluppati da Debian. Altre forme di precompilati  con varie tecniche di installazione. Ad esempio L'OpenOffice.org precompilato si installa lanciando  il programma di installazione “install.sh” e vedrete che l'installazione è molto simile a quella che  avviene in ambiente Windows. Installare un precomilato è una procedura molto veloce, ma in genere un pacchetto precompilato è  creato in maniera molto generica, gonfiato con parti di codice per gestire cose che non servono, tipo  varie schede video, vari processori, ecc. Allora, vediamo ora come si compila un programma. Il  TARBALL. In genere dalla pagina web del programma è sempre possibile scaricare i sorgenti.  Questi sono racchiusi in un unico file che spesso ha due estensioni :  .tar.gz, il cosiddetto tarball.  Questo perché la moltitudine di file che costituiscono i sorgenti del programma sono stati trattati  prima   con   l'archiviatore  Tar,   che   serve   ad   archiviare   molti   file   in   un   file   unico,   e   sono   stati  compressi poi con il Gunzip, un compressore di file dello stesso tipo del più famoso Winzip, e che  serve a far occupare meno spazio in un disco fisso e a far scaricare meno byte dalla rete. Quindi una  volta scaricato, abbiamo un unico file che contiene tutti i sorgenti del programma da installare. Per decomprimere il file bisogna dare l'istruzione gzip ­d nome_file.tar.gz ottenendo così il file tar non compresso. L'opzione ­d indica appunto la decompressione. Senza, il  comando comprime. Quindi si scompone il tar con l'istruzione tar ­xvf nome_file.tar ottenendo   così  una  directory  con  all'interno  tutti   i  file  del   codice  sorgente  del  programma.   Le  opzioni: ­x sta per “estrai”, ­v fa visualizzare sul video l'elenco dei file estratti e ­f, invece, indica che segue il  nome del file in oggetto. Si può velocizzare la procedura con un'unica istruzione
  30. 30. tar ­xzvf nome_file.tar.gz che come vedete, il comando  tar, tramite l'opzione “­z” degizippa il  .tar.gz  prima di scomporlo.  Un'istruzione sola al posto di due. Attenzione: a volte si utilizza un compressore differente dal Gunzip, il Bzip2, un compressore un  po' più potente per i file grandi. La procedura in questo caso è simile: si decomprime col comando bunzip2 nomefile.tar.bz2 e poi si detara come prima, oppure in maniera veloce tar ­xjvf nomefile.tar.bz2 dove l'opzione ­z è sostituita dall'opzione ­j, che indica appunto di decomprimere un file bzip2 e non  un gzip.
  31. 31. E ora vediamo  come si compila  di solito il programma. Si entra nella directory che è risultata  dall'estrazione dal tarball. cd nome_directory Chiedendo una lista dei file con ls se ne notano alcuni coi nomi scritti completamente in maiuscolo,  tipo  README,  INSTALL.   Questi   sono   dei   file   ASCII   che   conviene   sempre   leggere   in   quanto  contengono informazioni importanti sulla compilazione e sull'installazione del programma. Molti  programmi possono, infatti, richiedere delle procedure e delle opzioni differenti dalla norma. In  genere comunque si compila in questo modo: ./configure che  lancerà   un  tool  automatico  per  il  riconoscimento  delle caratteristiche  della macchina  e  del  sistema sul quale sarà installato il programma. Vedrete sul monitor l'elenco dei risultati di tutte le  analisi che fa questo tool. Inoltre scriverà il Makefile, un file dove saranno scritti tutti i parametri  per la compilazione e per l'installazione, indispensabile per i passaggi successivi. Poi si va col comando make che  eseguirà   la compilazione vera e propria. Anche qui saranno visualizzati sul monitor tutti  i  comandi   ed   eventuali   messaggi   di   errore   nel   caso   la   compilazione   non   vada   a   buon   fine.   E'  interessante vedere che bella mole di comandi il programmatore ci ha risparmiato. Alla fine della compilazione si installa il programma (da root, naturalmente) con make install e a questo punto il programma sarà pronto per essere eseguito.
  32. 32. Piccola curiosità: per disinstallare il programma, dalla stessa directory make uninstall Queste sono le procedure più comuni, ma meglio leggere sempre i file con i nomi in maiuscolo, in  quanto a volte sarà necessario qualche altro passaggio per la compilazione e l'installazione. Allora, passiamo ora a qualche consiglio su una migrazione meglio gestibile. Per passare a Linux in maniera meno shoccante, conviene iniziare a sostituire pian piano i vari  programmi, che si utilizzano col vecchio sistema, con quelli che verranno poi utilizzati sotto Linux.  Molti di questi, infatti, esistono anche per i sistemi Microsoft. Iniziare con  sostituire ad esempio l'Office di  Microsoft  con l'OpenOffice.org, convertendo  pian  piano i documenti da .doc, ad esempio, in formato di OpenOffice.org (.sxw). Il Mozilla al posto di  Internet   Explorer   e   di   Outlook   Express,   avendo   anche   la   possibilità   di   importare   dai   vecchi  programmi la rubrica, i messaggi di posta e gli indirizzi internet tra i preferiti. L'MPlayer al posto  del Windows Media Player, per vedere DVD e file multimediali. Provare il The Gimp per fare foto  ritocco. Xchat al posto di mIRC per chi usa il sistema di messaggistica IRC. E molti altri programmi  che potranno essere trovati in rete. Questi sono tutti programmi che esistono anche per Windows, quindi si può iniziare a prenderci  familiarità senza dover installare ancora il sistema Linux.
  33. 33. Così facendo inizieremo a rendere la maggior parte dei nostri documenti accessibili e modificabili  anche da Linux. A questo punto, quando ci si sente pronti per il salto maggiore, si installa Linux. Personalmente  consiglio sempre di installare Linux su una partizione propria, ma in tutti i modi, le prime prove  potranno essere fatte con una distribuzione di tipo “live”, quelle famose che si avviavano da cd­rom. Poi si inizia quindi ad utilizzare Linux ricorrendo a Windows solo nei casi di estrema necessità, che  ammetto, ci saranno sempre: amici che mandano documenti con all'interno WordArt e altra roba  proprietaria o pagine web apribili solo da Internet Explorer, in quanto non rispettano gli standard  del web, causate da una stupida cecità da parte di molti professionisti della rete. Ed infine per ogni problema cercarne la soluzione in rete. Qualcuno ci sarà sempre che c'è passato  prima di voi. In primis, naturalmente, iscrivetevi alla mailing list del Telug, dove troverete spesso  qualcuno disposto ad aiutarvi.
  34. 34. Ed ora facciamo un elenco di buoni motivi per passare al Pinguino ed al software Open­Source. 1 – È quasi sempre gratuito. L'ho messo per primo perché indubbiamente è quello che più rende interessante la cosa all'utente  comune. Attenzione, però: quasi sempre. Non pensate che chi vi distribuisce software open source  non possa farsi pagare. 2 – È più stabile Linux è più stabile, come abbiamo detto prima. Quindi si ottimizza il tempo, niente più riavvii. 3 – È più sicuro. E si vive più tranquillamente, senza dover prendere particolari precauzioni contro virus e robaccia  del genere. In più non ci sarà più qualche fratello o nipote che vi fa impazzire il sistema installando  chissacosa. 4 – Le applicazioni sono sempre di più. Ormai potete lavorare al 100% come lavoravate prima con  Windows.   Qualche   mancanza   ancora   c'è   purtroppo:   ad   esempio   un   programma   equivalente  all'AutoCad,   ma   in   genere   ci   si   arrangia   bene   per   tutto   il   resto.   Le   mancanze   col   tempo   si  risolveranno: la comunità dell'open source è in continuo lavoro per sviluppare applicazioni sempre  migliori. 5 – Si riesce a rifiutare il monopolio privato, che come si sa è tutt'altro che positivo. 6 – Tutti i documenti sono salvati in un formato non proprietario, ma aperto. Quindi un domani  saranno   senpre   apribili   e   gestibili,   senza   il   bisogno   di   comprare   nuove   licenze.   Microsoft   ad  esempio ha previsto nella sua licenza la revocabilità (almeno fino all'Office 2000, poi spero cha  l'abbia tolta questa clausola). A quel punto, se un giorno Microsoft decidesse di togliervi la licenza  per Office, per costringervi a comprare le nuove versioni, avendo tutti i file in  .doc, vi trovereste  costretti ad acquistare. Beh, coi formati aperti questo non vale, poiché chiunque avrà la possibilità di  sapere com'è strutturato un file di un documento e quindi di riuscire ad interpretarlo. 7   –   Alcune   distribuzioni   sono   facili   da   usare   per   tutti,   comprendendo   tools   grafici   per  configurazioni. Molto simili all'ambiente Windows. Quindi, che Linux è difficile da utilizzare, non  è più vero. 8   –   Si   ha   a   disposizione   il   codice   sorgente   e  si   può   quindi   modificare   e   modellare   a   proprio  piacimento   qualsiasi   programma,   a   condizione   di   redistribuirlo   liberamente.   Per   questa  caratteristica,   i   programmi   open   source   nascono   e   si   sviluppano   grazie   alla   collaborazione   di  tantissimi programmatori. E si sa: l'unione fa la forza; 1000 cervelli possono avere idee migliori di  quelle di 10.
  35. 35. Ed ora un po' di obiettività: ci sono anche alcuni contro: 1 – Utilizzare Linux richiederà del tempo per l'educazione al nuovo sistema. Ci si metterà un po' ad  orientarsi   a   dovere   e   per   imparare   ad   utilizzare   le   nuove   applicazioni   open   source.   Quindi   è  veramente gratuito? Sulla carta sì, ma qualche mese fa, in una conferenza (Rimini, 27 maggio 2004,  intervento di Paolo Attivissimo), ho sentito questa frase: “E' gratuito, a patto che il tuo tempo non   valga nulla”. Quindi preparatevi a qualche difficoltà iniziale. La cosa sicura è che vale la pena di  fare l'investimento. Naturalmente parlo per chi si fa assistenza da sé; in caso si chiamino degli  specialisti il discorso cambia. 2 – Molte applicazioni per determinati lavori mancano ancora all'appello. Abbiamo visto prima, ad  esempio, l'equivalente dell'AutoCad. Beh, per ora si usa il dual­boot e al limite si ritorna “di là”, in  tutti i modi si può provare l'emulazione con il wine, un progetto che sotto Linux tenta di emulare le  API di Windows, rendendo possibile l'esecuzione di molti piccoli programmi eseguibili per DOS o  per Win32. I grandi programmi probabilmente non funzioneranno, ma molte applicazioni Windows  potranno essere utilizzate tranquillamente da Linux. 3 – Il problema maggiore: la compatibilità hardware. Molti hardware daranno problemi. Le ditte  continuano a vendere hardware fornendo driver per Microsoft e lasciando gli utenti di altri sistemi  operativi in mano alla comunità open­source, almeno per chi rende pubbliche le specifiche tecniche  del componente, altrimenti il discorso si fa più complicato. Preparatevi quindi ad avere problemi se  avete qualche hardware strano... Riguardo a schede di rete Wireless o a Soft­Modem Conexant, segnalo in una piccola parentesi un  progetto a pagamento: il DriverLoader, un programma in grado di leggere ed interpretare i driver  per Windows, rendendoli utilizzabili anche sotto Linux. Io l'ho provato con una schedina wireless  per il mio portatile e funziona molto bene.
  36. 36. Allora,  abbiamo visto brevemente  8 pro e 3 contro. Secondo voi  quindi conviene quantomeno  provare ad effettuare il passaggio? Io spero di avervi convinto, spero di avervi fatto una chiara presentazione delle caratteristiche di  Linux, sperando che possa esservi stata d'aiuto per convincervi a tentare la migrazione e che vi  possa essere stata d'aiuto per iniziare subito ad orientarsi discretamente bene nel nuovo sistema. ...e speriamo che domani Linux sia installato su qualche computer in più di oggi...
  37. 37. GRAZIE A TUTTI PER L'ATTENZIONE Per chiunque voglia, qui c'è il mio indirizzo e­mail e questo è il  mio sito web, dove sarà presto  disponibile una relazione dell'intervento (la presente) e probabilmente anche le registrazioni audio e  video. Poi ci sono i recapiti del Telug. Se vi iscrivete alla nostra mailing list, potrete ottenere lì molte  risposte ai problemi più comuni. Per l'iscrizione basta andare su www.telug.it.

×