Come gestire le violazioni di accesso

Il portage utilizza il sandbox per certe fasi del processo si compilazione. Questo previene la sovrascrittura accidentale da parte di un pacchetto di locazioni esterne alla sua 'zona riservata'. Vedere Sandbox per maggiori dettagli.

Se un pacchetto viola il sandbox, viene sollevato un errore come il seguente (prendendo per assunto che il sandbox sia abilitato e funzionante su sistemi di test, il che dovrebbe essere sempre il caso di macchine usate da sviluppatori):

--------------------------- ACCESS VIOLATION SUMMARY ---------------------------
LOG FILE = "/tmp/sandbox-app-misc_-_breakme-1-31742.log"

open_wr:   /big-fat-red-error
--------------------------------------------------------------------------------

La segnalazione di open_wr significa che il pacchetto ha tentato di scrivere un file che non è all'interno dell'area nella quale è permessa la scrittura. In questo caso, il file in questione è /big-fat-red-error.

Altri messaggi di errore vengono visualizzati per aree in qui è negata la lettura, anche se raramente usate negli ebuild.

La violazione di accesso avviene molto comunemente durante la fase di installazione. Vedere src_install e Destinazione delle installazioni per maggiori dettagli.

Qualche volta il problema sussiste con pacchetti che tentano la scritture in ${HOME}. Per aggirare questo problema, è di norma sufficiente far utilizzare al sistema di compilazione una locazione sicura. Per esempio, il fluxbox menu generator prova a lavorare in ${HOME}/.fluxbox, per ovviare a questo viene utilizzato il seguente metodo:

ebegin "Creating a menu file (may take a while)"
mkdir -p "${T}/home/.fluxbox" || die "mkdir home failed"
MENUFILENAME="${S}/data/menu" MENUTITLE="Fluxbox ${PV}" \
    CHECKINIT="no. go away." HOME="${T}/home" \
    ${S}/util/fluxbox-generate_menu -is -ds \
    || die "menu generation failed"
eend $?

In questa situazione, fornire una home directory fittizia è tutto quello di cui si necessita.