LABORATORIO DI SISTEMI OPERATIVI

Documenti analoghi
Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini

Un codice sorgente. Introduzione alla compilazione automatica: Make e Makefile. Generazione di un programma eseguibile. Un codice sorgente

IDE DevC

Compilazione e Makefile

perror: individuare l errore quando una system call restituisce -1

LABORATORIO DI SISTEMI OPERATIVI

Implementazione di un repository locale e possibili sviluppi futury. Marcello Casalena. Seminari

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Introduzione al DEV C++

Nozioni Base di Linux

Gestione del Software Installazione e gestione repository

INFORMAZIONI GENERALI SULL'INSTALLAZIONE E LA CONFIGURAZIONE. rev. 1.5

ImoLUG. [ Corso Linux: Lezione 2 ]

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

Sistemi Operativi. Esercitazione 5. Corso di Laurea Triennale in Ingegneria Informatica.

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file

Programmazione I - Laboratorio

Desktop telematico : la novità dal 1 dicembre 2016

Gestione della Configurazione. Porfirio Tramontana - Ingegneria del Software Gestione della Configurazione 1

Di cosa parleremo. Installazione programmi

LABORATORIO DI SISTEMI OPERATIVI

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Carta Regionale dei Servizi MANUALE DI INSTALLAZIONE E CONFIGURAZIONE SOFTWARE CRS PER LINUX

Esercitazione: Il DBMS MySQL. Insegnamento di Basi di Dati. Laurea in Ingegneria Informatica SAPIENZA Università di Roma

Conversione del Codice dell amministrazione digitale in formato Read the Docs

