Visualizza il feed RSS

Linux e dintorni

Migrare verso sistemi Free Software/Open Source: È semplice!

Valuta questo inserimento
di pubblicato il 14-09-2009 alle 19:45 (3036 Visite)
La motivazione principale che mi spinge a scrivere questo breve intervento, verte sulle domande – credo più comuni – che vengono sempre poste quando mi ritrovo ad affrontare un argomento che riguarda la migrazione verso sistemi Free Software / Open Source (più comunemente abbreviato in FLOSS: Free Libre / Open Source Software); il passaggio ad esempio: da Microsoft Windows a sistemi GNU/Linux.
Domande certamente più che giustificate da parte di persone volenterose di provare un nuovo ambiente, vogliose di capire quali siano le differenze fondamentali e cosa ben più importante, curiose di capire se il nuovo ambiente li possa soddisfare in tutto e per tutto, senza dover rinunciare a ciò che il "vecchio" ambiente li aveva abituati.

Rivolgendomi ad un contesto prettamente informatico (la comunità di MasterDrive.it), eviterò di introdurre cenni storici e riferimenti al Software Libero, alle libertà che esso garantisce; del resto tutto ciò che è open source, eccezion fatta di qualche particolare licenza che potrebbe limitare l'utilizzatore finale attraverso costi di licenze, accordi sulla ridistribuzione e/o modifica di codice sorgente o commercializzazione del software stesso.

Mi limiterò ad evidenziare quali debbano essere i suggerimenti da seguire per completare – perfettamente – la migrazione a sistemi operativi Open Source.

In questa comunità la maggior parte delle discussioni riguardano il mondo della programmazione; ebbene, quale ambiente migliore se non i sistemi operativi Open Source per programmare?
Storicamente parlando, una delle principali differenze che contraddistingue i sistemi operativi Open Source quali GNU/Linux da quelli proprietari come Microsoft o Apple, è proprio la grande reperibilità di librerie, compilatori, supporto a diversi linguaggi di programmazione, shell, ambienti di sviluppo, debugger e tutto ciò che un programmatore vorrebbe trovare nel suo sistema.
Oggi, molti sistemi GNU/Linux portano con se già tutto l'occorrente per programmare, senza obbligare l'utilizzatore a pagare per aver accesso a questi strumenti.

"Ma Linux è complicato?" Non possiamo fornire una sola e generica risposta, bensì è doveroso proporre diverse osservazioni in base all'utilizzatore. Ad esempio, un utente con esperienza nel mondo *nix non troverà alcuna difficoltà a interfacciarsi con l'ambiente; a differenza invece di utenti Microsoft Windows che si troveranno, almeno inzialmente, "spiazzati" da una nuova organizzazione e modo di funzionare del sistema.

Personalmente, la prima osservazione che faccio è sempre la stessa: "Cercare di non fare analogie o sforzarsi di trovare similitudini di funzionamento tra un sistema e un altro, cosa ancora più grave, non provate ad eseguire software sviluppato per altre piattaforme su GNU/Linux" - da evitare assolutamente - "Mettetevi ben in testa che siete in ambiente del tutto nuovo. Abbiate la pazienza di capirne il funzionamento – documentandovi e provate, provate e provate - e abituatevi alla nuova interfaccia grafica".

Dove e come reperire tutto il software necessario?

Internet! La risposta è semplice, potete reperire tutto il materiale necessario direttamente da Internet. Scaricate la distribuzione GNU/Linux che più vi interessa, ad esempio Ubuntu, Fedora, Debian, OpenSuse, Mandriva. Per farvi un'idea di quante distribuzioni esistono potete consultare il sito di riferimento: DistroWatch.com.

Per iniziare è preferibile scegliere una distribuzione che sia orientata all'uso Desktop, destinata ad pubblico generico, che sia dotata di interfaccia grafica, un buon gestore dei pacchetti (software da installare) e abbastanza stabile e compatbile con gran parte dell'hardware oggi presente sul mercato. Tra queste distribuzioni troviamo: Ubuntu, LinuxMint, Fedora, Mandriva e OpenSuse.
Tutte queste sono scaricabili direttamente dal sito di riferimento, ad esempio, possiamo scaricare la ISO oppure ordinare il CD (che verrà spedito gratuitamente a casa nostra) di Ubuntu dal sito ufficiale: Ubuntu Home Page | Ubuntu

