Sorgenti, Binari e Pacchetti (Compilazione e pacchettizzazione per GNU/Linux)
|
|
|
- Mauro Rinaldi
- 9 anni fa
- Просмотров:
Транскрипт
1 Sorgenti, Binari e Pacchetti (Compilazione e pacchettizzazione per GNU/Linux) Augusto Scatolini ([email protected]) ([email protected]) Miniguida n. 134 Ver. 1.0 Luglio 2011 esempio di codice sorgente CODICE SORGENTE Il punto di forza, rivoluzionario, del Software Libero, tipico di GNU/Linux, è la libertà di vedere, gestire, studiare, modificare e compilare il codice sorgente dei vari programmi. Questo è possibile grazie alla licenza GNU/GPL
2 Esclusi i programmi il cui codice viene interpretato al volo da un apposito programma con funzioni appunto di interprete come avviene per l'html, l'asp o il PHP, quando un programmatore inizia a scrivere un programma, praticamente, prende un editor di testo ASCII e inizia a scrivere righe e righe di codice, a volte migliaia di righe di codice. Questi codici possono essere scritti in vari linguaggi di programmazione come C o C++ o altri ancora come Java, Python, Ruby o Perl e successivamente vengono tradotti, permanentemente, da un apposito programma chiamato compilatore. Il processore di un Computer capisce solo codice macchina (detto a basso livello o binario), il programmatore invece capisce, dopo lunghi studi, solo linguaggi non binari detti ad alto livello come C++ appunto. Ecco perché è necessario scrivere il codice (in un linguaggio comprensibile al programmatore) e poi renderlo binario tramite il processo della compilazione. Gli editor di testo più utilizzati per scrivere codice sotto GNU/Linux sono Emacs (scritto direttamente dal fondatore del Software Libero Richard Stallman, Pico e VI (ora VIM).
3 Il compilatore di riferimento sotto GNU/Linux è GCC (GNU Compiler Collection) anche questo scritto da Stallman. Esempio di codice scritto in C++ for (;;) { // l'utente preme un tasto finchè non ne preme uno di quelli precedentemente indicati do { move = getch(); } while(move!=up && move!=down && move!=left && move!=right && move!=exit && move! =DRAW &&move!=cancel && move!=clear && move!=save); // in base al tasto premuto viene eseguita un'istruzione diversa switch (move) { case UP: mx=-1; my=0; break; case DOWN: mx=1; my=0; break; case LEFT: mx=0; my=-1; break; case RIGHT: mx=0; my=1; break; case DRAW: mx=0; my=0; if(draw_switch) draw_switch = false; else draw_switch = true; cancel_switch = false; break; case CANCEL: In realtà il processo di compilazione è un insieme di processi in sequenza: pre-processor prende in ingresso il file sorgente e esegue delle direttive come copiare il contenuto del file, espandere le definizioni, e altro compiler traduce il codice C++ in Assembler optimizer esegue le ottimizzazioni per rendere il programma più veloce linker/loader unisce più codici sorgenti in un unico eseguibile Tralasciando tutte le specifiche tecniche delle varie fasi che compongono il processo di complilazione, si può dire che una volta scritto il programma si passa alla fase di debugging (per correggere tutti gli eventuali errori detti bug) e infine si passa alla compilazione definitiva. Nota. Un buon programmatore come Stallman, osservando lo stile con il quale è stato scritto un codice riesce a capire la decade nella quale è stato scritto.
4 PROGRAMMI BINARI Quindi dal CODICE SORGENTE tramite la COMPILAZIONE si ottiene il BINARIO ESEGUIBILE In realtà un'applicazione complessa come LibreOffice (per esempio) è composta da molti file binari, molte librerie e diverse DIPENDENZE (ovvero altri programmi o librerie propedeutiche e necessarie) Tutti questi file, poi, devono essere posiszionati ognuno in una specifica posizione del File System ovvero in specifiche Directory (o cartelle per gli utenti Windows). Ecco perché per coloro che decidono di utilizzare i binari piuttosto che compilarsi autonomamente i sorgenti sono stati predisposti dei PACCHETTI che contengono tutti i file binari e tutte le librerie e che quando vengono lanciati (i pacchetti) vanno ad installare (copiare) tutti i singoli file nelle rispettive directory. Quando è opportuno compilarsi autonomamente i codici sorgenti? Un motivo potrebbe essere quello di voler modificare il codice sorgente (avendone le capacità) adattandolo alle proprie particolari esigenze e quindi personalizzarsi l'applicazione Un altro motivo potrebbe essere quello di adattare l'eseguibile, del sorgente non modificato, al processore e all' architettura del proprio Computer per trarne dei vantaggi in termini di velocità e performance. Un altro motivo potrebbe essere la mancanza di pacchetti per la propria DISTRIBUZIONE. Nota. Conosco personalmente utilizzatori di GNU/Linux che non installerebbero mai un binario compilato da terzi.questi installano solo binari compilati in proprio.
5 PACCHETTI Un programma di gestione dei pacchetti è una collezione di strumenti che automatizzano il processo di installazione, aggiornamento, configurazione e rimozione dei pacchetti software di un computer. Il termine è più comunemente utilizzato in relazione a sistemi Unix-like (tipo Unix), particolarmente GNU/Linux, dato che questi sistemi poggiano molto più pesantemente su di esso, con migliaia di pacchetti in una sola normale installazione. In tali sistemi, il software è distribuito in pacchetti, generalmente incapsulati in un singolo file. I pacchetti spesso includono anche altre importanti informazioni, come il nome completo, versione, e fornitore del software, informazioni sul checksum, ed una lista di altri pacchetti, conosciuti come dipendenze, che sono necessarie al software per funzionare correttamente. I sistemi di gestione dei pacchetti sono incaricati del compito di organizzare tutti i pacchetti installati in un sistema e mantenere la loro usabilità. Questi sistemi raggiungono questo scopo usando varie combinazioni delle seguenti tecniche: Verifica del checksum dei file per evitare differenze tra le versioni locali ed ufficiali di un pacchetto; Semplici strumenti per l'installazione, l'aggiornamento, e la rimozione; Gestione delle dipendenze per la distribuzione del software funzionante da un pacchetto; Controllo degli aggiornamenti per fornire le ultime versioni dei software, che spesso includono riparazioni di difetti ed aggiornamenti di sicurezza; Raggruppamento di pacchetti a seconda della funzione per aiutare l'utente ad eliminare la confusione durante l'installazione ed il mantenimento. In termini di distribuzioni GNU/Linux, ovvero Sistemi Operativi con annesso un certo numero di applicativi per le più svariate finalità, si possono condiderare la Debian la Red Hat. Ognuna di queste distribuzioni ha poi reso possibile (grazie alla licenza GNU/GPL) una serie pressochè infinita di distribuzioni cosiddette derivate. La differenza tra queste due grosse famiglie consiste appunto nella gestione dei pacchetti che sono chiamati DEB e RPM, rispettivamente. deb è il nome del formato, nonché estensione, dei pacchetti utilizzati dalla distribuzione Debian e dalle sue derivate, come Ubuntu, Kubuntu ecc. Rpm è un sistema di gestione dei pacchetti, utilizzato per installare, verificare, aggiornare e disinstallare i pacchetti in alcune distribuzioni del sistema operativo GNU/Linux; il nome deriva da Red Hat Package Manager, e vede tra i suoi principali utilizzatori Red Hat, Fedora, Mandriva, Suse e loro derivate. YUM (Yellow dog Updater, Modified) è un sistema di gestione dei pacchetti open source a riga di comando per i sistemi operativi GNU/Linux compatibili col formato RPM.
6 METAPACCHETTI I metapacchetti, tipicamente DEB, contengono le istruzioni per scaricare e installare ambienti grafici più o meno pesanti. I metapacchetti più comuni installano ambienti come GNOME, KDE, XFCE, LXDE, ecc. Per l'utente (anche) medio di sistemi GNU/Linux è importante sapere che può installare da sorgenti (previa compilazione), da binari eseguibili o da pacchetti (soluzione più diffusa). Ma proprio perchè la installazione da pacchetti è la più diffusa bisogna sapere cos'è un pacchetto e quale tipo di pacchetto si deve installare (di quale famiglia). Nota. Esiste un programma ALIEN, da usare con cautela, capace di convertire un pacchetto RPM in DEB e viceversa. FINE Questo documento è rilasciato con licenza Copyleft (tutti i rovesci sono riservati) altre miniguide su oppure direttamente su sito consigliato:
Linux e i software liberi. di Nardean Lorenzo e Redigolo Marco
Linux e i software liberi di Nardean Lorenzo e Redigolo Marco Indice INTRODUZIONE - Cos'è Linux - Software libero - Software libero proprietario - Versioni Linux - Distribuzioni STORIA - L idea - Prima
Introduzione alla Programmazione. Giselda De Vita
Introduzione alla Programmazione Giselda De Vita - 2015 1 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico:
Il calcolatore. Architettura di un calcolatore (Hardware)
Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti
Esercitazione 1. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Sebastiano Peluso
1 Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Sebastiano Peluso Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica
COMPILAZIONE. Tarsformazione di linguaggi
COMPILAZIONE Tarsformazione di linguaggi Le fasi della compilazione File sorgente Compilazione File sorgente File sorgente File sorgente Compilazione Compilazione Compilazione Libreria di run-time File
II Esercitazione: S.O. & Fortran 77
II Esercitazione: S.O. & Fortran 77 Francesco Battista Corso di Calcolo Numerico 1 DIMA, Sapienza University of Rome, Italy February 9, 2014 Argomenti trattati 1 Brevi cenni sulle architetture informatiche
Linguaggi di Programmazione
Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni
Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica
Programmazione Dipartimento di Matematica Ing. Cristiano Gregnanin Corso di laurea in Matematica 29 febbraio 2016 1 / 28 Linguaggi 2 / 28 Linguaggi 3 / 28 Linguaggi di alto livello Si basano su una macchina
Installazione dell SDK sotto Windows
Installazione dell SDK sotto Windows Fare doppio clic sull eseguibile. Dopo un breve controllo sul sistema operativo, parte l installazione vera e propria. Leggere il contratto con MOLTA attenzione (se
Carta Regionale dei Servizi MANUALE DI INSTALLAZIONE E CONFIGURAZIONE SOFTWARE CRS PER LINUX
Carta Regionale dei Servizi MANUALE DI INSTALLAZIONE E CONFIGURAZIONE SOFTWARE CRS PER LINUX Versione 1.0 12 Ottobre 2008 MANUALE DI INSTALLAZIONE E CONFIGURAZIONE SOFTWARE CRS PER LINUX SOMMARIO 1 INTRODUZIONE...3
Linguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
I Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Linguaggi, compilatori e interpreti
Linguaggi, compilatori e interpreti 1 Il codice macchina Ciascun calcolatore ha un ampio insieme di istruzioni che è in grado di eseguire. Le istruzioni vengono rappresentate mediante sequenze di bit 001000100011
LINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
Cosa è un programma. Informatica di Base -- R.Gaeta 18
Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer
DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di
Linguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
CORSO DI: INFORMATICA Lezione N 6
CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA CORSO DI: INFORMATICA Lezione N 6 Anno Accademico 2017/2018 Dott. Silvio Pardi Mobaxterm: L editor VI vi è il primo editor testuale
Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando
Eclipse: Cos è? Utilizzare Eclipse: Creare un progetto Creare file sorgenti nel progetto Compilare Lanciare il programma Strumenti alternativi agli IDE La linea di comando su Linux Esplorare e modificare
Università degli Studi di Padova
Università degli Studi di Padova SCUOLA DI INGEGNERIA Corso di Laurea in INGEGNERIA DELL INFORMAZIONE Laboratorio di Fondamenti di Informatica A.A. 2017/2018 SOMMARIO 1) (Java Development Kit) Cos è Struttura
Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni
Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da
Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema
Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina
Guida di Installazione GCC
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Guida di Installazione GCC D. Bloisi, S. Peluso, S. Salza L ambiente di lavoro L ambiente di lavoro al
Linguaggi di programmazione
Parte 2 Linguaggi di programmazione Livello di Astrazione per la Codifica di un Algoritmo Si può risolvere un problema senza prima fissare un insieme di azioni, di mosse elementari possibili per l elaboratore?
Sistema operativo & file system 1
Il software (sw) Software di sistema e file system Lezione 1b L esecuzione di programmi è lo scopo di un elaboratore I programmi sono algoritmi codificati in un particolare linguaggio di programmazione
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
GNU/Linux e *BSD: filosofia del software libero ed open source
GNU/Linux e *BSD: filosofia del software libero ed open source Origini e filosofia dei sistemi operativi liberi. Principali licenze e libertà del software. Data: 27 novembre 2004 Relatore: Massimo Masson
INFORMATICA. L informatica comprende:
Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione
LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
perror: individuare l errore quando una system call restituisce -1
perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente
Fondamenti di Informatica T. Il Software
Il Software TECNOLOGIA DIGITALE CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale. Dati ed operazioni vengono codificati a partire da due valori distinti di grandezze
Introduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani ([email protected])
Dopo aver installato WAMP (o XAMPP) e verificato che i servizi siano funzionanti, si può procedere ad installare ARTISWEB, come appresso descritto.
Procedura di installazione artisweb Preparazione dell ambiente ARTISWEB può girare su qualsiasi piattaforma che fornisca i seguenti servizi: - un server web locale (ad esempio: Apache ver.2.2 o successive,
Comandi principali di Linux (1)
Laboratorio I Comandi principali di Linux (1) Sintassi: [comando] [opzioni] [argomenti] ls mostra il contenuto di una director l versione lunga a mostra anche i files nascosti che iniziano con. t presenta
FONDAMENTI DI INFORMATICA
FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio [email protected] Esercizio (1) Dati due vettori V1 e V2 scrivere un algoritmo che permetta
LPIC-1 Junior Level Linux Certification
Corso 2012/2013 Introduzione a GNU/Linux Obiettivi Il percorso formativo ha l obiettivo di fornire ai partecipanti le competenze basilari necessarie per installare, configurare e gestire un server/workstation
Procedura di installazione rrunnweb
Procedura di installazione rrunnweb Preparazione dell ambiente RRUNNWEB può girare su qualsiasi piattaforma che fornisca i seguenti servizi: - un server web locale (ad esempio: Apache ver.2.2 o successive,
