|
|
Riga 1: |
Riga 1: |
| ==Introduzione== | | ==Introduzione== |
| | | Apt-file � un potente motore di ricerca in grado di indicare a quale pacchetto appartiene un determinato file... sembra una cosa da poco, ma non sempre � cos�... soprattutto quando si ha a che fare con le compilazioni da sorgenti. |
| Come tutti sanno, o avranno notato, Debian � compilata con opzioni di compilazione generiche, penste per processori i386.
| |
| Questa scelta � stata fatta per questioni di stabilit�, a quanto ho trovato sulla rete.
| |
| | |
| Per chi vuole sfruttare a fondo la propria macchina, e consigliata una ricompilazione con le ottimizzazioni relative al proprio processore, cos� da poter sfruttare fino in fondo tutte le innovazioni introdotte in questi anni, ma prima di affrontare questo argomento, per�, vorrei fare alcune precisazioni...
| |
| | |
| Innanzitutto, non tutti i programmi diventeranno pi� veloci: esisteranno sempre i 'colli di bottiglia', come la velocit� di lettura degli Hard Disk, etc; quindi i programmi che ne trarranno giovamento maggiore saranno quelli che abusano di operazioni matematiche, e che stressano il processore...
| |
|
| |
|
|
| |
|
| ==Installazione== | | ==Installazione== |
| | | Niente di pi� semplice, ovviamente |
| Ovviamente, trattandosi di Debian, � sufficiente dare un semplice:
| |
| <pre> | | <pre> |
| # apt-get install apt-build | | # apt-get install apt-file |
| </pre> | | </pre> |
|
| |
|
| Mentre il pacchetto viene scaricato insieme alle sue dipendenze, vi invito a fare una visitina a Debtoo, un interessante progetto per dare a Debian strumenti utili per la compilazione dei pacchetti...
| |
| L'indirizzo http://www.debtoo.org/ .
| |
|
| |
|
| Analizziamo le domande del processo di configurazione che viene lanciato durante l'installazione:
| | ==Configurazione== |
|
| |
|
| '''Where should apt-build download and build packages?''' | | Non necessita di modifiche... |
| | Nel file sono presenti due sezioni: |
| | 1) dove collocare i file archivio e come rinominarli (all'interno del file � presente uno specchietto riassuntivo delle variabili utilizzabili... |
| | 2) le sintassi dei comandi utilizzati per scaricare i file |
| | Queste direttive, salvo casi particolari, non necessitano di modifiche. |
|
| |
|
| La scelta di default va pi che bene...assicuratevi per di avere un po' di spazio (4-5Gb sarebbero comodi), in quanto la compilazione ne richiede tanto, ed i sorgenti gi processati non vengono rimossi automaticamente.
| |
|
| |
|
| | ==Utilizzo== |
|
| |
|
| '''Where must apt-build store built packages?'''
| | Una volta installata, dobbiamo aggiornare la lista dei file. |
| | | Per fare questo � sufficiente dare il seguente comando: |
| Qui siamo liberi di fare quello che vogliamo: apt-build, una volta terminata la compilazione, creer� il pacchetto debian ottimizzato per la nostra macchina. Qui dobbiamo indicare dove metterli...
| |
| | |
| | |
| '''These are equivalent to -O1, -O2 and -O3. Optimization level is time dependant - in fact, the more you want to optimize your build the more time will be necessary for compiling but the faster your programs will be. Warning: Strong optimization may lead to stability problems. Which optimization level do you want?'''
| |
| | |
| Le scelte che mi sento di consigliare sono due: Medium per una ottimizzazione media.... Strong per una ottimizzazione avanzata (attenzione: pi� � alto il livello di ottimizzazione, pi� tempo impiega il processo...come � indicato nel testo della domanda.
| |
| | |
| | |
| '''Add apt-build repository to sources.list?'''
| |
| | |
| Rispondendo 'Si' aggiungeremo al nostro sources.list una riga indicante il repository che viene creato da apt-build (la seconda domanda che ci � stata posta durante il processo di configurazione)
| |
| | |
| | |
| '''Which options would you like to add to gcc?'''
| |
| | |
| Qui possiamo passare delle opzioni aggiuntive a gcc... Eccone alcune:
| |
| -jX X indica il numero di compilazioni parallele consentite
| |
| -pipe Riduce l'accesso al disco (velocizzando l'operazione) utilizzando il pipe (|) invece dei file temporanei
| |
| | |
| | |
| '''What is your architecture?'''
| |
| | |
| Ora ci verr� mostrata una lista di famiglie di processori, relative alla 'marca' del nostro processore (nel mio caso tutte AMD)...scegliamo quella adeguata (nel mio caso, su un Compaq Presario 2100, athlon-xp)
| |
| | |
| | |
| | |
| Siamo giunti al termine della configurazione!
| |
| Ancora un passaggio e saremo pronti a conoscere apt-build!
| |
| | |
| | |
| Bisogna modificare il file '''/etc/apt/sources.list''' aggiungendo i repository per i sorgenti.
| |
| Per quelli ufficiali Debian, � sufficiente ricopiare la riga dei repository dei pacchetti normali e sostituire a 'deb' 'deb-src'. | |
| Ad esempio, se il nostro sources list contiene la riga:
| |
| <pre>
| |
| deb http://ftp.it.debian.org/debian/ sid main
| |
| </pre>
| |
| diventer�
| |
| <pre>
| |
| deb http://ftp.it.debian.org/debian/ sid main
| |
| deb-src http://ftp.it.debian.org/debian/ sid main
| |
| </pre>
| |
| | |
| '''NB:''' le due righe possono coesistere tranquillamente.
| |
| Ora siamo pronti ad iniziare!
| |
| | |
| | |
| ==Opzioni==
| |
| | |
| Analizziamo un po' di opzioni, molto utili, che renderanno pi� comprensibili i comandi utilizzati in seguito.
| |
| La sintassi di apt-build � vicinissiama a quellad i apt-get, infatti troviamo, come comandi, i seguenti:
| |
| | |
| ; update : Aggiorna la lista dei pacchetti (come apt-get update)
| |
| ; upgrade : Esegue un aggiornamento del sistema, scaricando i pacchetti e compilandoli
| |
| ; install : Scarica e compila il pacchetto indicato
| |
| ; source : Scarica e decomprime il pacchetto nella directory di compilazione (di solito /var/cache/apt-build/build )
| |
| ; remove : Come apt-get remove
| |
| ; clean-build : Provvede a pulire la directory contentente i sorgenti scaricati
| |
| ; clean-repository : Provvede a pulire la directory contentente i pacchetti compilati
| |
| ; world : Ricompila tutti i pacchetti correntemente installati
| |
| ; info : Visualizza le informazioni relative al pacchetto compilato
| |
| | |
| | |
| Le opzioni, invece, sono le seguenti:
| |
| ; --reinstall : Ricompila e reinstalla il paccheto gi� installato...ci torner� comodo...
| |
| ; --rebuild : Ricompila il pacchetto indicato
| |
| ; --remove-builddep : Rimuove le dipendenze di compilazione (librerie -dev) installate da apt-build per la compilazione
| |
| ; --nowrapper : Non usa il wrapper: compilazione senza le opzioni di ottimizzazione
| |
| ; --purge : Durante la rimozione, verranno cancellati anche i file di configurazione presenti in /etc
| |
| ; --noupdate : Non esegue 'apt-get update' prima dell'installazione dei pacchetti
| |
| ; --build-command cmd : Usa cmd per compilarei il pacchetto
| |
| ; --patch file : Applica la patch prima di compilare il pacchetto
| |
| ; --patch-strip n : Indica lo striplevel per il file di patch (equivale al parametro -pX del comando patch
| |
| ; --yes -y : Risponde 'Yes' a tutte le domande poste da apt (usare con prudenza)
| |
| ; --version -v : Mostra la versione di apt-build
| |
| ; --source : Non scarica i sorgenti (indica che i sorgenti sono gi� stati scaricati
| |
| ; --build-only : Non installare le dipendenze del pacchetto (usare con attenzione)
| |
| ; --build-dir dir : Specifica la directory in cui eseguire la compilazione
| |
| ; --repository-dir dir : Specifica la directory dove mettere i file compilati
| |
| ; --target-release : Indica da quale release (Stable, Testing, Unstable, Experimental) scaricare i sorgenti
| |
| ; --sources-list : Specifica un sources.list alternativo
| |
| | |
| | |
| Le opzioni che useremo spesso saranno '''--reinstall --noupdate'''.
| |
| | |
| ==Utilizzo==
| |
| Ora guardiamo come utilizzare apt-build per ricompilare pacchetti gi� presenti nel sistema...
| |
| <pre> | | <pre> |
| # apt-build --reinstall install kdebase | | # apt-file update |
| </pre> | | </pre> |
| | cos verranno scaricate le liste... |
|
| |
|
| ad esempio...
| | '''Attenzione''': sono file piuttosto corposi, fino a 8Mb...quindi vi consiglio di non usarlo con una normale connessione dial-up... |
| l'opzione '''--reinstall''' ci permetter� di installare il pacchetto anche se nel sistema � gi� presente un pacchetto con la medesima versione.
| |
| | |
| Una volta lanciato il comando, apt-build si occuper� di sincronizzare la lista dei pacchetti, scaricher� le librerie di sviluppo necessarie alla compilazione del pacchetto ed eventualmente si occuper� anche delle dipendenze. Una volta scaricato il pacchetto dei sorgenti provveder� alla compilazione.
| |
| | |
| Potrebbero apparire errori di compilazione: in questi casi bisogna leggerli con attenzione per capire se � un errore prodotto da apt-build o da un errore nei sorgenti e, in tal caso, chiedere aiuto a S. Google =)
| |
| | |
| Se invece il pacchetto non � stato precedentemente installato, � possibile installarlo omettendo l'opzione --reinstall:
| |
| <pre>
| |
| # apt-build install nomepacchetto
| |
| </pre>
| |
|
| |
|
| Comando 'strano', che non ho ancora avuto modo di sperimentare �:
| | Vadiamo, ora, le principali funzioni: |
| <pre> | | <pre> |
| # apt-build world | | # apt-file update |
| </pre> | | </pre> |
| | Aggiorna gli archivi dei contenuti dei pacchetti. |
|
| |
|
| che permette la ricompilazione di tutti i pacchetti correntemente installati sul computer!
| |
|
| |
|
| Allo stesso modo possibile aggiornare il sistema direttamente, tramite un semplice
| |
| <pre> | | <pre> |
| # apt-build upgrade | | # apt-file purge |
| </pre> | | </pre> |
| | Rimuove tutti gli archivi di apt-file scaricati. |
|
| |
|
|
| |
| Una precisazione d'obbligo: non tutti i repository offrono i pacchetti contenenti i sorgenti, e per questo ci si pu trovare di fronte ad alcuni errori...
| |
| Qui sta a voi risolverli, o installando il pacchetto binario o cercando un altro mirror...
| |
|
| |
| ==Conclusioni==
| |
|
| |
|
| |
| Lo strumento veramente potente, anche se non esente da bug...
| |
| Promette bene e porta una ventata di novit in un campo precedentemente complesso in quanto, per compilare con ottimizzazioni, era necessario ricorrere a strumenti un po' complessi e sfortunatamente tutti indipendenti tra loro, allontanando tutto questo dall'utente novizio...
| |
| Ora, anche chi vuole un sistema compilato ad hoc per la propria macchina, potr restare fedele e usufruire della potenza di apt!
| |
|
| |
|
| |
|
| |
| ==Faq==
| |
|
| |
| '''Q: Ho spostato la directory della cache di apt-build, ma ora apt mi da degli errori...'''
| |
| '''A:''' Beh...sarebbe stato utile, dopo lo spostamento, eseguire un
| |
| <pre> | | <pre> |
| # dpkg-reconfigure apt-build | | # apt-file search <testo> |
| </pre> | | </pre> |
| per riconfigurare il tutto con i nuovi path.
| | Cerca, e stampa a video l'elenco dei pacchetti che contengono <testo>. |
| Se invece si vuole agire a mano � sufficiente modificare il file '''/etc/apt/apt-build.conf''' e il sources.list, aggiornando i path relativi ad apt-build.
| |
| | |
| | |
| '''Q: Come mai non vengono elencati tutte le famiglie di processori durante la configurazione?'''
| |
| '''A:''' Semplicemente perch� lo script di configurazione di apt-build esegue un check preliminare in modo da determinare la marca del processore.
| |
| | |
|
| |
|
| '''Q: Mi sono accorto di non aver configurato correttamente apt-build, come posso fare a modificare la configurazione??'''
| |
| '''A:''' Certamente...con il comando
| |
| <pre> | | <pre> |
| # dpkg-reconfigure apt-build | | # apt-file list <nomepacchetto> |
| </pre> | | </pre> |
| | Stampa a video il contenuto dei pacchetti corrispondenti a <nomepacchetto>. |
|
| |
|
|
| |
|
| '''Q: Ho notato che apt-build sostituisce gcc e g++ con uno script, cosa vuol dire?'''
| | tra le opzioni disponibili, ricordo quelle principali (di uso comune...) |
| '''A:''' Apt-build utilizza un wrapper, uno script che si occupa di chiamare gcc e g++ passandogli dei parametri aggiuntivi (quelli per l'ottimizzazione) se a chiamarlo � apt-build.
| | ; --ignore-case | -i : Permette di effettuare ricerca case-insensitive |
| | | ; --regexp | -x : Tratta come un pattern di una espressione regolare. |
| | | ; --package-only : Mosta solo il nome del pacchetto, e non quello dei file, utile quando si esegue una ricerca usando come un nome molto comune. |
| '''Q: Visto che apt-build modifica lo script per lanciare gcc e g++, verranno applicate le opzioni di ottimizzazione anche quando compilo senza usare apt-build?'''
| |
| '''A:''' No, in quanto, all'interno del wrapper (che � uno script di shell) viene controllato se � apt-build il chiamante e, in quel caso, applica le opzioni per l'ottimizzazione; nel caso in cui gcc/g++ non vengono chiamati da apt-build, non sono applicate le ottimizzazioni.
| |
| | |
| | |
| | |
| ==Bookmark==
| |
| | |
| http://www.debtoo.org/
| |
| Debian, con in pi� la possibilit� di eseguire compilazioni in stile gentoo!
| |
| Da tenere d'occhio! Qui � presente un po' di documentazione su apt-build.
| |
| | |
| http://www.debianplanet.org/node.php?id=210
| |
| Why isn't Debian 'ported' to the higher x86 machines?
| |
| Interessante discussione sul perch� non si � deciso di compilare debian ottimizzandola un po' di pi�...
| |
| | |
| http://debian-i586.sourceforge.net/
| |
| Interessante progetto di ricompilazione di Debian.
| |
| Ora sembrerebbe un po'...`smorto`...magari si potrebbe dargli una mano...
| |
|
| |
|
|
| |
|
| ---- [[User:MaXeR|MaXeR]] | | ---- [[User:MaXeR|MaXeR]] |