PROGETTI SU PIU` FILE

Addendum al Manuale Operativo di. Cipro32. Plug-In Pegasus 2004/2005. Lato fornitore

Git: Sviluppo distribuito e funzionalità avanzate

Introduzione a Git, Parte 2 - Quali sono le funzioni principali di Git

Compilazione rapporto di Audit in remoto

Seminari Quota - Utilizzi e Implementazione -

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Cosa è importante: pom.xml Goal Plug-in Repository

installazione pacchetti mandriva 1 aprire il centro di controllo

Lezione 5 Debian GNU/Linux

Comandi principali di Linux (1)

Introduzione alla compilazione ed esecuzione di programmi C con IDE Dev-C++

Queste note operative sono valide ESCLUSIVAMENTE dalla versione 2.90 di Metodo.

linux-rtai

CONFIGURAZIONE E GESTIONE DEL DATABASE. rev giugno 2018

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini.

Symantec IT Management Suite 8.0 powered by Altiris technology

Sistema operativo & file system 1

A cura di isazi

Modulo 1: Le I.C.T. UD 1.5c: Elaborazione centrata sul. documento e problemi relativi al software

Installazione e uso di SETVERSION.EXE

Manuale LiveBox APPLICAZIONE ANDROID (V )

MDG Enpals Spettacolo MANUALE D USO E INSTALLAZIONE

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

Pregeo Tecnico Esterno - Condivisione dei Libretti. Manuale d'uso 2018

L ambiente UNIX/Linux. Strumenti per la programmazione C Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Organizzazione di Sistemi Operativi e Reti

CORSO DI FORMAZIONE DOCENTI DELLE SCUOLE PUBBLICHE A GESTIONE PRIVATA ECDL, LA PATENTE EUROPEA PER L USO DEL COMPUTER GUIDA SINTETICA

04/04/2016 MANUALE DI ISTRUZIONI DELL APPLICAZIONE ENTRATEL-MULTIFILE VERSIONE 1.0.0

MANUALE DI AMMINISTRAZIONE

Esercitazione. Uso di funzioni e librerie di funzioni

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini

Server Galileo.

Panoramica di Document Portal

Istruzioni installazione

Infor LN Vendite Guida utente per Fatturazione retroattiva

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

Utilizzo di make e di Makefile per compilare programmi in C e in C++

Gestione della configurazione Input/Output PLC Cosa c'è di nuovo?

Software McAfee epolicy Orchestrator 5.9.0

Le presenti note si riferiscono esclusivamente alla procedura di installazione e di aggiornamento di Planet HR.

03FYZ TECNICHE DI PROGRAMMAZIONE Esercitazione di Laboratorio 03 es.1 23 Marzo 2016

Lab 01 Introduzione a Codelite

EDUCATION & TRAINING Formazione Tecnica Engine of Your Business

Infor LN Vendite Guida utente per Fatturazione retroattiva

Esercitazione 1 la shell

SUPSI. Utilizzo del laboratorio di Meccatronica

Il comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli:

SISTEMI DI ELABORAZIONE

Nuove funzionalità del programma

Manuale AdiPA-Lite 6.5.0

Come realizzare il proprio cloud in casa

Progetti su più File Sorgenti

Laboratorio di Informatica

Università degli Studi di Padova

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Introduzione a Visual Studio 2005

MANUALE DI AMMINISTRAZIONE

MANUALE DI AMMINISTRAZIONE

Laboratorio di Informatica

deve conoscerne solo l interfaccia:

Transcript:

LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola

Strumenti per lo sviluppo software Diff e patch Sistemi di controllo versione Subversion Make Cenni Installazione SW in Debian Esercitazione 10

Diff Uno strumento di "diff" o Permette di evidenziare le differenze fra due file di testo Solitamente usato per confrontare due versioni dello stesso file o L'output può essere interpretato dagli utenti o da altri strumenti software

Comand diff diff file1 file2 o Differenze riga per riga fra i due file di testo Frontend in ambiente grafico o meld o KDiff3 o

Patch L'output prodotto dal comando diff ("patch file") può essere utilizzato per aggiornare una vecchia versione di un file di testo utilizzando le differenze rispetto alla vecchia versione: patch original_file patch_file

Patch: esempio diff file.txt.v1 file.txt > file.txt.v1-2.patch patch file.txt file.txt.v1.patch file.txt.v1 file.txt file.txt file.txt (ver. 1) (ver. 2) (ver. 1) (ver. 2) diff file.txt.v1-2.patch file.txt.v1-2.patch patch

Sistemi di "versioning & revision" I sistemi di "controllo versione" sono degli strumenti software che permettono la gestione delle versioni (revisioni) di un insieme di file da parte di un team di utenti o Sono utilizzati, in particolare, per gestire le versioni del codice sorgente Esempi o cvs o svn o mercurial o git o

Subversion (svn) Apache Subversion (svn) è un esempio di strumento per il controllo di versione o I file sono archiviati in un database accessibile via internet (repository) o Permette di tenere traccia delle modifiche o Il set iniziale dei file costituisce la prima revisione o Dopo aver apportato delle modifiche a uno o più file, l'utente del repository può decidere di "consegnare" le modifiche agli altri (commit) A questo punto viene creata una nuova revisione del software

Subversion (svn) Creazione di un repository svnadmin create svnroot/nome_progetto Il contenuto della cartella nome_progetto NON va gestito manualmente.

Subversion (svn) E' necessario che gli utenti che utilizzano il repository abbiano i diritti di accesso o Creare un gruppo ad hoc e impostare il gruppo come group owner dei file del repository o Aggiungere gli utenti del repository al gruppo

Subversion (svn) Per lavorare sul repository è necessario fare un checkout (co) svn co [protocol://][user@][server][/repo] esempio: svn co svn+ssh://alice@myserver.it/home/alice/repo/project1 Con il checkout viene creata una copia locale del repository, sulla quale è possibile fare modifiche o I file già presenti possono essere modificati o Per aggiungere un file al repository: Si crea/copia il file nella cartella locale Si utilizza il comando svn add nomefile o Per rimuovere un file si utilizza svn delete nomefile

Subversion (svn) Le modifiche fatte in locale vengono inviate al database centrale (e quindi condivise con gli altri) con il comando svn commit [ m "messaggio"] o "messaggio" può contenere una breve descrizione della nuova revisione che si sta inviando (es. "corretto bug in file X") o Prima di fare un commit, è necessario aggiornare la propria copia locale all'ultima revisione con il comando svn update o Le operazioni di update/commit possono portare all'individuazione di conflitti fra la propria versione e l'ultima versione del repository (modifiche sulle stesse righe da parte di utenti diversi) I conflitti devono essere risolti dall'utente che fa il commit utilizzando uno strumento di diff Il comando svn log permette di consultare l'elenco delle revisioni (ciascuna caratterizzata dalla data di commit, dall'autore della revisione e dal messaggio di descrizione, se presente)

Subversion (svn) Il comando svn revert nomefile permette di annullare le modifiche effettuate in locale su un file rispetto all'ultima revisione E' possibile, con opportuni comandi, riportare la revisione corrente del repository ad una delle revisioni precedenti

Make Make è uno strumento software che permette di automatizzare la creazione di file che dipendono da altri file o Provvede automaticamente a risolvere le dipendenze e ad eseguire le operazioni necessarie o E' utilizzato in particolare per generare eseguibili o librerie a partire da codice sorgente, gestendo le fasi di compilazione

Make Il comportamento del comando make è definito dal makefile, ossia un file di nome "makefile" o "Makefile" contenente una serie di regole Le regole definiscono in che modo deve essere ottenuto un "target" o Da quali file dipende? o Quali comandi devono essere eseguiti?

Make Le regole hanno la seguente sintassi di base: target: dependencies TAB commands o Un target può essere il nome di un file da creare (ad esempio l'eseguibile da produrre come risultato della compilazione) oppure il nome di un'azione (es. "install" o "clean") o Le dipendenze sono uno o più file da cui il target dipende. Le operazioni per la generazione del target vengono eseguite solo se i file da cui dipende sono stati modificati o I comandi sono le operazioni che devono essere eseguite per ottenere il target

Make Da terminale make viene invocato in questo modo: make [target1 ] o Le operazioni relative ai target specificati vengono eseguite solo se i file da cui i target dipendono sono stati modificati o Se non viene specificato nessun target, viene eseguito il primo target definito nel makefile Solitamente un makefile definisce almeno i seguenti target: o Il primo target (quello eseguito con 'make' senza parametri) porta alla compilazione dei sorgenti e alla produzione degli eseguibili o install provvede a spostare gli eseguibili nelle cartelle apposite (installazione) o clean elimina i file prodotti dalla compilazione

Make esempio # Makefile. I commenti iniziano con '#' programma: main.o funzione.o gcc main.o funzione.o o programma main.o: main.c funzioni.h gcc c main.c funzione.o: funzione.c funzioni.h gcc c funzione.c clean: rm *.o programma

Make Make permette di definire delle macro MACRO = valore Sono definite alcune macro di default, ad esempio: CC contiene il compilatore C di default CFLAGS parametri del compilatore C

Make esempio # Makefile. I commenti iniziano con '#' CFLAGS = -Wall programma: main.o funzione.o $(CC) $(CFLAGS) main.o funzione.o o programma main.o: main.c funzioni.h $(CC) $(CFLAGS) c main.c funzione.o: funzione.c funzioni.h $(CC) $(CFLAGS) c funzione.c clean: rm *.o programma

Make Le regole viste finora sono dette "esplicite", in quanto è specificato il target E' possibile definire regole da applicare ad un insieme di target (regole implicite) Ci sono delle regole di default, ad esempio:.c.o: $(CC) $(CFLAGS) -c $< o I file con estensione.c vengono trasformati in file con estensione.o utilizzando il compilatore C e le opzioni descritte nella macro CFLAGS. $< indica il nome del file che ha determinato l'esecuzione della regola (in questo caso nome del file con estensione.c).

Make E' possibile sfruttare la regola implicita di default che permette di generare file.o a partire dai file.c per semplificare l'esempio visto prima: # Makefile. I commenti iniziano con '#' CFLAGS = -Wall programma: main.o funzione.o $(CC) $(CFLAGS) main.o funzione.o o programma main.o: funzioni.h funzione.o: funzioni.h clean: rm *.o programma

Installazione SW in Debian Linux Debian mette a disposizione degli archivi (repository) di pacchetti software o Gli archivi sono divisi in base alle release di Debian o I pacchetti software sono precompilati per facilitarne l'installazione o E' possibile operare sui pacchetti da terminale, oppure utilizzare un frontend grafico (es. synaptic) o Gli archivi utilizzati (sorgenti) sono indicati nel file /etc/apt/sources.list Installazione di pacchetti apt install nome_pacchetto Aggiornamento elenco pacchetti apt update Upgrade pacchetti con la versione più recente apt upgrade

Installazione SW in Debian Linux In alternativa, è possibile scaricare un archivio con i sorgenti (tarball) o L'archivio deve essere estratto, configurato, compilato e installato o Queste procedure sono facilitate dal makefile L'utilizzo dei sorgenti permette di installare software non disponibile negli archivi o E' importante controllare l'autenticità del tarball per non compromettere la sicurezza del sistema!

Esercizio 1 makefile Nella cartella es1 sono presenti due file.c (main.c factorial.c) e un header (functions.h) Scrivere un makefile per gestire la compilazione e la rimozione dei file compilati. Il file eseguibile prodotto da make deve chiamarsi "fattoriale". Dopo aver compilato, provare a modificare uno dei due file.c e verificare che viene ricompilato solo il file.c effettivamente modificato Cosa succede se non mettiamo il file header nelle dipendenze e lo modifichiamo?

Esercizio 2 svn Nella propria home, creare una cartella svnroot e al suo interno il repository "project" con svnadmin o o o o Creare un gruppo svnusers Aggiungere studenti a svnusers Impostare svnusers come group owner di project e del suo contenuto Garantire i permessi di accesso rwx su project per il gruppo Creare un utente giovanni e aggiungerlo a svnusers Nella propria home, creare la cartella localsvn e fare checkout del repository creato in precedenza in questa cartella: o o svn co file:///home/studenti/svnroot/project Aggiungere dei file alla copia locale del repository, ad esempio i sorgenti dell'esercizio 1 Aggiungerli al repository con svn add e poi fare commit Fare login come "giovanni" e fare checkout del repository in una cartella locale nella propria home o o Visualizzare il log delle revisioni Modificare un file qualunque e poi fare nuovamente commit