IV LINUX DAY

27 NOVEMBRE 2004

LINUX

NASCITA E

CARATTERISTICHE VINCENTI


relatore: Maurizio Antonelli




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.



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.


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.



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



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



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



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, 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. E' 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.



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. È utilizzabile anche per rinominare un file, naturalmente.



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.



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.



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



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.



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.



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.


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.



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.



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


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.



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



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



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


/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, 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


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.



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.


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.



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.



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.



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.



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




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.


Ringraziamenti >>>

Creative Commons LicenseLevel Triple-A conformance icon,           W3C-WAI Web Content Accessibility Guidelines 1.0

Statistiche di accesso