Arch Linux: ottimizzare la compilazione da AUR

Da GolemWiki.
Versione del 28 apr 2020 alle 12:37 di Lucam (discussione | contributi) (categoria)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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!