Tutorial/Firefox building
Mozilla Firefox, come tutti sappiamo si trova pacchettizzato per tutte le distribuzioni Linux, spesso anche in versione beta e nightly e si installa facilmente dal gestore applicazioni. E’ inoltre possibile ottenere da Mozilla la cartella stand-alone precompilata per le varie architetture contenente il binario pronto per essere eseguito.
Perché compilare Firefox si Linux?
Come tutti i software open source Firefox può essere compilato dai sorgenti. Personalmente lo compilo sempre perché, a mio parere, la resa dei caratteri è migliore (meno affilata) ed è possibile disabilitare le opzioni inutili.
Utilizzo la versione Nightly sperimentale che incorpora le più avanzate caratteristiche. Pur essendo per definizione instabile non ho mai avuto fino ad ora problemi. Non amo però l’icona blu che caratterizza questa versione.
La compilazione fra le altre cose permette di selezionare il branding da utilizzare fra aurora, nightly official e unofficial e quindi di poter utilizzare la classica icona arancione anche su nightly.
Come compilare Firefox su Linux?
La principale risorsa per la compilazione di Firefox dai sorgenti è Mozilla MDN (Mozilla Developer Network) dove è presente una guida specifica in italiano per la compilazione:
Se si ha una buona conoscenza della lingua consiglio di utilizzare la versione inglese che è sempre la più aggiornata. I metodi di compilazione variano e sono talvolta capitate delle discordanze.
Le dipendenze
Compilare Firefox richiede un gran numero di dipendenze che, almeno la prima volta, andranno installate tutte. Le dipendenze, come suggerisce il termine, sono librerie necessarie al compilatore per generare la build. In genere tali librerie sono incluse in pacchetti dev rilasciati da tutte le distribuzioni Linux.
Può capitare che, se assenti o non sufficientemente aggiornate, sia necessario prelevarle da github e compilarle a parte. Al momento mi è impossibile fare un elenco preciso di quelle che ho installato nei vari anni sul mio sistema ma vedremo più avanti come individuarle.
Le principali dipendenze necessarie per compilare Firefox sono le seguenti:
Il mozconfig
Il mozconfig è un file di testo contenente le opzioni da passare al compilatore che permette di abilitare o disabilitare alcune caratteristiche del browser. La lista delle principali opzioni disponibili è presente in questa pagina.
L’utilizzo del mozconfig non è obbligatorio, se non inserito si avrà una compilazione con le opzioni predefinite che sono le più supportate.
I sorgenti di Firefox Nightly (a differenza di quelli delle altre versioni) vengono distribuiti in un’unica cartella che contiene anche quelli di Thunderbird e SeaMonkey .
Per la compilazione di quest’ultimi però è necessario procurarsi i sorgenti completi con questi comandi:
Nel caso si desideri compilare solo Firefox è sufficiente creare un singolo file mozconfig e inserirlo nella directory principale.
Per compilazioni multiple il discorso è più complesso e non riguarda questo articolo.
Procurarsi i sorgenti di Firefox Nightly
La cartella dei sorgenti di Nightly contiene Firefox, Thunderbird e SeaMonkey. Occupa circa 2 GB di dati e ci sono più metodi per procurarsela.
Lo script bootstrap.py
Si tratta di un particolare script Python che automatizza il processo di download dei sorgenti, che possono essere prelevati usando mercurial o git a seconda del comando utilizzato.
Lo script bootstrap.py andrà scaricato ed eseguito da terminale dopo essersi assicurati di avere spazio sufficiente sul disco.
La versione mercurial richiederà di abilitare/disabilitare diverse opzioni per sviluppatori e la sconsiglio per una prima compilazione. Il metodo a mio giudizio più semplice è il download manuale descritto nel prossimo paragrafo.
Download manuale dei sorgenti
Aprire il terminale e posizionarsi in una cartella con almeno 10 GB di spazio disponibile.
Dare il seguente comando da terminale:
I sorgenti verranno salvati nella cartella mozilla-central
Artifact builds
E’ possibile compilare Firefox in due modi differenti. La modalità classica, nella quale verranno compilati tutti i componenti necessari, può impiegare fino ad un ora e mezza su un PC di ultima generazione (consigliata per gli sviluppatori) mentre la modalità artifact in genere impiega circa dieci minuti, a seconda della velocità di connessione.
La modalità artifact, recentemente introdotta, prevede lo scaricamento di componenti C ++ precompilati anziché crearli localmente ed è l’ideale per chi si limita semplicemente ad utilizzare la build creata.
Per scaricare e utilizzare automaticamente gli “artefatti binari” predefiniti aggiungere la seguenti riga nel file mozconfig:
Il mozconfig base che utilizzo di solito è il seguente:
objdir-ffosS-release è il nome della cartella dove la build verrà salvata ed è possibile usarne un altro a scelta.
La scelta del branding
Con ac_add_options –enable-official-branding diciamo al compilatore di utilizzare il branding ufficiale, ovvero il set di icone e loghi contenuti nella sottocartella /browser/branding/official.
Per un utilizzo personale è possibile utilizzare uno a scelta fra i branding aurora, nightly official e unofficial presenti nelle rispettiva cartelle oppure modificarne uno a proprio gusto sostituendo le icone all’interno, avendo la cura di mantenere le dimensioni di ognuna di esse o creando una cartella ex novo.
Avviare la compilazione di Firefox si Linux:
Aprire il terminale e portarsi all’interno della cartella dei sorgenti, che se si è seguito il metodo manuale descritto sopra, sarà mozilla-central, ed avviare la compilazione:
Il lungo processo di compilazione inizierà con la verifica delle librerie necessarie mostrate in una serie di righe seguite da yes or not. Se si tratta della vostra prima compilazione è sicuro che si interromperà quasi subito.
Ad ogni eventuale interruzione del processo leggere l’output dell’ultimo errore e installare il pacchetto che contiene il file necessario (in genere libxxx.dev su Debian/Ubuntu e derivate). Aiutarsi con una ricerca sul Web del tipo “missing libxxx nome distribuzione“.
Ci potrebbero anche essere degli errori relativi al mozconfig, con parti da eliminare perché non supportate dalla compilazione.
In entrambi i casi installare il necessario, correggere gli errori e ridare il comando $ ./mach build.
Se tutto è andato bene la compilazione inizierà dopo il breve messaggio reticulating splines.
Una volta terminata la compilazione confermata dal messaggio
Sarà possibile testare Firefox lanciandolo direttamente dai sorgenti (objdir-xxxxx-release/dist/bin) con il comando:
Installare la build di Firefox nel sistema
Prima di eseguire l’installazione rimuovere ogni altra versione del browser installata.
Dare il seguente comando come superuser (o preceduto da sudo):
Se si è utilizzato clone sarà possibile in futuro aggiungere soltanto le modifiche ai sorgenti senza doverli riscaricare per intero e procedere nuovamente alla compilazione con:
L’operazione tuttavia potrebbe restituire svariati errori; dopo un cambio di versione è consigliabile ripetere il download dei sorgenti.
Localizzare Firefox in Italiano
La versione risultante potrebbe avere dei problemi come l’assenza parziale dei caratteri all’interno del menu preferenze e sarà localizzata in inglese.
Per localizzarla in italiano installare il language pack da questo indirizzo:
https://ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central-l10n/linux-x86_64/xpi/
Fare clic su quello che riporta il numero di versione installato seguito della sigla della nazione.
Ad esempio per localizzare Firefox Nightly 87.0a1 in italiano utilizzare
Consiglio anche di installare uno o più dizionari dalla seguente pagina (colonna di destra):
https://addons.mozilla.org/it/firefox/language-tools/
Nel caso si riscontrassero errori di installazione con language pack e dizionari portare prima a false in about:config il parametro extensions.langpacks.signatures.required e assegnare il valore it a intl.locale.requested.
Firefox verrà installato in /usr/local/lib e saranno creati i relativi collegamenti.
Non sarà possibile aggiornare il browser dalla sua interfaccia a meno che non si abilitino funzioni particolari nel mozconfig. Cosi facendo tuttavia l’eventuale aggiornamento resetterà il branding/versione e si tornerà ad avere una comune build precompilata da Mozilla.
Se la versione installata avesse il problema descritto in questo bug:
Building Nightly 74: Gah. Your tab just crashed
Copiare la cartella .. /objdir-xxxxx/dist/bin in /usr/local/lib rinominarla firefox sovrascrivendola al posto di quella esistente.
Leave a Reply