Una volta scaricata l'immagine ISO non resta che masterizzarla e avviare il computer col CD inserito nel lettore, abilitare il boot da CD e attendere la schermata di boot del nuovo sistema operativo. Ci verrà proposto si procedere direttamente con l'installazione oppure avviare la versione Live! del sistema: In parole povere, il nuovo sistema operativo viene caricato nella RAM in modo tale da poterlo provare senza intaccare l'eventuale sistema operativo già presente sul disco rigido. Possiamo verificarne il funzionamento e se siamo decisi, procedere con l'installazione.

Se prendiamo in riferimento Ubuntu, credo non esista software d'installazione del sistema operativo, migliore di questo. Chiunque è in grado di installare autonomamente questo sistema. In presenza di un ulteriore sistema operativo già installato ci verrà chiesto di ridimensionare le partizioni su disco e verrà creato in modo automatico il doppio boot. Così facendo, all'avvio del computer potremo scegliere se avviare Ubuntu oppure l'altro OS. Niente di più semplice.

Chi mi da il supporto tecnico?

Uso privato o uso commerciale? Dipende dalle esigenze. Per un uso domestico del sistema operativo, possiamo trovare tutto il supporto che ci serve dalle varie comunità ufficiali e non, che sono presenti sulla rete. Ad esempio, Ubuntu ha una comunità molto attiva anche in Italia. Anche MasterDrive.it offre supporto! C'è una sezione apposita nel Forum!

Le compagnie che sponsorizzano questi progetti garantiscono pieno supporto - a pagamento - verso le aziende che ne hanno bisogno. Vedesi la stessa Canonical (azienda madre del progetto Ubuntu), Red Hat, Novell e Mandriva come molte altre, dispongono di soluzioni commerciali basate proprio sul supporto.

Com'è organizzato il file system di questi Sistemi Operativi?

Non aspettatevi in alcun modo che l'organizzazione delle directory sia simile a quella di Microsoft Windows. È completamente diversa, prenderò in riferimento Ubuntu e ne spiegherò di seguito la struttura delle directory (organizzazione pressochè simile al resto dei sistemi *nix like). Come iniziare se non con una frase da perfetto humor inglese: "In principio era /"? Non l'avete capita, dite la verità? Avrei potuto anche evitare questa "piccola" batttuta ...

L'organizzazione delle directory potrà apparirvi poco familiare – anche a me ha fatto lo stesso effetto, non posso negarlo. Ma pian piano, più userete questi sistemi e più vi renderete conto di quanto sia estremamente ordinato, semplice e intuitivo.

Per farvi un'idea più precisa di come avvenga l'organizzazione delle directory in un sistema *nix like dovete far riferimento ad un albero n-ario, in cui la radice individua la posizione iniziale del sistema e man man che si scende troveremo le varie directory organizzate in base ai dati in esse contenuti:

