@
Un po' di storia Castelli Flavio - 2012 Linus Torvalds
Un po' di storia D: Chi è Richard Stallman? R: Uno degli hacker più talentuosi del MIT D: Qual'era il suo problema? R: la progressiva chiusura del codice sorgente nel 1983 annuncia l'intenzione di creare il SO GNU nel 1985 rilascia il manifesto del progetto GNU nel 1985 crea la Free Software Foundation nel 1989 prima versione della licenza GPL
Un po' di storia Cosa garantisce una licenza open source come la GPL: Libertà di eseguire il programma, come desideri. Libertà di studiarne il codice sorgente e modificarlo. Libertà di fare copie e distribuirle agli altri. Libertà di pubblicare versioni modificate.
Un po' di storia D: Chi è Linus Torvalds? R: Uno studente universitario Finlandese D: Cosa voleva fare? R: Accedere al suo account universitario da casa D: Qual'era il suo problema? R: Minix non funzionava bene sul suo 386 Scrivere un terminale indipendente da Minix
1991: la nascita Un po' di storia From: torvalds@klaava.helsinki.fi (Linus Benedict Torvalds) [...] Hello everybody out there using minix - I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. [...]
Un po' di storia Caratteristiche di Linux agli albori: il codice sorgente era completamente disponibile era possibile modificarne il codice la sua licenza non imponeva limitazioni d'uso Problema: mancavano tutti i tool di contorno Progetto GNU
Un po' di storia Progetto GNU: nato nel 1983 per mano di Richard Stallman scopo: avere un sistema unix like rilasciato con licenza aperta Cosa aveva: compilatori, debugger, editor, coreutils... Cosa mancava: un kernel: Hurd non era ancora completato
Un po' di storia GNU Linux Gnu/Linux
Un po' di storia Espressione sociale: creazione dei Linux User Groups (LUG): punto di aggregazione per utenti Linux punto di aiuto per i nuovi utenti eventi: Installation party Linux Day
Cosa è Linux? l'insieme del kernel (Linux) ed una serie di programmi distribuzione Linux ( distro )
Distribuzioni Linux principali distribuzioni Linux Debian Gentoo Fedora Mandriva Slackware SUSE Ubuntu centinaia di altre distribuzioni
Distribuzioni Linux Cosa distingue le varie distribuzioni: 1) tool di configurazione 2) gestione del software 3) modalità di rilascio 4) posizionamento dei file di configurazione
Distribuzioni Linux tool di configurazione tutto in unix è configurabile tramite appositi file configurazione periferiche (mouse, scanner, stampanti,...) configurazione programmi (web server, db,...) avvio automatico servizi, programmi... editing a manuale tool guidati
Distribuzioni Linux gestione del software Come installare programmi sotto Linux: compilare i programmi partendo dal codice sorgente installare i programmi usando le versioni pacchettizzate risoluzione automatica delle dipendenze aggiornamento automatico alle nuove versioni
Distribuzioni Linux gestione del software Cosa contiene un pacchetto: script pre e post installazione file forniti dal programma: eseguibili librerie man pages file di configurazione...
Distribuzioni Linux gestione del software Principali metodi di pacchettizazione Formato rpm deb Distribuzione Fedora Mandriva, Mageia SUSE Debian Ubuntu Gestore Alto livello Basso livello yum urpmi rpm zypper apt-get / aptitude dpkg NOTA: è sconsigliato installare sw pacchettizzato per altre distro
Distribuzioni Linux gestione del software GUI per gestione pacchetti
Distribuzioni Linux gestione del software Vantaggi legati alla pacchettizazione: installazione facilissima (meglio che windows [1] ) risoluzione automatica delle dipenze aggiornamenti automatici di tutto il sistema [1] http://tinyurl.com/qsmzph
Distribuzioni Linux gestione del software Operazione aggiornamento lista programmi aggiornamento sistema ricerca software installare software Debian-like apt-get update apt-get upgrade apt-cache search XYZ apt-get install XYZ SUSE zypper refresh zypper update zypper search XYZ zypper install XYZ
Distribuzioni Linux modalità di rilascio Due filosofie : rolling release: Debian Gentoo versions release: Fedora Mandriva Slackware SUSE Ubuntu OpenSUSE 12.1 November 2011 opensuse 12.2: July 2012 opensuse 12.3: March 2013 opensuse 13.1: November 2013 opensuse 13.2: July 2014
Distribuzioni Linux Posizionamento dei file E' possibile che alcuni file/directory siano in posti diversi MA Il contenuto e l'organizzazione dei file raramente cambia
Distribuzioni Linux Brain dump
Interagire con Linux Due strade GUI Terminale NB: l'interfaccia grafica è un componente aggiuntivo ed opzionale del sistema
Interagire con Linux - GUI Window manager: semplice gestione delle finestre blackbox, fluxbox,... icewm twm afterstep enlightenment Desktop environment: window manager + programmi integrati GNOME KDE XFCE4
Breve introduzione alla console ne esistono diverse: bash (più diffusa), ksh, csh,... comandi base: creazione directory: mkdir spostare/rinominare file/dir: mv navigare nelle dir: cd rimuovere file/directory: rm elencare i file: ls è possibile combinare più programmi insieme tramite pipe è possibile ridirigere l'output dei programmi
Breve introduzione alla console Combinare più programmi insieme tramite pipe: ps aux grep firefox Redirigere l'output di un comando: grep users /etc/group > members_of_users_group Redirigere stderr sullo stdout: rm /tmp/* 2>&1 Redirigere stderr e stdout su file: rm /tmp/* >& everything
Breve introduzione alla console Gestione dei permessi: chmod +x script.sh # man chmod Processi in esecuzione: ps aux Gestione dei processi: kill <signal> pid # TERM se <signal> e' omesso killall <signal> program_name kill -HUP pid kill -9 pid
Breve introduzione alla console Ricerca all'interno di file di testo: grep <pattern> <file_name pattern> grep -i -r <pattern> <file_name pattern> File globbing: *.jpg?.jpg [A-Z]*.jpg *.{h,cpp,c} Altri esempi: http://goo.gl/tcfu
Breve introduzione alla console Trovare file: find <path> -iname <pattern> Cancellare tutti i file trovati: find./ -iname *.svn xargs rm -rf
Breve introduzione alla console $ cat values a;12 c;1 b;500 Sort usando la seconda colonna: $ sort -n -k2 -t ';' values Sort usando la prima colonna: $ sort -k1 -t ';' values Sort ordine descrescente: $ sort -n -r -k2 -t ';' values Castelli Flavio - 2012
Breve introduzione alla console $ cat values a;12 c;1 b;500 Sostituire un carattere: $ sed -e 's/;/ - /g' values a - 12 c - 1 b - 500
$ cat values foo foo bar foo bar Breve introduzione alla console Rimuovere duplicati: $ uniq values Meglio usare: $ sort values uniq Castelli Flavio - 2012
Breve introduzione alla console $ cut -d ':' -f1 /etc/passwd \ sort \ xargs -n1 -i echo "hello user '{}'" Output: hello user 'at' hello user 'avahi' [...] hello user 'uucp' hello user 'wwwrun' Castelli Flavio - 2012
Demo Scompattare l'archivio demo.tar.bz2 usando tar e bz2
Demo Gestione del file system Interprete di comandi (bash, ruby) Gestione dei permessi Esecuzione programmi
Demo std_out_err.rb: Redirigere stderr sullo stdout Redirigere stdout su file Redirigere stdout su file in modalita' append Redirigere stderr su file Redirigere stderr su file in modalita' append Redirigere stdout e stderr su file Redirigere stdout e stderr su file in modalita' append
Demo Gestione processi: bunnies.rb: Individuare i processi in esecuzione tramite uso combinato di ps e grep Terminare i processi usando kill e kill -9 fibonacci.rb: Individuare i processi in esecuzione tramite uso combinato di ps e grep Inviare il segnale HUP al processo fibonacci
Demo power-shell file utilizzati: events_stats.rb: concerti in una citta' [last.fm] country_stats.rb: top 50 artists in una nazione [last.fm] eu_stats: stats paesi europei (21 Aprile 2010) world_stats: stats tutto il mondo (21 Aprile 2010) european_countries: lista paesi unione europea world_countries: lista nazioni artists_overall: playcount globale per tutti gli artisti presenti in world_stats commands: soluzione degli esercizi della demo artist_total_playcount.sh: script shell calcola totale playcount per un artista usando world_stats Castelli Flavio - 2012
Demo power-shell esempi: Classifica delle nazioni che ascoltano un certo artista. Classifica delle nazioni che ascoltano un certo artista e numero totale degli ascolti. Calcolare gli ascolti totali per tutti gli artisti riportati nel file world_stats
Demo - conclusa
Breve introduzione alla console Tenendo conto che: coreutils forniscono dei programmi per diverse esigenze bash permette lo scripting Domanda: perchè non programmare in bash usando coreutils? Risposta: dipende, rischiate di farvi del male!!
Considerazioni è possibile utilizzare Linux in tutti gli esami/progetti universitari conoscere Linux vi arricchirà personalmente e professionalmente
Domande?
Riferimenti Siti consigliati: bglug: http://bglug.it/ pluto project: http://www.pluto.it/ildp/howto.html appunti Linux: http://a2.pluto.it/ Advanced bash scripting guide: http://tldp.org/ldp/abs/html/ The Linux documentation project: http://tldp.org/ Libri: Linus Torvalds, David Diamonds Rivoluzionario per caso Garzanti Glyn Moody Codice ribelle - HOPS