Arch Linux: ottimizzare la compilazione da AUR
AUR (ArchLinux User Repository) è un server di pacchetti per ArchLinux non ufficiale, supportato dalla comunità di utenti e ricco di pacchetti utili e in continua evoluzione. ArchLinux mette a disposizione degli utenti un sistema ufficiale di compilazione (Arch Build System) per installare pacchetti sviluppati dalla comunità. Analogamente ad un Makefile e al tool make, ArchLinux fa uso di un file PKGBUILD che viene elaborato dal tool makepkg producendo un pacchetto installabile dal gestore ufficiale pacman.
In questa guida si descrive come installare un pacchetto presente in AUR e soprattutto come ottimizzarne la compilazione. Sono ormai un ricordo (o quasi) i PC con processore single core ed è quindi importante saper utilizzare a pieno le potenzialità della propria macchina con 2, 4 o (se siete fortunati) 8 unità di elaborazione (cores).
Installare un pacchetto da AUR
Poiché non è un server ufficiale, il gestore pacman non attinge dai pacchetti presenti in AUR. Ci sono fondamentalmente due metodi per installare un pacchetto da AUR:
- Utilizzare un gestore analogo a pacman, il più diffuso e più supportato al momento (aprile 2020) è
yay
; - Utilizzare
makepkg
direttamente.
In questo secondo caso, scaricare la snapshot da AUR (che solitamente è un archivio contenente il file di testo PKGBUILD), estrarla in una cartella temporanea, posizionarsi nella cartella e lanciare
$ makepkg
makepkg elabora il PKGBUILD e coordina i seguenti step:
- Scarica i sorgenti del pacchetto;
- Compila i sorgenti applicando eventuali patch e correzioni specifiche per ArchLinux;
- Produce il pacchetto da installare e lo comprime come
.pkg.tar.xz
.
Infine lanciare l'installazione il pacchetto appena creato tramite
# pacman -U pacchetto.pkg.tar.xz
Ecco quindi delle semplici ottimizzazioni per questi step.
Ottimizzare la compilazione
Per sfruttare tutti i core disponibili in fase di compilazione è necessario modificare il file di configurazione /etc/makepkg.conf
decommentando e sostituendo la riga
#MAKEFLAGS="-j2"
con
MAKEFLAGS="-j$(nproc)"
In questo modo, saranno utilizzati tutti i processori disponibili, il cui numero è ottenuto automaticamente col comando nproc
.
Ottimizzare la compressione
Il terzo step, la compressione, è quello per esperienza più pesante. La limitazione che si incontra è che il tool xz
, che effettua la compressione, non lavora su più core per default. Si presentano due possibilità:
- Se il pacchetto deve essere compilato e subito installato, è più conveniente non effettuare affatto la compressione. Modificare nuovamente
/etc/makepkg.conf
cambiando l'estensione del pacchetto che si vuole produrre
PKGEXT='.pkg.tar.xz'
con
PKGEXT='.pkg.tar'
- Se si vuole mantenere archiviato il pacchetto per future installazioni sfruttando la compressione a più core, modificare
COMPRESSXZ=(xz -c -z -)
con
COMPRESSXZ=(xz -c -z - --threads=0)
in questo modo xz
sfrutterà tutti i core disponibili
Salvare la configurazione ed il gioco è fatto!