Ubuntu: Come sono organizzate le directory
  • / (Slash):
    Ecco perchè in principio era “/” o meglio “slash”. Questa è la directory madre a cui tutte le altre faranno riferimento, da qui, parte tutta l'organizzazione del sistema. Quando dico tutta intendo proprio tutta!

  • /root:
    Questa la directory dell'amministratore di sistema “root”. Prestate molta attenzione quando utilzzate il sistema con i suoi privilegi. L'utente root ha accesso a tutte le risorse del sistema.

  • /bin:
    La maggior parte dei programmi di utilità di sistema, risiedono in questa directory: cd, ls, mkdir, touche, mv, cp e tutti gli altri.

  • /etc:
    Tutti i file di configurazione - generale - delle applicazioni e del sistema risiedono in questa specifica directory. Se dobbiamo metter mano a configurare qualche servizio di sistema, stiamo pur certi di trovare il file di configurazione in questa directory.

  • /dev:
    Ecco la prima cosa che ci apparira strana. In questa directory, che lo crediate o no, risiedono tutti i dispositivi – potenzialmente – riconosciuti dal nostro sistema: stampanti, modem, periferiche USB, SATA, EIDE e tutti gli altri.

  • /home:
    Tutte le directory personali degli utenti del sistema sono qui. In questa cartella oltre ai vari documenti, immagini, musica e altro, risiedono anche i file di configurazione specifici – ovviamente nascosti – per ogni applicazioni utilizzata dall'utente.

  • /tmp:
    Una directory per mantenere in modo del tutto temporaneo i vari file di comodo che le diverse applicazioni in esecuzione necessitano di creare. Generalmente il processo di cancellazione di tutti i file contenuti in questa directory è ormai automatizzato in molti sistemi GNU/Linux. È consigliabile non salvare alcun file qui dentro.

  • /usr:
    Tutto ciò che è extra del sistema si trova qui: Documentazione, ulteriori comandi di utilità e file di configurazione. Generalmente questa directory segue un'organizzazione simile alla directory madre /.

  • /opt:
    Gran parte del software addizionale, che non dipende strettamente dal resto del sistema e dalle politiche utilizzate dal package manager, è mantenuto in questa directory. Ad esempio se intendiamo provare senza alterare i file del nostro sistema, possiamo installarlo in questa directory col resto delle librerie richieste per il corretto funzionamento.

  • /media:
    In questa directory vengono “montati” (si associa dispositivo di memorizzazione di massa ad una directory). Ad esempio, il contenuto di CDROM o memorie USB si trovano in questa directory.

  • /proc:
    Altra interessante caratterica è rappresentata da questa directory che mostra un file system virtuale e fornisce informazioni riguardo tutti i processi in esecuzioni e all'hardware presente.

  • /boot:
    Generalmente è una partizione a parte: qui si trova il boot manager (ad esempio GRUB) con il kernel e tutta una serie di file utili per personalizzare l'avvio del sistema.

I programmi da dove li scarico?

Ubuntu, come altre distribuzioni orientate al Desktop, dispongono di un cosidetto Package Manager (in Ubuntu si chiama “Synaptic”). Questi programmi si occupano di mantenere in costante aggiornamento l'archivio di tutti i programmi disponibili per il nostro sistema (se non ricordo male per Ubuntu ammontano a circa 30.000, solo quelli di base), ci consentono di aggiornare l'intero sistema operativo con semplici passaggi, e c'è la possibilità di espandere l'archivio del programmi, aggiungendo nuovi Repository, ovvero fonti, generalmente URL da cui reperire nuovo software. Incredibile!

Meglio Virtualizzare!

Se proprio non possiamo fare a meno di sistemi operativi proprietari di cui disponiamo però una Licenza e abbiamo nostalgia del loro aspetto e dei vari Virus e non ricordiamo più come si effettua un'installazione di questi sistemi, possiamo comodamente installare una macchina virtuale, vedesi Virtual Box di Sun ( Installabile in Ubuntu tramite il package manager, Synaptic ) ed eseguire Windows come sistema operativo ospite, dentro Ubuntu.

Ma se vogliamo soddisfare le nostre curiosità nell'ambito GNU/Linux, possiamo utilizzare la macchina virtuale per provare altre distribuzioni e solo così potremo capire quale distribuzione soddisfa al meglio le nostre esigenze.

Programmare... Questo Conosciuto!

Come accennato in precedenza, questi Sistemi Operativi dispongono di un grande quantitativo di materiale utile per le mansioni di programmazione. Insomma, rappresenta il paradiso di tutti i programmatori. Giusto per fare un esempio, se avete la possibilità di provare Ubuntu e avviare il package manager “Synaptic” vi prego di consultare la sezione “Development” (Sviluppo) e capirete quanto materiale c'è a disposizione del programmatore.

Un esempio pratico: Nella comunità di MasterDrive.it le argomentazioni più trattate riguardano lo sviluppo di applicazioni .Net. La risposta Open Source è Mono, un'implementazione completamente libera e gratuita del framework .Net, è multipiattaforma: si esegue su Windows, GNU/Linux e Mac e supporta molti linguaggi di programmazione, si dia uno sguardo alla pagina di riferimento: Languages.
A sponsorizzare il progetto è Novell, azienda che mantiene lo sviluppo di SuSE e offre supporto tecnico per le applicazioni sviluppate con MONO. Molti di voi ricorderanno l'accordo tra Microsoft e Novell per garantire l'inter-operabilità delle loro applicazioni.

MONO, proviamolo un po!

