Utilizzare le KEYWORDS

Nota

Nella terminologia Gentoo il termine 'pacchetto' si riferisce ad un'intera directory. Per esempio app-editors/vim non si riferisce ad una specifica versione. I termini 'ebuild' o 'versione del pacchetto' vengono usati sottintendendo questo significato.

Ogni ebuild dovrebbe specificare una variabile KEYWORDS. Questa variabile viene usata per indicare l'idoneità e la stabilità sia del pacchetto che dell'ebuild per ogni architettura specificata (sparc, ppc, x86-obsd,...).

Nota

Il termine 'arch' viene usato in questo senso per ragioni storiche.

Una semplice voce KEYWORDS potrebbe apparire come segue:

KEYWORDS="x86 sparc mips ~ppc ~ppc-macos -ia64"

I differenti livelli delle KEYWORDS da utilizzare sono:

arch (x86, ppc-macos)
Le versioni del pacchetto e dell'ebuild sono state testate, funzionano e non hanno dato problemi sulle piattaforme indicate.
~arch (~x86, ~ppc-macos)
Le versioni del pacchetto e dell'ebuild funzionano e non si conoscono bug seri ma sono richiesti ulteriori test prima che la versione del pacchetto sia considerata stabile per l'arch.
Nessuna keyword
Se un pacchetto non ha una keyword per una data architettura, significa che il funzionamento del pacchetto non è garantito e non sono stati effettuati sufficienti test per l'~arch.
-arch (-x86, -ppc-macos)
La versione del pacchetto non funziona per l'arch. Questo potrebbe essere causato dalla cattiva scrittura del codice, da problemi legati ad hardware particolare (per esempio un tool che fa richieste al BIOS su architetture che non utilizzano il BIOS) o da pacchetti dei quali non si ha accesso ai sorgenti.

La keyword -* è speciale. Viene usata per indicare versioni di pacchetti che non devono essere utilizzati sulle architetture non elencate. Per esempio, un pacchetto binario supportato solo da x86 e ppc dovrebbe essere indicato come segue:

KEYWORDS="-* x86 ppc"

Questa sintassi è differente dallo specificare solo le architetture "x86 ppc", questa forma implica che il pacchetto non funziona sulle altre architetture e non che deve essere ancora testato.

Non utilizzare negli ebuild le keyword speciali * o ~*.

Il requisito di eguale visibilità

Un ebuild non deve dipendere da un pacchetto che ha un livello di keyword più basso di se stesso. Per esempio, se foo-1.2 dipende da bar-1.2 e quest'ultimo è marcato ~x86, foo-1.2 non può essere marcato stabile per x86 a meno che non divenga stabile anche bar-1.2.

Tutte le possibili dipendenze devono soddisfare la regola suddetta. Da notare comunque che certi flag USE possono essere disabilitati forzatamente su base per-profile da richiedere al gruppo che si occupa della data architettura.

Mascheramenti hard

Il file package.mask può essere utilizzato per mascherare in modo hard sia singoli ebuild che gruppi. Questo dovrebbe essere utilizzato durante la fase di test degli ebuild o rilasci beta di software e anche per pacchetti che presentano seri problemi di compatibilità. Pacchetti che non sono mascherati hard non devono essere dipendenti da pacchetti che invece lo sono.

La sola possibilità per un utente di avere un messaggio di errore del tipo Possibly DEPEND problem è per una modifica manuale al livello di visibilità di un pacchetto (ad esempio attraverso /etc/portage/) che ha fallito una dipendenza. Non si dovrebbero mai fare modifiche che potrebbero causare tali errori.

'Allucchettare' nuovi pacchetti

Importante

I nuovi pacchetti dovrebbero essere mascherati come ~arch solo per quelle architetture sulle quali sono stati testati.

Non si parta dal presupposto che un pacchetto funzioni su tutte le architetture. Né che un ebuild proposto da un utente abbia KEYWORDS corrette dato che potrebbe essere partito da un ebuild preesistente. Non si presuma neanche che un codice, perché scritto in Perl / Python / Java, funzioni su altre architetture (c'è almeno un caso di uno script vim che funziona solo su x86).

Keyword negli aggiornamenti

Quando si propone un aggiornamento, porre la keyword da arch ad ~arch lasciando qualsiasi altra keyword ~arch intatta. Questo deve essere fatto anche se si pensa di aver introdotto solo una piccola correzione, ci sono stati alcuni esempi di pacchetti considerati stabili che non hanno funzionato per questo motivo.

Qualche volta si può aver bisogno di rimuovere una keyword a causa di una dipendenza non risolta. Per questo occorre inviare un rapporto al gruppo che si occupa dell'architettura che riguarda la keyword rimossa.

Questo naturalmente si applica anche alle modifiche effettuate sulle semplici revisioni.

Passare da ~arch ad arch

Il passaggio di un pacchetto da ~arch a arch è fatto solo dal team che si occupa dell'architettura in oggetto. Se si ha accesso ad hardware non x86 ma non si fa parte del team relativo, si possono fare modifiche individuali e, se ne è a conoscenza, il team che si occupa dell'architettura sarà felice di dare una mano. Da notare che anche x86 non fa eccezione e per far considerare stabile un pacchetto occorre passare per il team che si occupa di tale architettura.

Per divenire stabile un pacchetto deve seguire queste linee guida:

  • deve essere stato in ~arch per un certo periodo di tempo, di solito una trentina di giorni (è chiaramente una indicazione di massima). Per pacchetti critici ci si aspetta una durata maggiore mentre per piccoli pacchetti con modifiche minori tra le versioni è appropriato un breve periodo
  • il pacchetto non deve avere dipendenze non-arch
  • non deve avere gravi bug insoluti
  • se è una libreria, non dovrebbe corrompere i pacchetti da lei dipendenti
  • il team che si occupa dell'architettura ne deve convenire la stabilità

Per fissare bug che riguardano la sicurezza, i tempi ragionevoli si possono allungare.

Rimuovere versioni di pacchetti

Quando si rimuove un ebuild, ci si assicuri di non rimuoverne la versione più recente se esiste in qualche livello di keyword in ogni profilo. Lo scopo è: non forzare il downgrade. (Eccezione: occasionalmente si può voler forzare un downgrade, se, per esempio, una nuova versione di un pacchetto ha seri problemi, questa è la miglior soluzione. Ma resta un caso raro).

Non deve rompere nessuna dipendenza esistente.