1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
6 <meta name="generator" content=
7 "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
8 <meta http-equiv="Content-Type" content=
9 "text/html; charset=iso-8859-1">
10 <meta name="generator" content=
11 "Docutils 0.5: http://docutils.sourceforge.net/">
13 <title>Sistemi operativi</title>
14 <style type="text/css">
20 Copyright: This stylesheet has been placed in the public domain - free to edit and use for all uses.
24 font: 100% sans-serif;
42 background-color: transparent;
46 text-decoration: none;
51 text-decoration: none;
52 background-color: transparent;
65 margin: 0.5em 0 1em 0;
71 background-color: transparent;
76 background-color: transparent;
80 text-decoration: none;
104 h1, h2, h3, h4, h5, h6 {
106 background-color: transparent;
113 margin-bottom: 0.5em;
114 border-bottom: 2px solid #aaa;
119 margin-bottom: 0.5em;
120 border-bottom: 1px solid #aaa;
125 margin-bottom: 0.5em;
131 margin-bottom: 0.5em;
137 margin-bottom: 0.5em;
143 margin-bottom: 0.5em;
151 margin-bottom: 1.5em;
154 div.admonition, div.note, div.tip, div.caution, div.important {
157 border-top: 1px solid #aaa;
158 border-left: 1px solid #aaa;
159 border-bottom: 2px solid #555;
160 border-right: 2px solid #555;
164 background: transparent url('../images/important.png') 10px 2px no-repeat;
168 background: transparent url('../images/caution.png') 10px 2px no-repeat;
172 background: transparent url('../images/note.png') 10px 2px no-repeat;
176 background: transparent url('../images/tip.png') 10px 2px no-repeat;
179 div.admonition-example {
180 background: transparent url('../images/tip.png') 10px 2px no-repeat;
183 div.admonition-critical-example {
184 background: transparent url('../images/important.png') 10px 2px no-repeat;
189 border-bottom: 1px solid #aaa;
195 border: 1px solid gray;
196 border-collapse: collapse;
201 table.docutils caption {
205 table.docutils td, table.docutils th {
206 padding: 0.25em 0.5em;
210 background-color: #dddddd;
218 border-top: 1px solid #aaa;
219 border-left: 1px solid #aaa;
220 border-bottom: 2px solid #555;
221 border-right: 2px solid #555;
227 border-bottom: 1px solid #aaa;
241 <div class="document" id="sistemi-operativi">
242 <h1 class="title">Sistemi operativi</h1>
244 <h2 class="subtitle" id=
245 "appunti-introduttivi-ai-sistemi-operativi">Appunti
246 introduttivi ai sistemi operativi</h2>
249 <table class="docutils field-list" frame="void" rules="none">
250 <col class="field-name">
251 <col class="field-body">
255 <th class="field-name">Author:</th>
257 <td class="field-body">Andrea Manni</td>
261 <th class="field-name">Copyright:</th>
263 <td class="field-body">GFDL</td>
267 <th class="field-name">Version:</th>
269 <td class="field-body">1.5</td>
275 <div class="contents topic" id="indice-degli-argomenti">
276 <p class="topic-title first">Indice degli argomenti</p>
280 <a class="reference internal" href="#sistema-operativo"
281 id="id6" name="id6">Sistema operativo</a>
284 <li><a class="reference internal" href=
285 "#concetti-introduttivi" id="id7" name="id7">Concetti
286 introduttivi</a></li>
288 <li><a class="reference internal" href="#hardware" id=
289 "id8" name="id8">Hardware:</a></li>
291 <li><a class="reference internal" href="#software" id=
292 "id9" name="id9">Software:</a></li>
294 <li><a class="reference internal" href="#input" id=
295 "id10" name="id10">Input</a></li>
297 <li><a class="reference internal" href="#output" id=
298 "id11" name="id11">Output</a></li>
300 <li><a class="reference internal" href="#errors" id=
301 "id12" name="id12">Errors</a></li>
304 <a class="reference internal" href=
305 "#interfaccia-utente" id="id13" name=
306 "id13">Interfaccia utente</a>
309 <li><a class="reference internal" href=
310 "#riga-di-comando" id="id14" name="id14">Riga di
313 <li><a class="reference internal" href=
314 "#interfaccia-grafica" id="id15" name=
315 "id15">Interfaccia grafica</a></li>
317 <li><a class="reference internal" href=
318 "#touch-screen" id="id16" name="id16">Touch
326 <a class="reference internal" href=
327 "#caratteristiche-di-un-sistema-operativo" id="id17"
328 name="id17">Caratteristiche di un Sistema Operativo</a>
331 <li><a class="reference internal" href="#multitasking"
332 id="id18" name="id18">Multitasking</a></li>
334 <li><a class="reference internal" href="#multiutenza"
335 id="id19" name="id19">Multiutenza</a></li>
339 <li><a class="reference internal" href="#id1" id="id20"
340 name="id20">Sistema operativo</a></li>
343 <a class="reference internal" href=
344 "#i-vari-sistemi-operativi" id="id21" name="id21">I vari
345 Sistemi Operativi</a>
348 <li><a class="reference internal" href="#ms-windows"
349 id="id22" name="id22">MS Windows</a></li>
351 <li><a class="reference internal" href="#unix" id=
352 "id23" name="id23">Unix</a></li>
354 <li><a class="reference internal" href="#gnu-linux" id=
355 "id24" name="id24">Gnu/Linux</a></li>
357 <li><a class="reference internal" href="#bsd" id="id25"
358 name="id25">BSD</a></li>
360 <li><a class="reference internal" href="#apple-mac-os"
361 id="id26" name="id26">Apple Mac OS</a></li>
365 <li><a class="reference internal" href="#kernel" id="id27"
366 name="id27">Kernel</a></li>
368 <li><a class="reference internal" href="#le-distribuzioni"
369 id="id28" name="id28">Le distribuzioni</a></li>
372 <a class="reference internal" href="#memoria-virtuale"
373 id="id29" name="id29">Memoria virtuale</a>
376 <li><a class="reference internal" href=
377 "#swap-space-per-linux" id="id30" name="id30">Swap
378 space per Linux</a></li>
382 <li><a class="reference internal" href="#devices-a-blocchi"
383 id="id31" name="id31">Devices a blocchi</a></li>
385 <li><a class="reference internal" href=
386 "#devices-a-caratteri-seriali" id="id32" name=
387 "id32">Devices a caratteri (seriali)</a></li>
390 <a class="reference internal" href="#dati" id="id33"
394 <li><a class="reference internal" href="#dato" id=
395 "id34" name="id34">Dato</a></li>
397 <li><a class="reference internal" href="#metadato" id=
398 "id35" name="id35">Metadato</a></li>
403 <a class="reference internal" href="#i-filesystem" id=
404 "id36" name="id36">I filesystem</a>
407 <li><a class="reference internal" href="#file" id=
408 "id37" name="id37">File</a></li>
410 <li><a class="reference internal" href="#filesystem"
411 id="id38" name="id38">Filesystem</a></li>
415 <li><a class="reference internal" href=
416 "#gestione-dei-pacchetti" id="id39" name="id39">Gestione
417 dei Pacchetti</a></li>
420 <a class="reference internal" href="#elementi" id="id40"
421 name="id40">Elementi:</a>
424 <li><a class="reference internal" href="#dipendenze"
425 id="id41" name="id41">Dipendenze</a></li>
427 <li><a class="reference internal" href="#conflitti" id=
428 "id42" name="id42">Conflitti</a></li>
434 <p>Generato con: <a class="reference external" href=
435 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
437 <p>Appunti introduttivi alla trattazione dei sistemi operativi,
438 le loro caratteristiche, componenti essenziali, tratti
441 <div class="section" id="sistema-operativo">
442 <h1><a class="toc-backref" href="#id6">Sistema
445 <p>Il sistema operativo e' un software, ma per poter
446 comprendere la funzione e il suo particolare rapporto con gli
447 altri software disponibili sul vostro computer sara' prima
448 necessario introdurre alcune sue caratteristiche e elementi
451 <p>Quando questi concetti saranno stati acquisiti verra'
452 presentata una definizione <em>ragionevole</em> del termine
453 "sistema operativo".</p>
455 <div class="section" id="concetti-introduttivi">
456 <h2><a class="toc-backref" href="#id7">Concetti
457 introduttivi</a></h2>
459 <p>Un elaboratore e' una macchina in grado di seguire una
460 serie di istruzioni al fine di permettere all'utente di
461 raggiungere il risultato voluto. Possiamo partire da alcuni
462 concetti di base per poterne studiare le
466 <div class="section" id="hardware">
467 <h2><a class="toc-backref" href="#id8">Hardware:</a></h2>
470 Tutto quanto c'e' di <em>fisico</em> in un computer,
471 quanto ha un peso (in senso materiale: grammi o
472 kilogrammi) e occupa dello spazio. Il monitor, la
473 tastiera, i supporti di storaggio dati, il computer
474 stesso in ogni suo singolo componente interno e
475 periferico sono l'<strong>hardware</strong> del computer,
476 dall'inglese <em>ferraglia</em>.
480 <div class="section" id="software">
481 <h2><a class="toc-backref" href="#id9">Software:</a></h2>
484 Tutti i dati e i programmi (questi ultimi altro non sono
485 che sequenze di istruzioni, quindi dati) che vengono
486 elaborati o prodotti nel corso dell'esecuzione del
487 programma. I software e i dati tipicamente risiedono su
488 una memoria RAM volatile al momento dell'esecuzione, ma
489 vengono archiviati sui <em>supporti di storaggio</em>
490 (hard disk, CD-Rom, floppy...) in base alle necessita'
495 <div class="section" id="input">
496 <h2><a class="toc-backref" href="#id10">Input</a></h2>
499 I flussi di dati in ingresso inseriti generalmente
500 dall'utente tramite le perifieriche dedicate a queste
501 funzioni. Tastiera e mouse sono perifieriche di <em>solo
502 Input</em>, una scheda di rete invece e' una periferica
503 che puo' ricevere e trasmette dati. Questi dati sono
504 utilizzati per modificare il corso dei programmi, nel
505 caso ci siano piu' programmi utilizzati
506 contemporaneamente per raggiungere il risultato voluto
507 dall'operatore potra' accadere che il nostro programma
508 riceva Input da un altro programma. Nei sistemi operativi
509 <em>Unix si fa riferimento allo **standard Input*</em>
510 (stdin, la sua collocazione piu' elementare in un sistema
511 basato sul kernel *Linux si basa sul device <tt class=
512 "docutils literal"><span class=
513 "pre">/dev/input</span></tt> ).
517 <div class="section" id="output">
518 <h2><a class="toc-backref" href="#id11">Output</a></h2>
521 I flussi di dati in uscita, normalmente i risultati
522 aspettati dall'operatore. Tipiche periferiche di output
523 dedicate sono i monitor, le casse audio, le stampanti.
524 Come nel caso dell'input possiamo considerare periferiche
525 come le schede di rete come di input/output. Nei sistemi
526 operativi <em>Unix si fa riferimento allo **standard
527 output*</em> (stdout, fisicamente puo' essere dirottato
528 sul diverse periferiche a seconda della natura dei dati
529 (pensiamo a un file audio: verra' mandato alla scheda
530 audio e da questa alle casse. Sarebbe poco significativo
531 se visualizzato a schermo, e poco gradevole il caso
532 inverso: ad es. telefonare a qualcuno e sentirsi
533 rispondere da un FAX.) ma normalmente ci aspettiamo di
534 vedere i risultati <em>a schermo</em>: sul nostro
535 terminale <tt class="docutils literal"><span class=
536 "pre">/dev/tty*</span></tt> o equivalente. ).
539 <p>Stdout verso un file:</p>
540 <pre class="literal-block">
544 <p>Stdout di un comando verso lo stdin di un altro comando
546 <pre class="literal-block">
550 <p>Stdout verso il primo teletype virtuale [ALT+F1]:</p>
551 <pre class="literal-block">
552 echo "Questo l'ho scritto io" > /dev/tty1
556 <div class="section" id="errors">
557 <h2><a class="toc-backref" href="#id12">Errors</a></h2>
560 Non sempre le nostre aspettative nei confronti
561 dell'elebarotore vengono soddisfatte, talvolta il nostro
562 programma genera errori e un risultato solo parziale. Nei
563 sistemi <em>Unix questo tipo di *output</em> viene
564 indicato come <strong>standard error</strong> (stderr) e
565 puo' essere reindirizzato su una canale diverso dal
566 normale output. Ad esempio suonando una serie di brani
567 musicali l'output viene indirizzato fino alle casse del
568 computer, ma se un brano risulta illeggibile viene
569 visualizzato un errore a <em>schermo</em>. Situazione
570 simile nel caso di una stampa: l'output va' alla
571 stampante me se durante la stampa si generano messaggi di
572 errore questi non compariranno sulla carta.
575 <p>Questa possibilita' di canalizzare lo stdout e lo stderr
576 verra' utile in seguito quando si avra' l'esigenza di
577 pianificare operazioni svolte in automatico (es. script di
578 back-up) durante le quali l'operatore non e' disponibile
579 per leggere gli errori, che potranno essere re-indirizzati
580 su un file di log o altro.</p>
582 <p>Stderr verso un file:</p>
583 <pre class="literal-block">
584 ls non-esiste 2> error
588 <div class="section" id="interfaccia-utente">
589 <h2><a class="toc-backref" href="#id13">Interfaccia
593 Il sistema formato da periferiche (es tastiera e monitor)
594 che permette lo scambio di informazioni tra l'utente e
595 l'elaboratore. Tutti i sistemi multifunzione (cioe' che
596 possono svolgere piu' di un singolo compito) sono dotati
597 di una interfaccia utente. I sistemi
598 <em>multi-pourpose</em> hanno interfacce utente piu'
599 sofisticate rispetto alle macchine dedicate: ad es. un
600 personal computer ha un'interfaccia utente piu' completa
601 rispetto ad una console per videogiochi o a un cellulare.
602 Le interfacce utente possono essere di diverso tipo:
605 <div class="section" id="riga-di-comando">
606 <h3><a class="toc-backref" href="#id14">Riga di
609 <p>CLI (Common Line Interface). Interfaccia testuale:
610 input e output sono solo o prevalentemente caratteri,
611 quindi niente grafica, finestre, icone. E' ad esempio
612 l'interfaccia che ci si trova davanti a un terminale
613 *Unix ( CTR + ALT + F1 sotto Gnu/Linux) oppure stabilendo
614 una sessione remota con SSH o telnet.</p>
617 <div class="section" id="interfaccia-grafica">
618 <h3><a class="toc-backref" href="#id15">Interfaccia
621 <p>Permette la visualizzazione di icone finestre e
622 quant'altro, grazie ad un server grafico che trasforma le
623 informazioni piu' semplici in una rappresentazione
624 grafica. Generalmente piu' <em>pesante</em> dal punto di
625 visto delle risorse di sistema del computer, permette di
626 eseguire solo le operazioni espressamente previste e rese
627 disponibili dai vari <em>menu</em>, a differenza della
628 CLI che puo' permettere la combinazioni di singoli
629 comandi (pipes) e la creazione di script per
630 automatizzare operazioni anche di relativa
633 <p>Generalmente si accompagna a un sistema di puntamento
634 come un mouse, touch pad, tavoletta grafica. track
637 <p>La superiore complessita' la rende sconsigliabile per
638 le sessioni remote, per lo meno quando e' possibile
639 svolgere le stesse operazione tramite un'interfaccia CLI.
640 Questo per non sottrarre risorse ai software di nostro
641 interesse e per motivi di sicurezza (piu' una cosa e'
642 complessa e piu' e' soggetta a problemi di
646 <div class="section" id="touch-screen">
647 <h3><a class="toc-backref" href="#id16">Touch
650 <p>Schermi sensibili al tocco, come su palmari, cellulari
651 IPhone o i <em>tablet PC</em>. Le caratteristiche sono
652 analoghe a una interfaccia grafica, cambia solo il
653 sistema di puntamento (non avete un mouse o un touch pad
654 ma si tocca direttamente lo schermo con una penna o le
660 <div class="section" id=
661 "caratteristiche-di-un-sistema-operativo">
662 <h1><a class="toc-backref" href="#id17">Caratteristiche di un
663 Sistema Operativo</a></h1>
665 <p>Alcune delle caratteristiche dei sistemi operativi ci
666 aiuteranno a capire la funzione prevalente di questo in
667 rapporto con gli altri programmi in esecuzione sul
670 <div class="section" id="multitasking">
671 <h2><a class="toc-backref" href=
672 "#id18">Multitasking</a></h2>
675 Capacita' di un OS di eseguire piu' programmi
679 <p>Un personal computer generalmente ha in esecuzione
680 centinaia di singoli programmi (o per la precisione:
681 <em>processi</em>), oltre a quelli direttamente lanciati
682 dall'utente ce ne saranno altri dedicati alla gestione
683 dell'hardware o al mantenimento del sistema operativo.</p>
685 <p>Una cellulare (si pensi ai vecchi modelli) o una piccola
686 calcolatrice invece possono eseguire solo un compito (task)
689 <p>Tipicamente risiede nel <a class="reference internal"
690 href="#kernel">kernel</a> la capacita' del sistema di poter
691 eseguire con stabilita' piu' processi, utilizzando uno
692 <a class="reference external" href=
693 "http://it.wikipedia.org/wiki/Sistema_operativo#Scheduler">scheduler</a>.</p>
696 <div class="section" id="multiutenza">
697 <h2><a class="toc-backref" href=
698 "#id19">Multiutenza</a></h2>
701 I sistemi multiutenti possono avere piu' utenti attivi
702 contemporaneamente (ma anche uno alla volta a seconda
703 della disponibilita' di input).
706 <p>Il sistema e' comunque in grado di distinguere tra gli
707 utenti: ad es. mia sorella non ha la possibilita' di
708 eliminare le MIE foto, e viceversa. Per garantire una
709 <em>vera</em> multiutenza sara' necessario un sistema di
710 autenticazione per distinguere gli utenti, oltre a
711 funzionalita' delegate al file system per limitare accessi
712 ed esecuzione dei file ai diversi utenti di sistema. Ad
713 esempio il filesystem <a class="reference external" href=
714 "http://it.wikipedia.org/wiki/FAT32#FAT32">FAT32</a> dei
715 vecchi sistemi Windows (e usato sulla maggior parte delle
716 chiavette USB e memory card varie) non permette la gestione
717 della propieta' dei files.</p>
719 <p>La presenza di piu' utenti in genere porta a una
720 gerarchia tra questi (ad esempio <em>user, power user,
721 administrator</em> sotto sistemi Windows o l'utente
722 <em>root</em> per sistemi Unix). In genere si ha un solo
723 utente abilitato alle modifiche delle funzionalita' del
724 sistema (l'amministratore, che puo' abilitare le
725 periferiche o installare nuovo software nel sistema) e
726 semplici <em>utenti di sistema</em> (<tt class=
727 "docutils literal"><span class="pre">system</span>
728 <span class="pre">users</span></tt>) che possono solo
729 usufruire dei programmi messi a loro disposizione. Questa
730 soluzione, oltre che a garantire la presenza di un account
731 in grado di rimediare in caso di emergenza a eventuali
732 errori fatti da altri, permette di avere un ambiente di
733 lavoro piu' sicuro dato che una volta loggati come
734 <em>utenti di sistema</em> non si ha la possibilita' di
735 causare danni gravi all'intero sistema per una semplice
736 distrazione. <strong>Mai lavorare come amministratori
737 quando non e' assolutamente necessario.</strong></p>
741 <div class="section" id="id1">
742 <h1><a class="toc-backref" href="#id20">Sistema
745 <dl class="docutils">
746 <dt>Possiamo ora cercare di dare una definizione di sistema
749 <dd>Il Sistema Operativo (OS: Operative System) e'
750 quell'insieme di software che servono per far funzionare il
751 sistema <em>in generale</em> piu' che svolgere un compito
752 particolare come modificare un file o visualizzare un
753 video. E' l'<em>ambiente</em> in cui potranno convivere ed
754 essere utilizzati tutti i software applicativi usati
758 <p>Sara' il sistema operativo a identificare gli utenti al
759 momento di cominciare una sessione di lavoro, e garantisce
760 gli accessi ai files in base a queste credenziali (e alle
761 caratteristiche del file system, cosa che approfondiremo
762 successivamente).</p>
764 <p>L'OS si pone poi come tramite tra i singoli applicativi e
765 le risorse di sistema. Ad esempio se sono disponibili diversi
766 programmi in grado di produrre stampe ma una sola stampante,
767 sara' il sistema operativo a gestire le code di stampa in
768 modo che non si intralcino (a dire il vero l'esempio potrebbe
769 non essere tecnicamente esatto. Ma rende l'idea.) I singoli
770 programmi non utilizzeranno direttamente la stampante, ma
771 semplicemente si <em>interfacceranno</em> all'OS al momento
774 <p>Quando installiamo un nuovo editor di testo non ci
775 preoccupiamo di fornirgli un <em>driver</em> per la stampa.
776 Sappiamo che questo e' gia' disponibile al sistema operativo,
777 e i singoli applicativi si appoggeranno a questo. Questo
778 "<em>layer di astrazione</em>" sull'utilizzo delle
779 periferiche (al quale partecipa anche il kernel) semplifica
780 di molto la realizzazione e l'installazione dei singoli
781 software, garantendo maggiore stabilita' all'intero
782 <em>sistema</em>.</p>
784 <p>In modo simile tutti gli applicativi che utilizziamo si
785 <em>appoggiano</em> al sistema operativo, tanto che siamo
786 abituati ad avere <em>versioni diverse</em> degli stessi
787 software rilasciate per i <em>diversi sistemi</em> (c'e' una
788 versione di Openoffice.org per sistemi Microsoft, GnuLinux,
789 Apple e cosi' via). Ovviamente la versione per il sistema
790 <a class="footnote-reference" href="#id3" id="id2" name=
791 "id2">[1]</a> <tt class="docutils literal"><span class=
792 "pre">X</span></tt> generalmente non funziona sul sistema
793 <tt class="docutils literal"><span class=
794 "pre">Y</span></tt>.</p>
796 <table class="docutils footnote" frame="void" id="id3" rules=
805 <td class="label"><a class="fn-backref" href=
808 <td>Sarebbe piu' corretto parlare di incompatibilita'
809 tra i membri di famglie di sistemi operativi tra loro
810 diversi, ma allo stato attuale delle nostre conoscenze
811 non complichiamoci la vita: l'eseguibile di
812 Openoffice.org per Windows non funziona su
818 <p>I sistemi operativi, come del resto i singoli applicativi,
819 sono rilasciati (quando possibile) in versioni a 32 o 64 bit,
820 oppure per architetture diverse (x86, PPC, Arm, RISC...). In
821 genere si indica la possibilita' di un OS di <em>girare</em>
822 su architetture hardware diverse col termine
823 <em>portabilita'</em>. Una maggiore portabilita', oltre che
824 per l'intrinseco vantaggio, e' spesso indice di maggiore
825 stabilita' in quanto il test del sistema in ambienti diversi
826 permette di evidenziare <em>bug</em> difficilmente
827 riscontrabili altrimenti.</p>
830 <div class="section" id="i-vari-sistemi-operativi">
831 <h1><a class="toc-backref" href="#id21">I vari Sistemi
834 <p>Per ulteriori informazioni sulle caratteristiche di alcuni
835 dei sistemi operativi attualemnte in uso si seguano i
838 <div class="section" id="ms-windows">
839 <h2><a class="toc-backref" href="#id22">MS Windows</a></h2>
843 <li><a class="reference external" href=
844 "http://it.wikipedia.org/wiki/Windows">http://it.wikipedia.org/wiki/Windows</a></li>
849 <div class="section" id="unix">
850 <h2><a class="toc-backref" href="#id23">Unix</a></h2>
852 <p><a class="reference external" href=
853 "http://it.wikipedia.org/wiki/Unix">http://it.wikipedia.org/wiki/Unix</a></p>
856 <div class="section" id="gnu-linux">
857 <h2><a class="toc-backref" href="#id24">Gnu/Linux</a></h2>
861 <li><a class="reference external" href=
862 "http://it.wikipedia.org/wiki/Gnu/Linux">http://it.wikipedia.org/wiki/Gnu/Linux</a></li>
867 <div class="section" id="bsd">
868 <h2><a class="toc-backref" href="#id25">BSD</a></h2>
872 <li><a class="reference external" href=
873 "http://it.wikipedia.org/wiki/Berkeley_Software_Distribution">
874 http://it.wikipedia.org/wiki/Berkeley_Software_Distribution</a></li>
876 <li><a class="reference external" href=
877 "http://it.wikipedia.org/wiki/FreeBSD">http://it.wikipedia.org/wiki/FreeBSD</a></li>
879 <li><a class="reference external" href=
880 "http://it.wikipedia.org/wiki/Openbsd">http://it.wikipedia.org/wiki/Openbsd</a></li>
885 <div class="section" id="apple-mac-os">
886 <h2><a class="toc-backref" href="#id26">Apple Mac
891 <li><a class="reference external" href=
892 "http://it.wikipedia.org/wiki/Mac_OS">http://it.wikipedia.org/wiki/Mac_OS</a></li>
894 <li><a class="reference external" href=
895 "http://it.wikipedia.org/wiki/Mac_OS_X">http://it.wikipedia.org/wiki/Mac_OS_X</a></li>
901 <div class="section" id="kernel">
902 <h1><a class="toc-backref" href="#id27">Kernel</a></h1>
905 In informatica, il <strong>kernel</strong> Costituisce il
906 nucleo di un sistema operativo. Si tratta di un software
907 avente il compito di fornire ai processi in esecuzione
908 sull'elaboratore un accesso sicuro e controllato
909 all'hardware. Dato che possono esserne eseguiti
910 simultaneamente più di uno, il kernel ha anche la
911 responsabilita'Ã di assegnare una porzione di
912 tempo-macchina e di accesso all'hardware a ciascun
913 programma (multitasking).
916 <p>Tra tutti i processi in esecuzione su un computer uno ha
917 un'importanza speciale: il kernel.</p>
919 <p>Il kernel ha il compito di far funzionare l'hardware
920 (tastiera, monitor, RAM, CPU) e di attribuire le risorse di
921 sistema agli altri processi, ne consegue che un
922 malfunzionamento nel kernel (<em>kernel panic</em>) puo'
923 compromettere qualunque altro processo in esecuzione.
924 Considerando che il kernel gestisce anche le periferiche di
925 input / output, nel caso di blocco del kernel l'intera
926 macchina potrebbe diventare irraggiungibile. In questo caso
927 l'unita soluzione sarebbe un <em>rese</em> hardware della
928 scheda madre, con conseguente perdita di tutti i dati in 3 e
929 possibile corruzione dei filesystem.</p>
931 <p>Il kernel gestisce l'attribuzione della memoria RAM tra i
932 vari processi in esecuzione: tramite la protezione della
933 <a class="reference external" href=
934 "http://it.wikipedia.org/wiki/Memoria_protetta">memoria</a>
935 si evita che un applicativo andato fuori controllo possa
936 trasbordare nello spazio RAM di un altro, compromettendo
937 anche questo e magari l'intero sistema. La protezione della
938 memoria e' una funzione necessaria per garantire l'efficenza
939 del multitasking.</p>
941 <p>Debian utilizza un Kernel Linux. Windows attualmente usa
942 un kernel di derivazione NT. Mac OSX utilizza un kernel
943 "Darwin" su un sistema operativo derivato da BSD (Unix). Il
944 sistema operativo e' composto da una serie di processi che
945 girano sopra il kernel. I software applicativi a loro volta
946 girano sul sistema operativo.</p>
948 <p>Il kernel e' sostituibile e aggiornabile rispetto al
949 sistema operativo.</p>
951 <table border="1" class="docutils">
971 <td>Microsoft Windows XP</td>
979 <td>kernel di MS Windows XP</td>
985 <div class="section" id="le-distribuzioni">
986 <h1><a class="toc-backref" href="#id28">Le
987 distribuzioni</a></h1>
989 <p>Differenze principali tra le varie distribuzioni:</p>
994 <li>utility di installazione</li>
996 <li>gestione dei pacchetti: es dpkg e RPM (portage e
999 <li>numero e qualita' dei pacchetti</li>
1003 <li>target di utilizzo</li>
1005 <li>tempi di rilascio</li>
1010 <li><a class="reference external" href=
1011 "http://it.wikipedia.org/wiki/Distribuzione_Linux">http://it.wikipedia.org/wiki/Distribuzione_Linux</a></li>
1013 <li><a class="reference external" href=
1014 "http://it.wikipedia.org/wiki/Categoria:Distribuzioni_Linux">
1015 http://it.wikipedia.org/wiki/Categoria:Distribuzioni_Linux</a></li>
1020 <div class="section" id="memoria-virtuale">
1021 <h1><a class="toc-backref" href="#id29">Memoria
1024 <p>O memoria di swap. Si utilizza quando il sistema esaurisce
1025 la RAM fisicamente disponibile. Si utilizza un altro supporto
1026 di storaggio per sopperire alla mancanza di RAM. Tipicamente
1027 viene usato l'hard disk, che e' piu' lento della RAM.</p>
1029 <p>Con il termine swap si intende, in informatica,
1030 l'estensione della capacita'Ã della memoria volatile
1031 complessiva del computer, oltre il limite imposto dalla
1032 quantita'Ã di RAM installata, attraverso l'utilizzo di
1033 uno spazio su un altro supporto fisico, ad esempio il disco
1036 <p>A seconda del sistema operativo utilizzato è possibile
1037 avere file di swap (chiamato anche 'Memoria virtuale'),
1038 residenti nel normale file system del sistema, oppure
1039 partizioni di swap, cioe'è sezioni di disco integralmente
1040 dedicate allo swap ed inizializzate con un proprio specifico
1041 tipo di file system. L'uso della partizione è generalmente
1042 migliore dal punto vista delle prestazioni, perché evita che
1043 lo swap vada soggetto alla tipica di alcuni file system. Per
1044 contro, occupa una delle (poche) partizioni disponibili sul
1047 <p>In pratica, quando la memoria RAM libera non è più
1048 sufficiente per contenere tutte le informazioni che servono
1049 ai programmi, il sistema operativo si fa carico di spostare
1050 una certa quantita'Ã di dati (quelli meno recentemente
1051 utilizzati) dalla memoria volatile a quella di massa,
1052 liberando quindi una parte della RAM per permettere il
1053 corretto funzionamento dei programmi. È chiaro che nel
1054 momento in cui si rende necessaria tale operazione, le
1055 prestazioni del sistema crollano bruscamente, essendo la
1056 scrittura su hard disk molto più lenta di quella in RAM
1057 (oltre cento volte, al 2006).</p>
1059 <div class="section" id="swap-space-per-linux">
1060 <h2><a class="toc-backref" href="#id30">Swap space per
1063 <p>Sui sistemi basati sul kernel di Linux viene creata una
1064 partizione con un file-system dedicato per la memoria
1065 virtuale: una o piu' cosidette <em>partizioni di
1068 <p>Per le normali work-station si segue la regola di creare
1069 una partizione di swap pari al doppio della memoria RAM, ma
1070 non superiore a <tt class="docutils literal"><span class=
1071 "pre">512MB</span></tt> (questo per via della buona
1072 ottimizzazione del gestore della memoria di Linux:
1073 raramente nell'uso normale si arriva ad aver bisogno di
1074 piu' di <tt class="docutils literal"><span class=
1075 "pre">512MB</span></tt> di swap.</p>
1077 <p>Caso particolare sono i portatili: vista la lentezza
1078 degli Hard Disk dei portatili e il maggior consumo
1079 elettrico causato dall'utilizzo di questi supporti per lo
1080 swap si tende ad avere un po' piu' di RAM (<tt class=
1081 "docutils literal"><span class="pre">512MB</span>
1082 <span class="pre">-</span> <span class=
1083 "pre">1GB</span></tt>) ed evitare completamente lo spazio
1084 di swap. Ma attenzione: se si vuole utilizzare il
1085 <em>Suspend to disk</em> (<a class="reference external"
1087 "http://www.e-moka.net/2005/06/20/suspend-to-ramdisk-con-linux/">S4</a>)
1088 servira' una partizione di swap pari a circa il doppio
1093 <div class="section" id="devices-a-blocchi">
1094 <h1><a class="toc-backref" href="#id31">Devices a
1097 <p>I device a blocchi sono suddividisibili in blocchi (unita)
1098 ed e' possibile scrivere e/o leggere su questi (input/output)
1099 Ad esempio gli hard disk o i supporti di storaggio in
1100 generale sono visti dal kernel come block device. Tipicamente
1101 per poterli utilizzare al fine dello storaggio dati sara'
1102 necessario creare un filesystem su di essi.</p>
1105 <div class="section" id="devices-a-caratteri-seriali">
1106 <h1><a class="toc-backref" href="#id32">Devices a caratteri
1109 <p>I device seriali sono continui, e non prevedono il
1110 "ritorno" (si pensi a una stampante, o all'output delle
1111 casse, a un terminale seriale) <a class="footnote-reference"
1112 href="#id5" id="id4" name="id4">[2]</a>.</p>
1114 <table class="docutils footnote" frame="void" id="id5" rules=
1121 <tbody valign="top">
1123 <td class="label"><a class="fn-backref" href=
1126 <td>Questa definizione di device a <em>caratteri</em>
1127 non e' esatta, ma allo stato attuale delle nostre
1128 conoscenze e necessita' risulta piu' utile
1129 caratterizzare i due tipi di device dal punto di vista
1130 funzionale. Una definizione piu' <em>tecnica</em> di
1131 questo particolare tipo di device dovrebbe citare il
1132 fatto che questi in genere non supportano <a class=
1133 "reference external" href=
1134 "http://it.wikipedia.org/wiki/Buffer_(informatica)">buffers</a>
1135 e non permettono di accedere ai dati in modalita'
1136 <a class="reference external" href=
1137 "http://en.wikipedia.org/wiki/Random_access">random_access</a>.
1138 Oltre al fatto che trattano singoli caratteri per volta
1139 invece che per <em>blocchi</em> di dati.</td>
1145 <div class="section" id="dati">
1146 <h1><a class="toc-backref" href="#id33">Dati</a></h1>
1148 <div class="section" id="dato">
1149 <h2><a class="toc-backref" href="#id34">Dato</a></h2>
1151 <p>Il termine dati e' fondamentale nell'informatica,
1152 essendo i dati l'oggetto e il risultato di tutto il nostro
1155 <p>Potremmo definire un dato come un'informazione
1156 elementare, significativa ed autonoma.</p>
1158 <p>Si prenda ad esempio un sistema realizzato per gestire
1159 elettronicamente la contabilita': il guadagno del mese di
1160 Gennaio 2009 potrebbe essere <tt class=
1161 "docutils literal"><span class="pre">1200</span></tt>.
1162 Oppure l'indirizzo di un contatto <tt class=
1163 "docutils literal"><span class="pre">Via</span>
1164 <span class="pre">Mazzini</span> <span class=
1165 "pre">8</span></tt>.</p>
1167 <p>Questi <em>valori</em> possono essere l'oggetto di
1168 elaborazioni, o il risultato di procedure che hanno
1169 manipolato altri dati.</p>
1172 <div class="section" id="metadato">
1173 <h2><a class="toc-backref" href="#id35">Metadato</a></h2>
1175 <p>I metadati sono informazioni che qualificano i dati.
1176 Essi non hanno un'esistenza e un valore autonomo, sono
1177 funzionali ai dati che descrivono e senza di essi non
1178 avrebbero valore.</p>
1180 <p>Tornando al precedente esempio del software per la
1181 contabilita', <tt class="docutils literal"><span class=
1182 "pre">Gennaio</span> <span class="pre">2009</span></tt>
1183 potrebbe essere un metadato, in quanto la sua funzione e'
1184 di descrivere il periodo a cui fa riferimento il dato
1185 <tt class="docutils literal"><span class=
1186 "pre">1200</span></tt>. Senza quest'ultimo non ci
1187 interesserebbe sprecare risorse di storaggio per conservare
1188 <tt class="docutils literal"><span class=
1189 "pre">Gennaio</span> <span class=
1190 "pre">2009</span></tt>.</p>
1192 <table border="1" class="docutils">
1198 <thead valign="bottom">
1200 <th class="head">Dato</th>
1202 <th class="head">Metadato</th>
1206 <tbody valign="top">
1210 <td>Gennaio 2009</td>
1215 <p>Spesso i metadati vengono utilizzati per stabilire le
1216 relazioni tra i vari dati, in modo da poterli
1217 caratterizzare e distinguere tra loro. Si pensi a un
1218 supporto di storaggio in cui vengano mantenuti terabytes di
1219 dati: senza la possibilita' di distinguerli l'uno dagli
1220 altri diventerebbero inutili (o meglio inutilizzabili),
1221 maggiore e' il numero dei dati tanto piu' si avverte la
1222 necessita' di caratterizzarli in modo da poterli
1223 <em>gestire</em> piu' facilmente e <em>incrociarli</em> tra
1224 loro in modo da ottenere le informazioni che veramente ci
1227 <p>Si tenga conto che buona parte dell'informatica consiste
1228 nello storaggio di <em>enormi</em> quantitativi di dati
1229 (che bisognera' essere in grado di distinguere e
1230 recuperare), e la funzione fondamentale degli elaboratori
1231 e' la capacita' di confrontare rapidamente questi dati tra
1232 loro. Quindi con l'aumentare del numero dei dati i metadati
1233 diventano sempre piu' importanti e <em>significativi</em>.
1234 Si pensi alla natura dei <a class="reference external"
1235 href="http://it.wikipedia.org/wiki/Database">database</a>.</p>
1239 <div class="section" id="i-filesystem">
1240 <h1><a class="toc-backref" href="#id36">I filesystem</a></h1>
1242 <div class="section" id="file">
1243 <h2><a class="toc-backref" href="#id37">File</a></h2>
1245 <p>Un file e' un insieme di dati con un inizio e una fine
1246 identificabile in mezzo ad altri.</p>
1248 <dl class="docutils">
1249 <dt>Quindi avremo:</dt>
1252 <ul class="first last simple">
1253 <li>un identificatore, come un <tt class=
1254 "docutils literal"><span class=
1255 "pre">nome_file</span></tt> accoppiato al suo
1256 <em>percorso</em> sul file system (possono esserci
1257 molti file con lo stesso nome ma non possono esserci
1258 due file on lo stesso nome nella stessa
1261 <li>Un qualche <em>sistema</em> per recuperare quel
1262 file in mezzo ad altri. Ad esempio potremmo pensare,
1263 in un sistema molto rudimentale, a una coppia di
1264 coordinate che ci permettano di identificare il punto
1265 di inizio e il termine su un block device.</li>
1270 <table border="1" class="docutils">
1277 <thead valign="bottom">
1279 <th class="head" colspan="3">Filestem elementare</th>
1283 <th class="head">Identificatore</th>
1285 <th class="head">inizio</th>
1287 <th class="head">fine</th>
1291 <tbody valign="top">
1303 <div class="section" id="filesystem">
1304 <h2><a class="toc-backref" href="#id38">Filesystem</a></h2>
1306 <p>Il file system e' una struttura logica che ci permette
1307 di individuare i diversi file. Sostanzialmente e'
1308 un'insieme di metadati che caratterizzano i singoli file
1309 piu' quanto necessario per poterli gestire.</p>
1311 <p>Alcuni esempi: e' il filesytem a poter caratterizzare i
1312 file con propietari, gruppi, permessi (lettura, scrittura,
1313 esecuzione), data di creazione e cosi' via. Alcuni
1314 filesytem permettono certe funzionalita', altri (sopratutto
1315 quelli piu' datati) sono piu' <em>rudimentali</em>.</p>
1317 <p>Tipicamente i filesystem sono strutturati secondo un
1318 modello gerarchico basato su <em>files e cartelle</em>:
1319 quindi per poter identificare un file ci serve il suo
1320 <em>nome proprio</em> piu' il suo <em>percorso</em> nella
1321 struttura del filesystem. Il progressivo aumento del numero
1322 dei files sta cominciando a far sentire i limiti di questo
1325 <p>Con l'aumentare delle informazioni tendono ad essere
1326 piu' efficaci modelli relazionali, che permettono di
1327 interagire coi file in modo simile a un database. Ad
1328 esempio pensiamo alle librerie che contengono centinaia di
1329 migliaia di brani musicali MP3, oppure migliaia di
1330 fotografie: cercare di gestirli tramite nome del file e
1331 cartelle diventa poco pratico. Meglio raggrupparli per
1332 autore, data, album o quant'altro si adatti alla loro
1333 natura e al loro utilizzo.</p>
1335 <p>Tabella di allocazione files</p>
1337 <p>non solo su device fisici: esempio NFS</p>
1339 <p>File system distribuito: citati il NBD e ATA over
1344 <div class="section" id="gestione-dei-pacchetti">
1345 <h1><a class="toc-backref" href="#id39">Gestione dei
1348 <p>Un Sistema di gestione dei pacchetti e' una collezione di
1349 strumenti che automatizzano il processo di installazione,
1350 aggiornamento, configurazione e rimozione dei pacchetti
1351 software di un computer.</p>
1353 <p>Tali strumenti sono diffusi tipicamenti sui sistemi basati
1354 su software libero, in quanto i gestori della distribuzione
1355 (cosidetti <em>mantainers</em>) avendo accesso al codice
1356 sorgente del software hanno la possibilita' di prepararne una
1357 versione ottimizzata e adattata all'infrastruttura del
1358 sistema operativo (si pensi a librerie condivise, API,
1359 standard per la collocazione dei files di importanza
1362 <p>Cerchiamo di capire meglio il processo: L'autore /
1363 sviluppatore di un software (ad esempio un browser web come
1364 Mozilla Firefox) rilascia il suo lavoro con una licenza
1365 libera, che prevede la possibilita' di ottenere il codice
1366 sorgente, modificarlo e redistribuirlo. A questo punto un
1367 <strong>mantainer</strong> della distribuzione, che non deve
1368 per forza essere l'autore del software originale, scarica il
1369 sorgente, lo modifica in modo che si integri con gli altri
1370 software del sistema operativo, preoccupandosi che i file di
1371 configurazione, temporanei, ecc. vengano collocati sul
1372 file-system in modo analogo agli altri software del sistema
1373 operativo, in modo da ottenere un sistema il piu' possibile
1374 omogeneo e <em>strutturato</em>. Il mantainer quindi non
1375 introduce nuove funzionalita' nel software (per lo meno non
1376 nella distribuzione di cui si occupa, nel caso provvederebbe
1377 a fornire le modifiche all'autore in modo che sia lui stesse
1378 ad integrarle nella versione <em>ufficiale</em>, cosi' che
1379 poi anche chi non usa quella determinata distribuzione possa
1380 avantaggiarsene): si limita ad <em>adattarlo</em> perche
1381 possa ben funzionare nella distribuzione.</p>
1383 <p>Quindi possiamo dire che un software come ad es. Apache o
1384 Firefox sono funzionalmente identici in ogni distribuzione,
1385 cambia solo il loro livello di integrazione nel sistema
1386 operativo. Come gia' detto le distribuzioni si caratterizzano
1387 per la <em>qualita'</em> di questa integrazione, il numero di
1388 pacchetti che riescono a gestire, l'efficacia dei software di
1389 installazione / aggiornamento / rimozione.</p>
1391 <p>Non ultima per importanza: l'attenzione alle problematiche
1392 legate alla sicurezza. Infatti e' bene tener presente che
1393 sara' il mantainer a dover provvedere tempestivamente
1394 all'aggiornamento del pacchetto in caso di problemi di
1395 sicurezza, dato che l'utente finale non interagisce
1396 direttamente con l'autore del software. Il che puo' porre il
1397 seguente problema: quando l'autore rileva un problema tende
1398 spesso a risolverlo con una versione aggiornata del software
1399 (quindi si passa ad es dalla versione 1.0 alla 1.1 , e gia'
1400 che si rilascia magari si coglie l'occasione per introdurre
1401 nuove funzionalita'). Ma una distribuzione per essere
1402 definita <em>stabile</em> <strong>deve</strong> rimanere
1403 costante, altrimenti diventa impossibile controllare
1404 possibili conflitti tra i diversi software. In questo caso,
1405 le i mantainers delle distribuzioni dedicate al <em>lato
1406 server</em> o comunque con particolare vocazione alla
1407 sicurezza, si attivano per <em>portare</em> loro stessi i
1408 soli aggiornamente della sicurezza alla versione precedente
1409 del software in modo che eventuali nuove funzionalita' non
1410 possano rischiare di compromettere l'interazione del software
1411 con altri presenti sul sistema.</p>
1413 <p>Distribuzioni come <em>Debian</em> lavorano in questo
1414 modo, altre preferiscono un approccio piu'
1415 <em>rilassato</em>: tipicamente perche mettono a disposizione
1416 dell'utente software aggiornato piu' frequentemente,
1417 atteggiamento molto gradito sulle <em>work station</em> degli
1418 utenti che possono cosi' avvantaggiarsi piu' rapidamente di
1419 nuove funzionalita'. Se il software viene aggiornato
1420 <em>molto rapidamente</em> l'utente fianale non puo'
1421 aspettarsi che l'integrazione tra i vari pacchetti sia stata
1422 testata per lunghi periodi!</p>
1424 <p>Cio' non toglie che gli utenti di Debian possano decidere
1425 di utilizzare le release <em>Sid/unstable</em> o
1426 <em>testing</em> che vengono aggiornate quotidianamente. Ma
1427 sulle macchine che devono restare stabili senza creare
1428 problemi quotidianamente si puo' contare sulla versione
1429 <em>stable</em>, che garantisce due o tre anni di
1430 <em>ragionevole quiete senza sorprese</em>. Dal momento in
1431 cui si raggiunge la stabilita' del sistema con le
1432 funzionalita' richieste, in ambiente <em>aziendale</em> non
1433 si avverte la necessita' di avere sempre a disposizione
1434 l'ultima release disponibile di un software col rischio che
1435 si possano verificare problemi. Un software appena rilasciato
1436 non puo' vantare stabilita': questa infatti non e' un
1437 concetto <em>assoluto</em>: la stabilita' si ottiene facendo
1438 girare sempre la stessa versione del software sul piu' ampio
1439 bacino di utenza in modo da poter individuare e risolvere gli
1440 eventuali problemi che mano a mano si individuano. La
1441 stabilita', per quanto riguarda il software
1442 <em>consumer</em>, e' relativa (allo stesso modo la
1443 <em>sicurezza</em> non e' uno <em>status</em> ma piuttosto un
1444 <em>processo</em>: i problemi si possono sempre verificare,
1445 tutto sta nella capacita' e tempi di reazione per risolverli
1446 con aggiornamenti).</p>
1448 <p>Ci sono 3 principali gestori di pacchetti in generale:</p>
1450 <table border="1" class="docutils">
1457 <thead valign="bottom">
1459 <th class="head" colspan="3">Gestori di pacchetti</th>
1463 <th class="head">Nome</th>
1465 <th class="head">Distro</th>
1467 <th class="head">estensione</th>
1471 <tbody valign="top">
1473 <td><a class="reference external" href=
1474 "http://it.wikipedia.org/wiki/Dpkg">DPKG</a></td>
1482 <td><a class="reference external" href=
1483 "http://it.wikipedia.org/wiki/RPM_Package_Manager">RPM</a></td>
1491 <td><a class="reference external" href=
1492 "http://it.wikipedia.org/wiki/Portage">Portage</a></td>
1501 <p>Lo stesso software viene pacchettizzato in
1502 <em>formati</em> diversi (deb,rpm,...)</p>
1504 <p>In alternativa c'e' generalmente una versione binaria
1505 generica del software, che viene distribuita con un archivio
1506 (targz ). Questo non usufruisce delle agevolazioni e
1507 integrazioni offerte dal gestore dei pacchetti della
1510 <p>In alternativa per tutto il software libero e' sempre
1511 disponibile il codice sorgente da compilare in un binario
1512 eseguibile. Permette l'ottimizzazione e la customizzazione
1513 del software. Portage si basa su questo sistema: si scaricano
1514 i sorgenti modificati e poi si compilano. Si faccia
1515 attenzione all'ottimizzazione: dipende da chi la fa...</p>
1517 <p>Per la gestione dei pacchetti su distribuzioni Debian o
1518 derivate (quindi anche Ubuntu) si legga: l'Apt Howto =
1519 <a class="reference external" href=
1520 "http://www.debian.org/doc/manuals/apt-howto/index.it.html">http://www.debian.org/doc/manuals/apt-howto/index.it.html</a></p>
1522 <dl class="docutils">
1525 <dd>Il gestore dei pacchetti. Il software che si occupa
1526 dell'istallazione, rimozione e risoluzione dei conflitti e
1527 dipendenze. Apt e' il <em>front-end</em> di DPKG.</dd>
1531 <div class="section" id="elementi">
1532 <h1><a class="toc-backref" href="#id40">Elementi:</a></h1>
1534 <div class="section" id="dipendenze">
1535 <h2><a class="toc-backref" href="#id41">Dipendenze</a></h2>
1537 <p>Talvolta un pacchetto per poter funzionare necessita di
1538 un altro pacchetto. Si deve quindi installare anche l'altro
1539 oltre a quello richiesto.</p>
1541 <p>Il software di installazione si preoccupa quindi
1542 dell'ordine in cui installare i vari pacchetti (dato che il
1543 pacchetto dovrebbe essere un'entita' indipendente /
1544 modulare rispetto agli altri pacchetti) e la configurazione
1545 di tutti e del sistema. Per i pacchetti rimossi vengono
1546 tolte anche le dipendenze quando queste non compromettano
1547 altri software, in caso di incomprensioni si puo' usare il
1548 comando <tt class="docutils literal"><span class=
1549 "pre">apt-get</span> <span class=
1550 "pre">autoremove</span></tt> (su sistemi dotati di
1553 <p>Si tenga presente che Debian, di default, quando rimuove
1554 un pacchetto non elimina i file di configurazione dello
1555 stesso, nel caso si deve usare l'opzione <tt class=
1556 "docutils literal"><span class="pre">--purge</span></tt>.
1557 In questo modo se l'utente rimuove un particolare software
1558 per provare un alternativa o liberare dello spazio
1559 temporaneamente, al momento opportuno re-installando lo
1560 stesso software questi si comportera' esattamente come
1561 quando era presente sul sistema. E' doverso far notare che
1562 in caso di problemi di configurazione di un programma
1563 l'idea di rimuoverlo per poi re-installarlo sia poco seria:
1564 i problemi vanno tracciati e risolti, non evitati. In caso
1565 contrario ripeteranno. Piuttosto si faccia sempre un una
1566 copia di <em>back-up</em> del file di configurazione
1567 <strong>prima</strong> di cominciare a modificarlo, in modo
1568 che in caso non si riesca ad arrivare ad arrivare nei tempi
1569 richiesti ad una nuova configurazione funzionale si possa
1570 per lo meno tornare alla precedente.</p>
1572 <p>Stessa cosa per la rimozione per dpkg, ma Portage non
1573 permette la rimozione di software.</p>
1576 <div class="section" id="conflitti">
1577 <h2><a class="toc-backref" href="#id42">Conflitti</a></h2>
1579 <p>Alcuni software non possono essere presenti sul sistema
1580 contemporaneamente ad altri. Si pensi a un server di posta
1581 (o a qualunque servizio che ascolta su una porta
1582 determinata), o a versioni incompatibili dello
1583 <em>stesso</em> software. In questo caso il gestore di
1584 pacchetti avvertira' l'utente che al momento
1585 dell'installazione del software richiesto verranno rimossi
1586 i pacchetti in conflitto.</p>