Non sviluppo applicazioni .Net e certamente non sto a screditare questa tecnologia. Non ho mai avuto a che fare con questo mondo e non nego che probabilmente, un giorno, grazie a Mono potrò approcciarmi a questo nuovo Framework.

Uso Debian GNU/Linux (la mamma se così possiamo dire di Ubuntu). Tutto ciò che ho dovuto fare per installare Mono con ambiente di sviluppo MonoDevelop è stato avviare il buon package manager "Synaptic": System -> Administration -> Synaptic Package Manager, cercare "MonoDevelop" e selezionarlo per l'installazione.
Synaptic ha calcolato in modo automatico tutte le varie dipendenze con gli altri pacchetti software necessari ed ha installato oltre all'IDE tutto il framework MONO. Che dire, da restare a bocca aperta. In poco meno di cinque minuti, ero pronto per sviluppare applicazioni .Net!

MONO: La prima applicazione “Hello, World!”

Bene, non conosco assolutamente questo nuovo ambiente di sviluppo “MonoDevelop”, a prima vista sembra essere abbastanza completo. Creo un nuovo progetto C# e scrivo il primo codice della mia vita in questo linguaggio:

codice:
using System;

public class HelloWorld
{
	static public void Main ()
	{
		Console.WriteLine("Hello, World!");
		Console.Read();
	}

}
Controllo un po il menù e leggo “Build” quindi compilo ed eseguo... Eureka! Funziona.
Proviamo un po le windows.form, voglio vedere un po di grafica. Quindi specifichiamo i namespace che ci occorrono: System.Drawing e System.Windows.Forms compiliamo...

Ops, un errore... Il compilatore mi avverte di aggiungere delle referenze ai namespace. Come si fa? Qualche ricerca in Internet e scopro che Mono usa solo alcuni namespace, tutti gli altri devono essere indicati esplicitamente al momento della compilazione. Ma come faccio a istruire “MonoDevelop” di questo? Niente di più semplice: Project -> Options -> Build -> Compiler -> Additional Options -> Additional Arguments -> -r:System.Windows.Forms.dll

Proviamo a compilare e... Funziona! Nessun problema. Procedo a completare il codice al fine di vedere una finestra: La mia “Hello, World!” deve avere la grafica:

codice:
using System;
using System.Windows.Forms;

public class HelloWorld : Form
{
	public HelloWorld()
	{	
		Text = "Hello, World!";
	}
	
	static public void Main ()
	{
		Application.Run(new HelloWorld());	
	}
}
Funziona... Finalmente la finestra è venuta fuori.

In materia MONO e .Net sono più che ignorante e non posso avere la presunzione di affermare che funziona tutto correttamente. Teoricamente però, non si dovrebbero avere grosse difficoltà per imparare questo nuovo ambiente e programmare in .Net.
Ho anche notato che c'è il supporto a GTK#. Posso utilizzare le librerie grafiche GTK in alternative alle Windows.Forms per sviluppare le mie applicazioni. Personalmente utilizzo sempre le GTKMM con C++.

Per chi fosse interessato ad approfondire questo ambiente, ecco il sito ufficiale: Mono. Magari, prima di provarlo in ambiente GNU/Linux, potete scaricare la versione per Windows e provarlo per bene.

Conclusioni: Meglio essere curiosi che avere paura

L'intervento termina qui, vuole essere il punto di partenza per tutti quelli che hanno paura a passare su sistemi operativi Open Source. Ho cercato di riassumere i punti più importanti che si affrontano quando si passa da un sistema ad un altro. Purtroppo non ho potuto discutere delle interfacce grafiche, questo lo lascio fare a voi, a tutti quelli che intendono lasciarsi prendere dalla curiosità e scoprire pian piano le potenzialità che i sistemi opensource hanno.
Ho indirizzato l'intervento verso chi, sviluppa programmi in tecnologia .Net e non potrebbe farne a meno. Con il framework MONO, potete sviluppare in cross-platform e avete supporto ad altri linguaggi di programmazione. Non vi resta che scoprire questo ambiente e lasciarvi andare ai commenti.

A presto e buona migrazione,
Giuseppe Leone

aggiornamento da 13-12-2011 a 12:17 di Master85

Categorie
Programmazione , Microsoft , Linux , Open Source , Tecnologia

Commenti