Difference between revisions of "PKGBUILD (Italiano)"

From ArchWiki
Jump to: navigation, search
m (removed category)
m (codeline -> ic)
Line 16: Line 16:
 
==Costruire i pacchetti==
 
==Costruire i pacchetti==
  
I pacchetti in Arch Linux sono costruiti utilizzando il comando [[makepkg]] e le informazioni sono memorizzate in un file {{filename|PKGBUILD}}. Quando {{codeline|makepkg}} viene eseguito, cerca un {{filename|PKGBUILD}} nella directory corrente e segue le istruzioni ivi contenute per compilare o altrimenti acquisire i file necessari per essere confezionati all'interno di un pacchetto ({{filename|pkgname.pkg.tar.xz}}). Il pacchetto risultante contiene i file binari e le istruzioni di installazione e può essere facilmente installato con pacman.
+
I pacchetti in Arch Linux sono costruiti utilizzando il comando [[makepkg]] e le informazioni sono memorizzate in un file {{filename|PKGBUILD}}. Quando {{Ic|makepkg}} viene eseguito, cerca un {{filename|PKGBUILD}} nella directory corrente e segue le istruzioni ivi contenute per compilare o altrimenti acquisire i file necessari per essere confezionati all'interno di un pacchetto ({{filename|pkgname.pkg.tar.xz}}). Il pacchetto risultante contiene i file binari e le istruzioni di installazione e può essere facilmente installato con pacman.
 
Consultare:
 
Consultare:
 
:* [[Creating Packages (Italiano)|Creazione dei pacchetti]] per ulteriori informazioni.
 
:* [[Creating Packages (Italiano)|Creazione dei pacchetti]] per ulteriori informazioni.
Line 25: Line 25:
 
Seguono le variabili che si possono utilizzare nel file {{filename|PKGBUILD}}:
 
Seguono le variabili che si possono utilizzare nel file {{filename|PKGBUILD}}:
  
;{{codeline|pkgname}}: Il nome del pacchetto. Dovrebbe consistere nei soli '''caratteri alfanumerici e trattini ('-')''' e tutte le lettere dovrebbero essere in '''minuscolo'''. Per motivi di coerenza, il {{codeline|pkgname}} dovrebbe corrispondere al nome dell'archivio dei sorgenti del software che si sta impacchettando. Per esempio, se il software è in {{filename|foobar-2.5.tar.gz}}, il valore di {{codeline|pkgname}} dovrebbe essere ''foobar''. Anche la directory di lavoro in cui risiede il file {{filename|PKGBUILD}} dovrebbe corrispondere al  {{codeline|pkgname}}.
+
;{{Ic|pkgname}}: Il nome del pacchetto. Dovrebbe consistere nei soli '''caratteri alfanumerici e trattini ('-')''' e tutte le lettere dovrebbero essere in '''minuscolo'''. Per motivi di coerenza, il {{Ic|pkgname}} dovrebbe corrispondere al nome dell'archivio dei sorgenti del software che si sta impacchettando. Per esempio, se il software è in {{filename|foobar-2.5.tar.gz}}, il valore di {{Ic|pkgname}} dovrebbe essere ''foobar''. Anche la directory di lavoro in cui risiede il file {{filename|PKGBUILD}} dovrebbe corrispondere al  {{Ic|pkgname}}.
  
