Panoramica su Linux - Unibg© Castelli Flavio - 2011 Panoramica su Linux Un po' di storia Libertà...
Transcript of Panoramica su Linux - Unibg© Castelli Flavio - 2011 Panoramica su Linux Un po' di storia Libertà...
© Castelli Flavio - 2011
Panoramica su Linux
@
© Castelli Flavio - 2011
Panoramica su LinuxUn po' di storia
Linus Torvalds
© Castelli Flavio - 2011
Panoramica su LinuxUn 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
© Castelli Flavio - 2011
Panoramica su LinuxUn po' di storia
● 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.
Cosa garantisce una licenza open source come la GPL:
© Castelli Flavio - 2011
Panoramica su LinuxUn 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
© Castelli Flavio - 2011
Panoramica su LinuxUn po' di storia
1991: la nascita
From: [email protected] (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. [...]
© Castelli Flavio - 2011
Panoramica su LinuxUn 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
© Castelli Flavio - 2011
Panoramica su LinuxUn 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
© Castelli Flavio - 2011
Panoramica su LinuxUn po' di storia
LinuxGNU
Gnu/Linux
© Castelli Flavio - 2011
Panoramica su LinuxUn 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
© Castelli Flavio - 2011
Panoramica su LinuxCosa è Linux?
l'insieme del kernel (Linux) ed una serie di programmi
distribuzione Linux (“distro”)
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux
● principali distribuzioni Linux
● Debian
● Gentoo
● Fedora
● Mandriva
● Slackware
● SUSE
● Ubuntu
● centinaia di altre distribuzioni
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux
● Cosa distingue le varie distribuzioni:
1) tool di configurazione
2) gestione del software
3) modalità di rilascio
4) posizionamento dei file di configurazione
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni 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
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni 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
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – gestione del software
Cosa contiene un pacchetto:
● script pre e post installazione
● file forniti dal programma:
● eseguibili
● librerie
● man pages
● file di configurazione
● ...
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – gestione del software
Formato DistribuzioneGestore
Alto livello Basso livello
rpmFedora yum
rpmMandriva, Mageia urpmi
SUSE zypper
debDebian
apt-get / aptitude dpkgUbuntu
Principali metodi di pacchettizazione
NOTA: è sconsigliato installare sw pacchettizzato per altre
distro
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – gestione del software
GUI per gestione pacchetti
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni 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
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – gestione del software
SUSE
apt-get update
apt-get upgrade
apt-cache search XYZ
apt-get install XYZ
Operazione Debian-like
aggiornamento lista programmi zypper refresh
aggiornamento sistema zypper update
ricerca software zypper search XYZ
installare software zypper install XYZ
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – modalità di rilascio
Due “filosofie”:
● rolling release:
● Debian
● Gentoo
● versions release:
● Fedora
● Mandriva
● Slackware
● SUSE
● Ubuntu
November 2009: “Fichte” 11.2July 2010: “Rousseau” 11.3March 2011: “Voltaire” 12.0November 2011: “Lessing” 12.1
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – Posizionamento dei file
E' possibile che alcuni file/directory siano in posti diversi
MA
Il contenuto e l'organizzazione dei file raramente cambia
© Castelli Flavio - 2011
Panoramica su LinuxDistribuzioni Linux – Brain dump
© Castelli Flavio - 2011
Panoramica su LinuxInteragire con Linux
GUI Terminale
Due “strade”
NB: l'interfaccia grafica è un componente aggiuntivo ed
opzionale del sistema
© Castelli Flavio - 2011
Panoramica su LinuxInteragire con Linux - GUI
Window manager: semplice gestione delle finestre
● blackbox, fluxbox,...
● icewm
● twm
● afterstep
● enlightenment
Desktop environment: window manager + programmi
integrati
● GNOME
● KDE
● XFCE4
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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
[AZ]*.jpg
*.{h,cpp,c}
Altri esempi: http://goo.gl/TCFu
© Castelli Flavio - 2011
Panoramica su LinuxBreve introduzione alla console
Trovare file:
find <path> iname <pattern>
Cancellare tutti i file trovati:
find ./ iname *.svn | xargs rm rf
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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 - 2011
Panoramica su LinuxBreve 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
© Castelli Flavio - 2011
Panoramica su LinuxBreve introduzione alla console
$ cat values
foo
foo
bar
foo
bar
Rimuovere duplicati:
$ uniq values
Meglio usare:$ sort values | uniq
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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 - 2011
Panoramica su LinuxDemo
Scompattare l'archivio demo.tar.bz2 usando tar e bz2
© Castelli Flavio - 2011
Panoramica su LinuxDemo
● Gestione del file system
● Interprete di comandi (bash, ruby)
● Gestione dei permessi
● Esecuzione programmi
© Castelli Flavio - 2011
Panoramica su LinuxDemo
● 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
© Castelli Flavio - 2011
Panoramica su LinuxDemo
● 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
© Castelli Flavio - 2011
Panoramica su LinuxDemo
● “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 - 2011
Panoramica su LinuxDemo
● “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
© Castelli Flavio - 2011
Panoramica su LinuxDemo - conclusa
© Castelli Flavio - 2011
Panoramica su LinuxBreve 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!!
© Castelli Flavio - 2011
Panoramica su LinuxConsiderazioni
● è possibile utilizzare Linux in tutti gli esami/progetti universitari
● conoscere Linux vi arricchirà personalmente e
professionalmente
© Castelli Flavio - 2011
Panoramica su Linux
Domande?
© Castelli Flavio - 2011
Panoramica su LinuxRiferimenti
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