Sei sulla pagina 1di 35

System Configuration

Infrastructure

Panoramica su S.C.I. con esempi pratici.
A cura di Luca Ferrari, luka4e@gmail.com

   
www.sci-project.foxlinux.org
Il problema: le distribuzioni


Ogni distribuzione diversa di GNU/Linux ha programmi 
propri per configurare il sistema


Alcune distribuzioni forniscono strumenti ben fatti, altre 
peccano in qualità e quantità


Molte volte gli strumenti grafici e testuali fanno cose 
diverse tra loro, non c'è omogeneità

   
Il problema: gli utenti


Un utente, quando cambia distribuzione, deve imparare 
ogni volta da zero ad usare strumenti diversi che fanno in 
realtà la stessa cosa


Molte volte capita che l'utente non trovi neppure lo 
strumento che gli serve, perchè la distribuzione non lo 
fornisce

   
Il problema: gli sviluppatori


Uno sviluppatore se vuole fornire funzionalità di sistema al 
proprio programma, deve conoscere sempre in che 
distribuzione sta girando


Deve prevedere e gestire una moltetudine di casi: cambio 
di distribuzione, cambio di versione di distribuzione...

   
Il problema: i distributori


Ogni distribuzione per essere funzionale deve sviluppare 
in proprio strumenti utili per configurare il sistema


I programmatori si devono preoccupare di creare strumenti 
grafici (Gtk, Qt), testuali, interattivi...


Il tempo impiegato è enorme

   
L'obbiettivo

Creare un unico sistema di configurazione capace di:


configurare ogni parte del sistema 

funzionare in qualsiasi distribuzione

   
I benefici: gli utenti


Gli utenti saranno in grado di configurare qualsiasi 
distribuzione supportata da S.C.I. dato che gli strumenti 
sono gli stessi


In base alle esigenze, l'utente potrà scegliere tra strumenti 
testuali e grafici, potendo infatti configurare le stesse cose 
nello stesso modo

   
I benefici: gli sviluppatori


Utilizzando le funzionalità di S.C.I. essi potranno 
agganciarsi al sistema senza preoccuparsi di come lavora 
a basso livello il sistema


Il programma girerà allo stesso modo anche ad un 
eventuale cambio di versione della distribuzione se essa è 
supportata da S.C.I.

   
I benefici: i distributori


Tutte le distribuzioni potranno offrire strumenti che 
configurano qualsiasi cosa del sistema, sia in modalità 
grafica che testuale


Se una distribuzione vuole offrire strumenti personalizzati, 
utilizzando le funzionalità di S.C.I., non ci si dovrà più 
preoccupare di come lavora il sistema a basso livello, 
perchè è S.C.I. che dialoga con il sistema

   
Esempi

Diamo ora qualche esempio utile per capire 
l'effettiva utilità di S.C.I. e come lavora il tutto

   
Esempi: configurare la rete

Bill è un utente e vuole configurare un'intefaccia di rete in 
Ubuntu, con S.C.I. egli deve solo:


Aprire il centro di controllo di S.C.I.

Aprire lo strumento per la rete

Impostare le proprie preferenze.

   
Esempi: configurare la rete

E se ora Bill volesse configurare un'intefaccia di rete in 
Slackware dovrebbe usare la console? 

No, semplicimente basta:


Aprire il centro di controllo di S.C.I.

Aprire lo strumento per la rete

Impostare le proprie preferenze.
   
Esempi: configurare la rete

Esatto, Bill dovrebbe fare esattamente le stesse cose allo 
stesso modo, senza preoccuparsi di console, strumenti 
grafici o un misto dei due.

Per Bill è bastato utilizzare S.C.I. allo stesso modo in due 
distribuzioni diverse, senza aver dovuto imparato nulla di 
nuovo!

   
Esempi: configurare la rete

Steve è uno sviluppatore e vuole dare la possibilità al suo 
software di poter attivare/disattivare la rete.

Come fare con decine e decine di distribuzioni diverse?

   
Esempi: configurare la rete

Utilizzando le API di S.C.I. egli potrebbe ad esempio gestire 
da codice la rete con:

enableNetworkInterface(”eth0”)

oppure:

disableNetworkInterface(”eth0”)
   
Esempi: configurare la rete

Oppure:

isNetworkAvailable()

per sapere lo stato della rete;

getAllNetworkInterfaces()

 per avere tutte le intefacce di rete;

e così via...
   
Esempi: configurare la rete

Steve è riuscito così a far dialogare con il sistema il 
proprio software senza essersi preoccupato della 
distribuzione su cui esso stava girando!

   
Esempi: configurare la rete

Linus è un programmatore di Ubuntu e vuole fornire un tool 
in Qt per gestire le connessioni di rete.

Senza dover dialogare direttamente con il sistema, egli 
utilizza S.C.I. che si accorge di Ubuntu e si comporta di 
conseguenza.

   
Esempi: configurare la rete

Per Linus ora si tratta solo di creare una finestra con qualche 
pulsante e utilizzare, ad esempio, i metodi già noti:

enableNetworkInterface(”wlan0”)

disableNetworkInterface(”wlan0”)

   
Esempi: configurare la rete