;{{codeline|pkgver}}: La versione del pacchetto. Il valore dovrebbe essere lo stesso della versione rilasciata dell'autore del pacchetto. Può contenere lettere, numeri e punti ma '''NON''' può contenere trattini. Se l'autore del pacchetto usa i trattini nello schema di numerazione della versione, si deve sostituirli con degli underscore. Per esempio, se la versione è ''0.99-10'', dovrebbe essere cambiata in ''0.99_10''. Se la variabile pkgver viene usata successivamente nel PKGBUILD, allora l'underscore può essere facilmente sostituito con un trattino, per esempio:
+
;{{Ic|pkgver}}: La versione del pacchetto. Il valore dovrebbe essere lo stesso della versione rilasciata dell'autore del pacchetto. Può contenere lettere, numeri e punti ma '''NON''' può contenere trattini. Se l'autore del pacchetto usa i trattini nello schema di numerazione della versione, si deve sostituirli con degli underscore. Per esempio, se la versione è ''0.99-10'', dovrebbe essere cambiata in ''0.99_10''. Se la variabile pkgver viene usata successivamente nel PKGBUILD, allora l'underscore può essere facilmente sostituito con un trattino, per esempio:
 
   source=($pkgname-${pkgver/_/-}.tar.gz)
 
   source=($pkgname-${pkgver/_/-}.tar.gz)
  
;{{codeline|pkgrel}}: Il numero della versione di rilascio del pacchetto specifico di Arch Linux. Questo valore permette agli utenti di distinguere tra build consecutive della stessa versione del pacchetto. Quando una nuova versione del pacchetto viene rilasciata, il '''numero di rilascio parte da 1'''. Nel caso in cui si apportino aggiustamenti e ottimizzazioni al file {{filename|PKGBUILD}}, allora il pacchetto verrà '''ri-rilasciato''' e il '''numero di rilascio''' verrà incrementato di 1. Nel caso in cui esca una nuova versione del pacchetto, il numero di rilascio verrà resettato a 1.
+
;{{Ic|pkgrel}}: Il numero della versione di rilascio del pacchetto specifico di Arch Linux. Questo valore permette agli utenti di distinguere tra build consecutive della stessa versione del pacchetto. Quando una nuova versione del pacchetto viene rilasciata, il '''numero di rilascio parte da 1'''. Nel caso in cui si apportino aggiustamenti e ottimizzazioni al file {{filename|PKGBUILD}}, allora il pacchetto verrà '''ri-rilasciato''' e il '''numero di rilascio''' verrà incrementato di 1. Nel caso in cui esca una nuova versione del pacchetto, il numero di rilascio verrà resettato a 1.
  
; {{Codeline|epoch}} : Un valore intero, specifico di Archlinux, che rappresenta "l'età" tramite la quale effettuare un confronto tra numeri di versione. Questo valore consente di ignorare le normali regole di confronto di versione per pacchetti che hanno una numerazione di versione inconsistente, che richiedono un downgrade, che devono cambiare lo schema di numerazione, etc. Per impostazione predefinita, si assume che i pacchetti abbiano un valore di epoch pari a ''0''. Non utilizzare questa variabile a meno che non si sia assolutamente sicuri di ciò che si sta facendo.
+
; {{Ic|epoch}} : Un valore intero, specifico di Archlinux, che rappresenta "l'età" tramite la quale effettuare un confronto tra numeri di versione. Questo valore consente di ignorare le normali regole di confronto di versione per pacchetti che hanno una numerazione di versione inconsistente, che richiedono un downgrade, che devono cambiare lo schema di numerazione, etc. Per impostazione predefinita, si assume che i pacchetti abbiano un valore di epoch pari a ''0''. Non utilizzare questa variabile a meno che non si sia assolutamente sicuri di ciò che si sta facendo.
  
;{{codeline|pkgdesc}}: La descrizione del pacchetto. La descrizione dovrebbe essere di circa 80 caratteri o meno e non dovrebbe includere il nome del pacchetto stesso.  Per esempio, "Nedit è un editor di testo per X11" si dovrebbe scrivere come "un editor di testo per X11."
+
;{{Ic|pkgdesc}}: La descrizione del pacchetto. La descrizione dovrebbe essere di circa 80 caratteri o meno e non dovrebbe includere il nome del pacchetto stesso.  Per esempio, "Nedit è un editor di testo per X11" si dovrebbe scrivere come "un editor di testo per X11."
  
;{{codeline|arch}}: Una array di architetture contro le quali il file  {{Filename|PKGBUILD}} deve essere compilato ed utilizzato. Attualmente, può contenere '''i686''' e/o '''x86_64''', {{codeline|<nowiki>arch=('i686' 'x86_64')</nowiki>}}. E' possibile utilizzare anche il valore '''any''' per i pacchetti indipendenti dall'architettura. È possibile accedere questo valore durante la compilazione con la variabile {{codeline|$CARCH}}.
+
;{{Ic|arch}}: Una array di architetture contro le quali il file  {{Filename|PKGBUILD}} deve essere compilato ed utilizzato. Attualmente, può contenere '''i686''' e/o '''x86_64''', {{Ic|<nowiki>arch=('i686' 'x86_64')</nowiki>}}. E' possibile utilizzare anche il valore '''any''' per i pacchetti indipendenti dall'architettura. È possibile accedere questo valore durante la compilazione con la variabile {{Ic|$CARCH}}.
  
;{{codeline|url}}: L'URL del sito ufficiale del software che si sta pacchettizzando.
+
;{{Ic|url}}: L'URL del sito ufficiale del software che si sta pacchettizzando.
  
;{{codeline|license}}: La licenza con la quale il software è distribuito. Il pacchetto {{Package Official|licenses}} presente in {{codeline|[core]}} fornisce le licenze più comuni in {{filename|/usr/share/licenses/common}}, per esempio {{filename|/usr/share/licenses/common/GPL}}. Se un pacchetto è munito di una di queste licenze, il valore dovrebbe essere impostato al nome della directory, per esempio {{codeline|<nowiki>license=('GPL')</nowiki>}}. Se la licenza appropriata non è inclusa del pacchetto ufficiale {{Package Official|licenses}}, si devono fare alcune cose:
+
;{{Ic|license}}: La licenza con la quale il software è distribuito. Il pacchetto {{Package Official|licenses}} presente in {{Ic|[core]}} fornisce le licenze più comuni in {{filename|/usr/share/licenses/common}}, per esempio {{filename|/usr/share/licenses/common/GPL}}. Se un pacchetto è munito di una di queste licenze, il valore dovrebbe essere impostato al nome della directory, per esempio {{Ic|<nowiki>license=('GPL')</nowiki>}}. Se la licenza appropriata non è inclusa del pacchetto ufficiale {{Package Official|licenses}}, si devono fare alcune cose:
 
:# Il file della licenza dovrebbe essere incluso in: {{filename|/usr/share/licenses/'''pkgname'''/}}, per esempio {{filename|/usr/share/licenses/foobar/LICENSE}}.
 
:# Il file della licenza dovrebbe essere incluso in: {{filename|/usr/share/licenses/'''pkgname'''/}}, per esempio {{filename|/usr/share/licenses/foobar/LICENSE}}.
 
:# Se l'archivio dei sorgenti '''NON''' contiene i dettagli della licenza ed essa è visualizzata altrove, ad esempio su un sito web, allora si doverbbe copiare la licenza su un file da includere.
 
:# Se l'archivio dei sorgenti '''NON''' contiene i dettagli della licenza ed essa è visualizzata altrove, ad esempio su un sito web, allora si doverbbe copiare la licenza su un file da includere.
:# Aggiungere '''custom''' all'array delle {{codeline|license}}. Facoltativamente, si può rimpiazzare '''custom''' con '''custom:nome della licenza'''. Una volta che la licenza è utilizzata in due o più pacchetti dei repository ufficiali (incluso {{codeline|[community]}}), entrerà a far parte del pacchetto {{Package Official|licenses}}.
+
:# Aggiungere '''custom''' all'array delle {{Ic|license}}. Facoltativamente, si può rimpiazzare '''custom''' con '''custom:nome della licenza'''. Una volta che la licenza è utilizzata in due o più pacchetti dei repository ufficiali (incluso {{Ic|[community]}}), entrerà a far parte del pacchetto {{Package Official|licenses}}.
:* Le licenze [[Wikipedia:BSD License|BSD]], [[Wikipedia:MIT License|MIT]], [[Wikipedia:ZLIB license|zlib/png]] e [[Wikipedia:Python License|Python]] sono casi speciali e potrebbero non essere inclusi nel pacchetto {{Package Official|licenses}}. Per quanto riguarda l'array {{Codeline|license}}, queste vengono trattate come licenze comuni ({{Codeline|<nowiki>license=('BSD')</nowiki>}}, {{Codeline|<nowiki>license=('MIT')</nowiki>}}, {{Codeline|<nowiki>license=('ZLIB')</nowiki>}} e {{Codeline|<nowiki>license=('Python')</nowiki>}}) ma tecnicamente ognuna è una licenza custom poiché ha il proprio copyright. Ogni pacchetto munito di una di queste quattro licenze dovrebbe avere la propria salvata in {{filename|/usr/share/licenses/'''pkgname'''}}. Alcuni pacchetti potrebbero non essere coperti da una sola licenza. In questi casi, sono possibili più voci nell'array license, ad esempio {{codeline|<nowiki>license=('GPL' 'custom:nome della licenza')</nowiki>}}.
+
:* Le licenze [[Wikipedia:BSD License|BSD]], [[Wikipedia:MIT License|MIT]], [[Wikipedia:ZLIB license|zlib/png]] e [[Wikipedia:Python License|Python]] sono casi speciali e potrebbero non essere inclusi nel pacchetto {{Package Official|licenses}}. Per quanto riguarda l'array {{Ic|license}}, queste vengono trattate come licenze comuni ({{Ic|<nowiki>license=('BSD')</nowiki>}}, {{Ic|<nowiki>license=('MIT')</nowiki>}}, {{Ic|<nowiki>license=('ZLIB')</nowiki>}} e {{Ic|<nowiki>license=('Python')</nowiki>}}) ma tecnicamente ognuna è una licenza custom poiché ha il proprio copyright. Ogni pacchetto munito di una di queste quattro licenze dovrebbe avere la propria salvata in {{filename|/usr/share/licenses/'''pkgname'''}}. Alcuni pacchetti potrebbero non essere coperti da una sola licenza. In questi casi, sono possibili più voci nell'array license, ad esempio {{Ic|<nowiki>license=('GPL' 'custom:nome della licenza')</nowiki>}}.
 
:* Inoltre, le (L)GPL hanno diverse versioni e permutazioni di queste versioni. Per il software (L)GPL, la convenzione è:
 
:* Inoltre, le (L)GPL hanno diverse versioni e permutazioni di queste versioni. Per il software (L)GPL, la convenzione è:
 
:** (L)GPL - (L)GPLv2 o qualsiasi versione successiva
 
:** (L)GPL - (L)GPLv2 o qualsiasi versione successiva
 
:** (L)GPL2 - (L)GPL2 solamente
 
:** (L)GPL2 - (L)GPL2 solamente
 
:** (L)GPL3 - (L)GPL3 o qualsiasi versione successiva
 
:** (L)GPL3 - (L)GPL3 o qualsiasi versione successiva
:* Se non si riesce a determinare la licenza del software che si sta pacchettizzando, {{Codeline|PKGBUILD.proto}} consiglia di utilizzare il valore {{Codeline|unknown}}. Bisonga comunque contattare il creatore del software per sapere a quali condizioni il prodotto è disponibile (ed a quali non lo è)   
+
:* Se non si riesce a determinare la licenza del software che si sta pacchettizzando, {{Ic|PKGBUILD.proto}} consiglia di utilizzare il valore {{Ic|unknown}}. Bisonga comunque contattare il creatore del software per sapere a quali condizioni il prodotto è disponibile (ed a quali non lo è)   
  
;{{codeline|groups}}: Il gruppo al quale appartiene il pacchetto. Per esempio, quando si installa il pacchetto {{Package Official|kdebase}}, si installano tutti i pacchetti che appartengono al gruppo ''kde''.
+
;{{Ic|groups}}: Il gruppo al quale appartiene il pacchetto. Per esempio, quando si installa il pacchetto {{Package Official|kdebase}}, si installano tutti i pacchetti che appartengono al gruppo ''kde''.
  
;{{codeline|depends}}: Un array di nomi dei pacchetti che devono essere installati per poter poi lanciare questo software. Se il software richiede una versione minima di una dipendenza, si dovrebbe usare l'operatore '''>=''' per sottolinearlo, ad esempio: {{codeline|<nowiki>depends=('foobar>=1.8.0')</nowiki>}}. Non è necessario elencare i pacchetti che il software richiede come dipendenza se questi sono già richiesti come tale dagli altri pacchetti elencati nell'array. Per esempio, ''gtk2'' dipende da ''glib2'' e ''glibc''. Tuttavia, ''glibc'' non è necessita di essere elencato come dipendenza per ''gtk2'' visto che è dipendenza per ''glib2''.
+
;{{Ic|depends}}: Un array di nomi dei pacchetti che devono essere installati per poter poi lanciare questo software. Se il software richiede una versione minima di una dipendenza, si dovrebbe usare l'operatore '''>=''' per sottolinearlo, ad esempio: {{Ic|<nowiki>depends=('foobar>=1.8.0')</nowiki>}}. Non è necessario elencare i pacchetti che il software richiede come dipendenza se questi sono già richiesti come tale dagli altri pacchetti elencati nell'array. Per esempio, ''gtk2'' dipende da ''glib2'' e ''glibc''. Tuttavia, ''glibc'' non è necessita di essere elencato come dipendenza per ''gtk2'' visto che è dipendenza per ''glib2''.
  
;{{codeline|makedepends}}: Un array di nomi dei pacchetti che devono essere installati per poter compilare il software ma inutili per poter usare il software dopo l'installazione. E' possibile specificare la versione minima di dipendenza del pacchetto nello stesso formato ell'array {{codeline|depends}}.
+
;{{Ic|makedepends}}: Un array di nomi dei pacchetti che devono essere installati per poter compilare il software ma inutili per poter usare il software dopo l'installazione. E' possibile specificare la versione minima di dipendenza del pacchetto nello stesso formato ell'array {{Ic|depends}}.
  
 
:{{Attenzione| Quando si compila con makepkg, si assume che si abbia già installato nel proprio sistema il gruppo "base-devel" . I membri di "base-devel" '''non''' devono essere inclusi nell'array makedepends.}}
 
:{{Attenzione| Quando si compila con makepkg, si assume che si abbia già installato nel proprio sistema il gruppo "base-devel" . I membri di "base-devel" '''non''' devono essere inclusi nell'array makedepends.}}
  
;{{codeline|optdepends}}: Un array di nomi dei pacchetti che non sono necessari al software per funzionare ma che forniscono funzionalità aggiuntive. Si dovrebbe aggiungere una piccola descrizione delle funzionalità che ogni pacchetto fornisce. Un'array {{Codeline|optdepends}} deve assomigliare a questo:
+
;{{Ic|optdepends}}: Un array di nomi dei pacchetti che non sono necessari al software per funzionare ma che forniscono funzionalità aggiuntive. Si dovrebbe aggiungere una piccola descrizione delle funzionalità che ogni pacchetto fornisce. Un'array {{Ic|optdepends}} deve assomigliare a questo:
 
  optdepends=('cups: supporto per la stampa'
 
  optdepends=('cups: supporto per la stampa'
 
  'sane: supporto per gli scanner'
 
  'sane: supporto per gli scanner'
Line 68: Line 68:
 
  'libpng: supporto per le immagini PNG')
 
  'libpng: supporto per le immagini PNG')
  
;{{codeline|provides}}: Un array di nomi dei pacchetti dei quali questo software fornisce le funzionalità (oppure un pacchetto virtuale come ''cron'' o ''sh''). Se si usa questa variabile, si dovrebbe aggiungere la versione ({{codeline|pkgver}} e magari la {{codeline|pkgrel}}) che questo pacchetto fornisce se le dipendenze possono esserne influenzate. Per esempio, se si vuole fornire una versione modificata di ''qt'' chiamata ''qt-foobar'' versione 3.3.8 che fornisce ''qt'' allora l'array {{codeline|provides}} dovrebbe essere: {{codeline|<nowiki>provides=('qt=3.3.8')</nowiki>}}. Mettere {{codeline|<nowiki>provides=('qt')</nowiki>}} causerà il fallimento di quelle dipendenze che richiedono una specifica versione di ''qt''.  Non aggiungere {{codeline|pkgname}} all'array provide,  viene fatto in automatico.
+
;{{Ic|provides}}: Un array di nomi dei pacchetti dei quali questo software fornisce le funzionalità (oppure un pacchetto virtuale come ''cron'' o ''sh''). Se si usa questa variabile, si dovrebbe aggiungere la versione ({{Ic|pkgver}} e magari la {{Ic|pkgrel}}) che questo pacchetto fornisce se le dipendenze possono esserne influenzate. Per esempio, se si vuole fornire una versione modificata di ''qt'' chiamata ''qt-foobar'' versione 3.3.8 che fornisce ''qt'' allora l'array {{Ic|provides}} dovrebbe essere: {{Ic|<nowiki>provides=('qt=3.3.8')</nowiki>}}. Mettere {{Ic|<nowiki>provides=('qt')</nowiki>}} causerà il fallimento di quelle dipendenze che richiedono una specifica versione di ''qt''.  Non aggiungere {{Ic|pkgname}} all'array provide,  viene fatto in automatico.
  
;{{codeline|conflicts}}: Un array di nomi dei pacchetti che possono causare problemi con questo pacchetto installato. Si possono anche specificare le proprietà delle versioni dei pacchetti che vanno in conflitto nello stesso formato dell'array {{codeline|depends}}.
+
;{{Ic|conflicts}}: Un array di nomi dei pacchetti che possono causare problemi con questo pacchetto installato. Si possono anche specificare le proprietà delle versioni dei pacchetti che vanno in conflitto nello stesso formato dell'array {{Ic|depends}}.
  
;{{codeline|replaces}}: Un array di nomi dei pacchetti obsoleti che sono rimpiazzati da questo pacchetto, per esempio: {{codeline|<nowiki>replaces=('ethereal')</nowiki>}} per il pacchetto{{Package Official|wireshark}}. Dopo aver aggiornato il database con {{codeline|pacman -Sy}}, rimpiazzerà immediatamente un pacchetto installato con un altro pacchetto dei repository, accoppiato relativamente a  {{codeline|replaces}}. Se si sta fornendo una versione sostitutiva di un pacchetto esistente, si dovrà usare la variabile {{codeline|conflicts}} la quale è valutata soltanto nel momento in cui si installerà il pacchetto in conflitto.
+
;{{Ic|replaces}}: Un array di nomi dei pacchetti obsoleti che sono rimpiazzati da questo pacchetto, per esempio: {{Ic|<nowiki>replaces=('ethereal')</nowiki>}} per il pacchetto{{Package Official|wireshark}}. Dopo aver aggiornato il database con {{Ic|pacman -Sy}}, rimpiazzerà immediatamente un pacchetto installato con un altro pacchetto dei repository, accoppiato relativamente a  {{Ic|replaces}}. Se si sta fornendo una versione sostitutiva di un pacchetto esistente, si dovrà usare la variabile {{Ic|conflicts}} la quale è valutata soltanto nel momento in cui si installerà il pacchetto in conflitto.
  
;{{codeline|backup}}: Un array di file da salvare come {{filename|file.pacsave}} quando il pacchetto viene rimosso. Questa variabile è comunemente usata con i pacchetti che mettono i loro file di configurazione in {{filename|/etc}}. I percorsi dei file in questo array dovrebbero essere percorsi relativi (ad esempio {{filename|etc/pacman.conf}}) non assoluti (come {{filename|/etc/pacman.conf}}).
+
;{{Ic|backup}}: Un array di file da salvare come {{filename|file.pacsave}} quando il pacchetto viene rimosso. Questa variabile è comunemente usata con i pacchetti che mettono i loro file di configurazione in {{filename|/etc}}. I percorsi dei file in questo array dovrebbero essere percorsi relativi (ad esempio {{filename|etc/pacman.conf}}) non assoluti (come {{filename|/etc/pacman.conf}}).
  
;{{codeline|options}}: Questo array permette di sovrascrivere alcuni dei comportamenti di default di {{codeline|makepkg}}. Per impostare un'opzione, si deve includere il nome dell'opzione nell'array. Per invertire il comportamento di default, si deve mettere un '''!''' davanti l'opzione. Questo è un elenco delle opzioni che si possono mettere nell'array:
+
;{{Ic|options}}: Questo array permette di sovrascrivere alcuni dei comportamenti di default di {{Ic|makepkg}}. Per impostare un'opzione, si deve includere il nome dell'opzione nell'array. Per invertire il comportamento di default, si deve mettere un '''!''' davanti l'opzione. Questo è un elenco delle opzioni che si possono mettere nell'array:
 
:* '''''strip''''' - Toglie i simboli dai binari e dalle librerie.
 
:* '''''strip''''' - Toglie i simboli dai binari e dalle librerie.
 
:* '''''docs''''' - Salva le directory {{filename|/doc}}.
 
:* '''''docs''''' - Salva le directory {{filename|/doc}}.
Line 82: Line 82:
 
:* '''''emptydirs''''' - Lascia le directory vuote nel pacchetto.
 
:* '''''emptydirs''''' - Lascia le directory vuote nel pacchetto.
 
:* '''''zipman''''' - Comprime le pagine di ''man'' e ''info'' con ''gzip''.
 
:* '''''zipman''''' - Comprime le pagine di ''man'' e ''info'' con ''gzip''.
:* '''''ccache''''' - Permette l'uso di {{codeline|ccache}} durante la compilazione. Con i pacchetti che hanno problemi con {{codeline|ccache}} durante la compilazione è più utile nella sua forma negata {{codeline|!ccache}}.
+
:* '''''ccache''''' - Permette l'uso di {{Ic|ccache}} durante la compilazione. Con i pacchetti che hanno problemi con {{Ic|ccache}} durante la compilazione è più utile nella sua forma negata {{Ic|!ccache}}.
:* '''''distcc''''' - Permette l'uso di {{Codeline|distcc}} durante la compilazione. Con i pacchetti che hanno problemi con {{codeline|distcc}} durante la compilazione è più utile nella sua forma negata {{Codeline|!distcc}}.
+
:* '''''distcc''''' - Permette l'uso di {{Ic|distcc}} durante la compilazione. Con i pacchetti che hanno problemi con {{Ic|distcc}} durante la compilazione è più utile nella sua forma negata {{Ic|!distcc}}.
:* '''''makeflags''''' - Permette l'uso di {{Codeline|makeflags}} specifiche per l'utente durante la compilazione. Con i pacchetti che hanno problemi con {{codeline|makeflags}} durante la compilazione è più utile nella sua forma negata {{Codeline|!makeflags}}.
+
:* '''''makeflags''''' - Permette l'uso di {{Ic|makeflags}} specifiche per l'utente durante la compilazione. Con i pacchetti che hanno problemi con {{Ic|makeflags}} durante la compilazione è più utile nella sua forma negata {{Ic|!makeflags}}.
  
;{{codeline|install}} : Il nome dello script di {{filename|.install}} che deve essere incluso nel pacchetto. ''Pacman'' ha l'abilità di memorizzare ed eseguire uno script specifico per pacchetto quando installa, rimuove o aggiorna un pacchetto. Lo script contiene le seguenti istruzioni che vengono eseguite in tempi diversi:
+
;{{Ic|install}} : Il nome dello script di {{filename|.install}} che deve essere incluso nel pacchetto. ''Pacman'' ha l'abilità di memorizzare ed eseguire uno script specifico per pacchetto quando installa, rimuove o aggiorna un pacchetto. Lo script contiene le seguenti istruzioni che vengono eseguite in tempi diversi:
 
:* '''''pre_install''''' - Lo script è lanciato appena prima dell'estrazione dei file. La nuova versione del pacchetto viene passata come argomento alla funzione.
 
:* '''''pre_install''''' - Lo script è lanciato appena prima dell'estrazione dei file. La nuova versione del pacchetto viene passata come argomento alla funzione.
 
:* '''''post_install''''' - Lo script è lanciato appena dopo l'estrazione dei file. La nuova versione del pacchetto viene passata come argomento alla funzione.
 
:* '''''post_install''''' - Lo script è lanciato appena dopo l'estrazione dei file. La nuova versione del pacchetto viene passata come argomento alla funzione.
Line 99: Line 99:
 
:{{tip|Un prototipo {{filename|.install}} è disponibile al {{filename|/usr/share/pacman/proto.install}}.}}
 
:{{tip|Un prototipo {{filename|.install}} è disponibile al {{filename|/usr/share/pacman/proto.install}}.}}
  
;{{codeline|source}} : un array di file che sono necessari per compilare il pacchetto. Deve contenere la locazione dei sorgenti del software, che in quasi tutte le occasioni è un completo URL HTTP o FTP. Le variabili precendentemente impostatate {{codeline|pkgname}} e {{codeline|pkgver}} possono essere usate efficacemente qui (per esempio {{codeline|<nowiki>source=(http://example.com/$pkgname-$pkgver.tar.gz)</nowiki>}})
+
;{{Ic|source}} : un array di file che sono necessari per compilare il pacchetto. Deve contenere la locazione dei sorgenti del software, che in quasi tutte le occasioni è un completo URL HTTP o FTP. Le variabili precendentemente impostatate {{Ic|pkgname}} e {{Ic|pkgver}} possono essere usate efficacemente qui (per esempio {{Ic|<nowiki>source=(http://example.com/$pkgname-$pkgver.tar.gz)</nowiki>}})
  
:{{Note|Se si ha il bisogno di fornire file che non sono scaricabili al volo, per esempio patch fatte in proprio, è possibile mettere questi file nella stessa directory del proprio {{filename|PKGBUILD}} e aggiungere il nome del file a questo array. Qualsiasi percorso viene aggiunto qui è risolto relativamente alla directory in cui giace il {{Filename|PKGBUILD}}. Prima che il processo di compilazione parta, tutti i file che sono riferiti in questo array, verranno scaricati o controllati in sussistenza, e {{codeline|makepkg}} non procederà oltre se qualcuno manca.}}
+
:{{Note|Se si ha il bisogno di fornire file che non sono scaricabili al volo, per esempio patch fatte in proprio, è possibile mettere questi file nella stessa directory del proprio {{filename|PKGBUILD}} e aggiungere il nome del file a questo array. Qualsiasi percorso viene aggiunto qui è risolto relativamente alla directory in cui giace il {{Filename|PKGBUILD}}. Prima che il processo di compilazione parta, tutti i file che sono riferiti in questo array, verranno scaricati o controllati in sussistenza, e {{Ic|makepkg}} non procederà oltre se qualcuno manca.}}
  
 
: {{Note|È possibile specificare un nome diverso per il file scaricato, nel caso tale file abbia per qualche motivo un nome diverso, come il parametro GET assegnato all'url, con la seguente sintassi: <filename>::<fileuri>, non includere i caratteri '<' and '>'}}
 
: {{Note|È possibile specificare un nome diverso per il file scaricato, nel caso tale file abbia per qualche motivo un nome diverso, come il parametro GET assegnato all'url, con la seguente sintassi: <filename>::<fileuri>, non includere i caratteri '<' and '>'}}
  
;{{codeline|noextract}}: Un array di file elencati nell'array {{codeline|source}} che non dovrebbero essere estratti dal loro archivio da {{codeline|makepkg}}. Per lo più si applica a certi file zip che non possono essere gestiti da ''bsdtar'' visto che ''libarchive'' processa tutti i file come flussi piuttosto che ad accesso casuale come fa ''unzip''. In queste situazioni si dovrebbe aggiungere ''unzip'' all'array {{codeline|makedepends}} e le prime linee della funzione {{codeline|build()}} dovrebbero contenere:
+
;{{Ic|noextract}}: Un array di file elencati nell'array {{Ic|source}} che non dovrebbero essere estratti dal loro archivio da {{Ic|makepkg}}. Per lo più si applica a certi file zip che non possono essere gestiti da ''bsdtar'' visto che ''libarchive'' processa tutti i file come flussi piuttosto che ad accesso casuale come fa ''unzip''. In queste situazioni si dovrebbe aggiungere ''unzip'' all'array {{Ic|makedepends}} e le prime linee della funzione {{Ic|build()}} dovrebbero contenere:
 
  cd $srcdir/$pkgname-$pkgver
 
  cd $srcdir/$pkgname-$pkgver
 
  unzip [source].zip
 
  unzip [source].zip
  
;{{codeline|md5sums}}: Un array di checksum MD5 dei file elencati nell'array {{codeline|source}}. Una volta che tutti i file presenti nell'array {{codeline|source}} saranno disponibili, per ogni file verrà generato automaticamente un hash MD5 e confrontato con il valore di questo array nello stesso ordine in cui appare nell'array {{codeline|source}}. Mentre l'ordine dell'array source non è rilevante, è importante che questo combaci con l'ordine di questo array dato che {{codeline|makepkg}} non può indovinare a quale file sorgente appartenga la checksum. E' possibile generare questo array rapidamente e facilmente usando il comando {{codeline|makepkg -g}} nella directory che contiene il file {{filename|PKGBUILD}}. Notare che l'algoritmo MD5 è noto per avere falle, quindi si dovrebbero considerare alternative più sicure.
+
;{{Ic|md5sums}}: Un array di checksum MD5 dei file elencati nell'array {{Ic|source}}. Una volta che tutti i file presenti nell'array {{Ic|source}} saranno disponibili, per ogni file verrà generato automaticamente un hash MD5 e confrontato con il valore di questo array nello stesso ordine in cui appare nell'array {{Ic|source}}. Mentre l'ordine dell'array source non è rilevante, è importante che questo combaci con l'ordine di questo array dato che {{Ic|makepkg}} non può indovinare a quale file sorgente appartenga la checksum. E' possibile generare questo array rapidamente e facilmente usando il comando {{Ic|makepkg -g}} nella directory che contiene il file {{filename|PKGBUILD}}. Notare che l'algoritmo MD5 è noto per avere falle, quindi si dovrebbero considerare alternative più sicure.
  
;{{codeline|sha1sums}} : Un array di checksum SHA-1 a 160-bit. Questa è un'alternativa alle md5sums descritte in precedenza, ma anch'esse sono note per avere delle debolezze, quindi si dovrebbero considerare alternative più sicure. Per abilitare l'uso e la generazione di queste checksums, assicurarsi di impostare l'opzione INTEGRITY_CHECK in makepkg.conf. Vedere man makepkg.conf.
+
;{{Ic|sha1sums}} : Un array di checksum SHA-1 a 160-bit. Questa è un'alternativa alle md5sums descritte in precedenza, ma anch'esse sono note per avere delle debolezze, quindi si dovrebbero considerare alternative più sicure. Per abilitare l'uso e la generazione di queste checksums, assicurarsi di impostare l'opzione INTEGRITY_CHECK in makepkg.conf. Vedere man makepkg.conf.
  
;{{codeline|sha256sums, sha384sums, sha512sums}} : Un array di checksum SHA-2 con dimensione del digest di 256, 384 e 512 bit rispettivamente. Queste sono delle alternative alle md5sums descritte in precedenza e sono generalmente considerate più sicure. Per abilitare l'uso e la generazione di queste checksums, assicurarsi di impostare l'opzione INTEGRITY_CHECK in makepkg.conf. Vedere man makepkg.conf.
+
;{{Ic|sha256sums, sha384sums, sha512sums}} : Un array di checksum SHA-2 con dimensione del digest di 256, 384 e 512 bit rispettivamente. Queste sono delle alternative alle md5sums descritte in precedenza e sono generalmente considerate più sicure. Per abilitare l'uso e la generazione di queste checksums, assicurarsi di impostare l'opzione INTEGRITY_CHECK in makepkg.conf. Vedere man makepkg.conf.
  
 
È prassi comune preservare l'ordine delle variabili del {{filename|PKGBUILD}} come sono state mostrate sopra. Ad ogni modo, non è obbligatorio, dato che il solo requisito in questo contesto è la sintassi corretta di [[Wikipedia:Bash|Bash]].
 
È prassi comune preservare l'ordine delle variabili del {{filename|PKGBUILD}} come sono state mostrate sopra. Ad ogni modo, non è obbligatorio, dato che il solo requisito in questo contesto è la sintassi corretta di [[Wikipedia:Bash|Bash]].

Revision as of 17:43, 11 December 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Un Template:Filename è un file di descrizione della costruzione di pacchetti di Arch Linux, usato durante la creazione dei pacchetti. Questo articolo descrive le possibili variabili del Template:Filename.

Costruire i pacchetti

I pacchetti in Arch Linux sono costruiti utilizzando il comando makepkg e le informazioni sono memorizzate in un file Template:Filename. Quando makepkg viene eseguito, cerca un Template:Filename nella directory corrente e segue le istruzioni ivi contenute per compilare o altrimenti acquisire i file necessari per essere confezionati all'interno di un pacchetto (Template:Filename). Il pacchetto risultante contiene i file binari e le istruzioni di installazione e può essere facilmente installato con pacman. Consultare:

Variabili

Seguono le variabili che si possono utilizzare nel file Template:Filename:

pkgname
Il nome del pacchetto. Dovrebbe consistere nei soli caratteri alfanumerici e trattini ('-') e tutte le lettere dovrebbero essere in minuscolo. Per motivi di coerenza, il pkgname dovrebbe corrispondere al nome dell'archivio dei sorgenti del software che si sta impacchettando. Per esempio, se il software è in Template:Filename, il valore di pkgname dovrebbe essere foobar. Anche la directory di lavoro in cui risiede il file Template:Filename dovrebbe corrispondere al pkgname.
pkgver
La versione del pacchetto. Il valore dovrebbe essere lo stesso della versione rilasciata dell'autore del pacchetto. Può contenere lettere, numeri e punti ma NON può contenere trattini. Se l'autore del pacchetto usa i trattini nello schema di numerazione della versione, si deve sostituirli con degli underscore. Per esempio, se la versione è 0.99-10, dovrebbe essere cambiata in 0.99_10. Se la variabile pkgver viene usata successivamente nel PKGBUILD, allora l'underscore può essere facilmente sostituito con un trattino, per esempio:
 source=($pkgname-${pkgver/_/-}.tar.gz)
pkgrel
Il numero della versione di rilascio del pacchetto specifico di Arch Linux. Questo valore permette agli utenti di distinguere tra build consecutive della stessa versione del pacchetto. Quando una nuova versione del pacchetto viene rilasciata, il numero di rilascio parte da 1. Nel caso in cui si apportino aggiustamenti e ottimizzazioni al file Template:Filename, allora il pacchetto verrà ri-rilasciato e il numero di rilascio verrà incrementato di 1. Nel caso in cui esca una nuova versione del pacchetto, il numero di rilascio verrà resettato a 1.
epoch 
Un valore intero, specifico di Archlinux, che rappresenta "l'età" tramite la quale effettuare un confronto tra numeri di versione. Questo valore consente di ignorare le normali regole di confronto di versione per pacchetti che hanno una numerazione di versione inconsistente, che richiedono un downgrade, che devono cambiare lo schema di numerazione, etc. Per impostazione predefinita, si assume che i pacchetti abbiano un valore di epoch pari a 0. Non utilizzare questa variabile a meno che non si sia assolutamente sicuri di ciò che si sta facendo.
pkgdesc
La descrizione del pacchetto. La descrizione dovrebbe essere di circa 80 caratteri o meno e non dovrebbe includere il nome del pacchetto stesso. Per esempio, "Nedit è un editor di testo per X11" si dovrebbe scrivere come "un editor di testo per X11."
arch
Una array di architetture contro le quali il file Template:Filename deve essere compilato ed utilizzato. Attualmente, può contenere i686 e/o x86_64, arch=('i686' 'x86_64'). E' possibile utilizzare anche il valore any per i pacchetti indipendenti dall'architettura. È possibile accedere questo valore durante la compilazione con la variabile $CARCH.
url
L'URL del sito ufficiale del software che si sta pacchettizzando.
license
La licenza con la quale il software è distribuito. Il pacchetto Template:Package Official presente in [core] fornisce le licenze più comuni in Template:Filename, per esempio Template:Filename. Se un pacchetto è munito di una di queste licenze, il valore dovrebbe essere impostato al nome della directory, per esempio license=('GPL'). Se la licenza appropriata non è inclusa del pacchetto ufficiale Template:Package Official, si devono fare alcune cose:
  1. Il file della licenza dovrebbe essere incluso in: Template:Filename, per esempio Template:Filename.
  2. Se l'archivio dei sorgenti NON contiene i dettagli della licenza ed essa è visualizzata altrove, ad esempio su un sito web, allora si doverbbe copiare la licenza su un file da includere.
  3. Aggiungere custom all'array delle license. Facoltativamente, si può rimpiazzare custom con custom:nome della licenza. Una volta che la licenza è utilizzata in due o più pacchetti dei repository ufficiali (incluso [community]), entrerà a far parte del pacchetto Template:Package Official.
  • Le licenze BSD, MIT, zlib/png e Python sono casi speciali e potrebbero non essere inclusi nel pacchetto Template:Package Official. Per quanto riguarda l'array license, queste vengono trattate come licenze comuni (license=('BSD'), license=('MIT'), license=('ZLIB') e license=('Python')) ma tecnicamente ognuna è una licenza custom poiché ha il proprio copyright. Ogni pacchetto munito di una di queste quattro licenze dovrebbe avere la propria salvata in Template:Filename. Alcuni pacchetti potrebbero non essere coperti da una sola licenza. In questi casi, sono possibili più voci nell'array license, ad esempio license=('GPL' 'custom:nome della licenza').
  • Inoltre, le (L)GPL hanno diverse versioni e permutazioni di queste versioni. Per il software (L)GPL, la convenzione è:
    • (L)GPL - (L)GPLv2 o qualsiasi versione successiva
    • (L)GPL2 - (L)GPL2 solamente
    • (L)GPL3 - (L)GPL3 o qualsiasi versione successiva
  • Se non si riesce a determinare la licenza del software che si sta pacchettizzando, PKGBUILD.proto consiglia di utilizzare il valore unknown. Bisonga comunque contattare il creatore del software per sapere a quali condizioni il prodotto è disponibile (ed a quali non lo è)
groups
Il gruppo al quale appartiene il pacchetto. Per esempio, quando si installa il pacchetto Template:Package Official, si installano tutti i pacchetti che appartengono al gruppo kde.
depends
Un array di nomi dei pacchetti che devono essere installati per poter poi lanciare questo software. Se il software richiede una versione minima di una dipendenza, si dovrebbe usare l'operatore >= per sottolinearlo, ad esempio: depends=('foobar>=1.8.0'). Non è necessario elencare i pacchetti che il software richiede come dipendenza se questi sono già richiesti come tale dagli altri pacchetti elencati nell'array. Per esempio, gtk2 dipende da glib2 e glibc. Tuttavia, glibc non è necessita di essere elencato come dipendenza per gtk2 visto che è dipendenza per glib2.
makedepends
Un array di nomi dei pacchetti che devono essere installati per poter compilare il software ma inutili per poter usare il software dopo l'installazione. E' possibile specificare la versione minima di dipendenza del pacchetto nello stesso formato ell'array depends.
Attenzione: Quando si compila con makepkg, si assume che si abbia già installato nel proprio sistema il gruppo "base-devel" . I membri di "base-devel" non devono essere inclusi nell'array makedepends.
optdepends
Un array di nomi dei pacchetti che non sono necessari al software per funzionare ma che forniscono funzionalità aggiuntive. Si dovrebbe aggiungere una piccola descrizione delle funzionalità che ogni pacchetto fornisce. Un'array optdepends deve assomigliare a questo:
optdepends=('cups: supporto per la stampa'
'sane: supporto per gli scanner'
'libgphoto2: supporto per le fotocamere digitali'
'alsa-lib: supporto per l'audio'
'giflib: supporto per le immagini GIF'
'libjpeg: supporto per le immagini JPEG'
'libpng: supporto per le immagini PNG')
provides
Un array di nomi dei pacchetti dei quali questo software fornisce le funzionalità (oppure un pacchetto virtuale come cron o sh). Se si usa questa variabile, si dovrebbe aggiungere la versione (pkgver e magari la pkgrel) che questo pacchetto fornisce se le dipendenze possono esserne influenzate. Per esempio, se si vuole fornire una versione modificata di qt chiamata qt-foobar versione 3.3.8 che fornisce qt allora l'array provides dovrebbe essere: provides=('qt=3.3.8'). Mettere provides=('qt') causerà il fallimento di quelle dipendenze che richiedono una specifica versione di qt. Non aggiungere pkgname all'array provide, viene fatto in automatico.
conflicts
Un array di nomi dei pacchetti che possono causare problemi con questo pacchetto installato. Si possono anche specificare le proprietà delle versioni dei pacchetti che vanno in conflitto nello stesso formato dell'array depends.
replaces
Un array di nomi dei pacchetti obsoleti che sono rimpiazzati da questo pacchetto, per esempio: replaces=('ethereal') per il pacchettoTemplate:Package Official. Dopo aver aggiornato il database con pacman -Sy, rimpiazzerà immediatamente un pacchetto installato con un altro pacchetto dei repository, accoppiato relativamente a replaces. Se si sta fornendo una versione sostitutiva di un pacchetto esistente, si dovrà usare la variabile conflicts la quale è valutata soltanto nel momento in cui si installerà il pacchetto in conflitto.
backup
Un array di file da salvare come Template:Filename quando il pacchetto viene rimosso. Questa variabile è comunemente usata con i pacchetti che mettono i loro file di configurazione in Template:Filename. I percorsi dei file in questo array dovrebbero essere percorsi relativi (ad esempio Template:Filename) non assoluti (come Template:Filename).
options
Questo array permette di sovrascrivere alcuni dei comportamenti di default di makepkg. Per impostare un'opzione, si deve includere il nome dell'opzione nell'array. Per invertire il comportamento di default, si deve mettere un ! davanti l'opzione. Questo è un elenco delle opzioni che si possono mettere nell'array:
  • strip - Toglie i simboli dai binari e dalle librerie.
  • docs - Salva le directory Template:Filename.
  • libtool - Lascia i file di libtool (Template:Filename) nel pacchetto.
  • emptydirs - Lascia le directory vuote nel pacchetto.
  • zipman - Comprime le pagine di man e info con gzip.
  • ccache - Permette l'uso di ccache durante la compilazione. Con i pacchetti che hanno problemi con ccache durante la compilazione è più utile nella sua forma negata !ccache.
  • distcc - Permette l'uso di distcc durante la compilazione. Con i pacchetti che hanno problemi con distcc durante la compilazione è più utile nella sua forma negata !distcc.
  • makeflags - Permette l'uso di makeflags specifiche per l'utente durante la compilazione. Con i pacchetti che hanno problemi con makeflags durante la compilazione è più utile nella sua forma negata !makeflags.
install 
Il nome dello script di Template:Filename che deve essere incluso nel pacchetto. Pacman ha l'abilità di memorizzare ed eseguire uno script specifico per pacchetto quando installa, rimuove o aggiorna un pacchetto. Lo script contiene le seguenti istruzioni che vengono eseguite in tempi diversi:
  • pre_install - Lo script è lanciato appena prima dell'estrazione dei file. La nuova versione del pacchetto viene passata come argomento alla funzione.
  • post_install - Lo script è lanciato appena dopo l'estrazione dei file. La nuova versione del pacchetto viene passata come argomento alla funzione.
  • pre_upgrade - Lo script è lanciato appena prima dell'estrazione dei file. La nuova e la vecchia versione del pacchetto vengono passate come argomento alla funzione.
  • post_upgrade - Lo script è lanciato appena dopo dell'estrazione dei file. La nuova e la vecchia versione del pacchetto vengono passate come argomento alla funzione.
  • pre_remove - Lo script è lanciato appena che i file vengano rimossi. La vecchia versione del pacchetto viene passata come argomento alla funzione.
  • post_remove - Lo script è lanciato dopo che i file vengano rimossi. La vecchia versione del pacchetto viene passata come argomento alla funzione.
Ogni funzione è eseguita in ambiente chroot all'interno della directory di installazione di pacman. Consultare questo thread.


Tip: Un prototipo Template:Filename è disponibile al Template:Filename.
source 
un array di file che sono necessari per compilare il pacchetto. Deve contenere la locazione dei sorgenti del software, che in quasi tutte le occasioni è un completo URL HTTP o FTP. Le variabili precendentemente impostatate pkgname e pkgver possono essere usate efficacemente qui (per esempio source=(http://example.com/$pkgname-$pkgver.tar.gz))
Note: Se si ha il bisogno di fornire file che non sono scaricabili al volo, per esempio patch fatte in proprio, è possibile mettere questi file nella stessa directory del proprio Template:Filename e aggiungere il nome del file a questo array. Qualsiasi percorso viene aggiunto qui è risolto relativamente alla directory in cui giace il Template:Filename. Prima che il processo di compilazione parta, tutti i file che sono riferiti in questo array, verranno scaricati o controllati in sussistenza, e makepkg non procederà oltre se qualcuno manca.
Note: È possibile specificare un nome diverso per il file scaricato, nel caso tale file abbia per qualche motivo un nome diverso, come il parametro GET assegnato all'url, con la seguente sintassi: <filename>::<fileuri>, non includere i caratteri '<' and '>'
noextract
Un array di file elencati nell'array source che non dovrebbero essere estratti dal loro archivio da makepkg. Per lo più si applica a certi file zip che non possono essere gestiti da bsdtar visto che libarchive processa tutti i file come flussi piuttosto che ad accesso casuale come fa unzip. In queste situazioni si dovrebbe aggiungere unzip all'array makedepends e le prime linee della funzione build() dovrebbero contenere:
cd $srcdir/$pkgname-$pkgver
unzip [source].zip
md5sums
Un array di checksum MD5 dei file elencati nell'array source. Una volta che tutti i file presenti nell'array source saranno disponibili, per ogni file verrà generato automaticamente un hash MD5 e confrontato con il valore di questo array nello stesso ordine in cui appare nell'array source. Mentre l'ordine dell'array source non è rilevante, è importante che questo combaci con l'ordine di questo array dato che makepkg non può indovinare a quale file sorgente appartenga la checksum. E' possibile generare questo array rapidamente e facilmente usando il comando makepkg -g nella directory che contiene il file Template:Filename. Notare che l'algoritmo MD5 è noto per avere falle, quindi si dovrebbero considerare alternative più sicure.
sha1sums 
Un array di checksum SHA-1 a 160-bit. Questa è un'alternativa alle md5sums descritte in precedenza, ma anch'esse sono note per avere delle debolezze, quindi si dovrebbero considerare alternative più sicure. Per abilitare l'uso e la generazione di queste checksums, assicurarsi di impostare l'opzione INTEGRITY_CHECK in makepkg.conf. Vedere man makepkg.conf.
sha256sums, sha384sums, sha512sums 
Un array di checksum SHA-2 con dimensione del digest di 256, 384 e 512 bit rispettivamente. Queste sono delle alternative alle md5sums descritte in precedenza e sono generalmente considerate più sicure. Per abilitare l'uso e la generazione di queste checksums, assicurarsi di impostare l'opzione INTEGRITY_CHECK in makepkg.conf. Vedere man makepkg.conf.

È prassi comune preservare l'ordine delle variabili del Template:Filename come sono state mostrate sopra. Ad ogni modo, non è obbligatorio, dato che il solo requisito in questo contesto è la sintassi corretta di Bash.

Consultare anche