E se volesse creare un tool in GTK?

Nulla di più semplice, ciò che cambia è solo il codice per la 
finestra, per dialogare con il sistema si utilizza sempre:

enableNetworkInterface(”wlan0”)

disableNetworkInterface(”wlan0”)

   
Lo scheletro di S.C.I.

Ma come è lavora S.C.I.?
Com'è composto?

   
Lo scheletro di S.C.I.

S.C.I. è diviso in due parti:


Il server che deve soddisfare le richieste dei client


Il client che da gli ordini al server e riceve i risultati 
dallo stesso

   
Lo scheletro di S.C.I.

Il Server:


E' un demone, un programma che parte all'avvio del 
sistema e resta sempre attivo


Deve soddisfare le richieste dei client e fornire i 
risultati delle elaborazioni

   
Lo scheletro di S.C.I.
Il Server:


E' diviso in sotto­moduli con compiti diversi:

gestione utenti

gestione rete

gestione servizi....


I sotto­moduli possono dialogare tra loro ed effettuare 
 
richieste l'uno con l'altro  
Lo scheletro di S.C.I.
Il Server:


Ha una struttura a cipolla e fornisce un'interfaccia 
esterna visibile ai client e accessibile attraverso 
richieste DBUS


Il funzionamento interno del server non è visibile e non 
deve preoccupare i client

   
Lo scheletro di S.C.I.

Il Server:


All'avvio capisce in che distribuzione sta girando e si 
comporta di conseguenza:

Carica i moduli adatti alla distribuzione in uso, senza 
compromettere il funzionamento dei client
   
Lo scheletro di S.C.I.
Il Client:


Non si preoccupa di come lavora il server o in che 
distribuzione sta girando


Il suo unico lavoro è quello di fornire un'interfaccia 
all'utente e impartire comandi al server

   
Lo scheletro di S.C.I.
Il Client:


Può essere scritto in qualsiasi linguaggio di 
programmazione che supporti DBUS


Il client infatti utilizza chiamate DBUS per dialogare con 
il server

   
Lo scheletro di S.C.I.
Il Client:


Esempi di richieste DBUS del client al server:

addNewUser(“Bill”)

setSystemLanguage(“Italian”)

restartService(“samba”)

isNewUpdatesAvailable()

upgradeSystem()
   

Lo schema di S.C.I.

Server S.C.I.

DBUS DBUS DBUS

Client S.C.I. Client S.C.I. Client S.C.I.


in C++ in Python in Java

I client comunicano con il Server attraverso DBUS,


indipendentemente dal linguaggio in cui essi sono scritti.
   
Lo schema di S.C.I.

Modulo
Modulo Modulo Modulo Modulo
gestione
gestione rete gestione utenti gestione servizi ...
applicazioni

Server S.C.I.

DBUS DBUS DBUS

Client S.C.I. Client S.C.I. Client S.C.I.


in C++ in Python in Java

Il server è diviso in diversi moduli collegati l'uno con l'altro.


Se un modulo ha bisogno di dialogare con un altro lo può fare.
   
Lo schema di S.C.I.
Gentoo

Gentoo

Gentoo

Gentoo

Gentoo
Ubuntu
Ubuntu

Ubuntu

Ubuntu
Fedora

Fedora

Fedora

Debian

Debian
Fedora

Fedora
Debian

Debian
SUSE

SUSE

SUSE

SUSE

SUSE
...

...
...

...

...
Modulo gestione rete Modulo gestione utenti Modulo gestione servizi Modulo gestione applicazioni Modulo gestione ...

Server S.C.I.

DBUS DBUS DBUS

Client S.C.I. Client S.C.I. Client S.C.I.


in C++ in Python in Java

Il Server utilizza le parti dei moduli adatti alla distribuzione in uso.


Aggiungere il supporto a diverse distribuzioni è veramente semplice,
grazie all'ereditarietà e al polimorfismo del Python sfruttati da S.C.I.
   
Lo schema di S.C.I.
Gentoo

Gentoo

Gentoo

Gentoo

Gentoo
Ubuntu
Ubuntu

Ubuntu

Ubuntu
Fedora

Fedora

Fedora

Debian

Debian
Fedora

Fedora
Debian

Debian
SUSE

SUSE

SUSE

SUSE

SUSE
...

...
...

...

...
Modulo gestione rete Modulo gestione utenti Modulo gestione servizi Modulo gestione applicazioni Modulo gestione ...

Server S.C.I.

DBUS DBUS DBUS

Client S.C.I. Client S.C.I. Client S.C.I.


in C++ in Python in Java

Ad esempio in un sistema SUSE, il Server S.C.I. all'avvio si adatta


abilitando tutti i metodi corretti per un sistema SUSE e disabilitando
quelli per le altre distribuzioni.
   
Esempi di utilizzo per S.C.I

Diversi esempi di utilizzo di S.C.I. si possono trovare 
in questa pagina:

www.sci­project.foxlinux.org/wiki/Examples_Usage

   
Per maggiori informazioni

Il wiki di S.C.I.:
www.sci­project.foxlinux.org

Stiamo cercando programmatori in Python che 
conoscano bene GNU/Linux