Configurare il risolutore interattivo di dipendenze

Configurare i suggerimenti per il risolutore

Configurare i suggerimenti per il risolutore

Per migliorare la qualità delle soluzioni di dipendenze ricevute, è possibile fornire suggerimenti al risolutore interattivo di dipendenze. Questi suggerimenti possono modificare le priorità del risolutore, facendolo propendere di più verso una versione o un pacchetto, oppure possono essere usati per «pre-caricare» nel risolutore rifiuti e approvazioni, come se si fosse aperto il risolutore e si fossero manualmente rifiutate o approvate varie versioni.

I suggerimenti vengono memorizzati nel file di configurazione di apt, /etc/apt/apt.conf, nel gruppo di configurazioni «Aptitude::ProblemResolver::Hints» (per i dettagli sul file di configurazione vedere sezione chiamata «Guida di riferimento per il file di configurazione»).

Ogni suggerimento per il risolutore consiste di un'azione, un bersaglio e una versione opzionale. Un suggerimento è scritto nella forma: "azione bersaglio [versione]". Per applicare un suggerimento per il risolutore, aptitude individua uno o più pacchetti usando il valore di bersaglio, sceglie una o più versioni di tali pacchetti usando il valore di versione e da ultimo esegue l'azione indicata.

Il campo azione di un suggerimento per il risolutore può contenere un valore tra i seguenti:

  1. «approve»: approva la versione, come se si fosse usato su di essa il comando RisolutoreApprova/non richiedere (a).

  2. «reject»: rifiuta la versione, come se si fosse usato su di essa il comando RisolutoreRifiuta/autorizza (r).

  3. «discard»: scarta ogni soluzione che contiene la versione. È diversa da «reject» in quanto non è visibile dall'utente e non può essere modificata in modo interattivo.

  4. «increase-safety-cost-to numero»: aumenta il costo di sicurezza di qualsiasi soluzione che contiene la versione a numero; se il suo costo di sicurezza è già più alto di numero, questo suggerimento non ha effetto. Il costo di sicurezza può essere usato (e viene usato in modo predefinito) per controllare l'ordine in cui vengono presentate le soluzioni; per i dettagli vedere sezione chiamata «Costi e componenti dei costi» e sezione chiamata «Costi di sicurezza».

    Svariati livelli di costo speciali possono essere scelti in base al nome:

    1. conflict, discard: invece di cambiare il costo di sicurezza, scarta le soluzioni che contengono la versione come se si fosse usato su di esse il suggerimento «discard».

    2. maximum: il costo di sicurezza più alto.

    3. minimum: il costo di sicurezza più basso. Tutte le ricerche partono da questo costo, perciò «aumentare» una versione a questo costo non ha effetto. Questo valore può però anche essere usato quando si regolano i livelli di costo predefiniti: ad esempio se si imposta Aptitude::ProblemResolver::Remove-Level a «minimum» si fa in modo che i pacchetti rimossi non abbiano effetto sul costo di sicurezza di una soluzione.

    [Nota]Nota

    Il suggerimento increase-safety-cost-to viene applicato in aggiunta a qualsiasi costo di sicurezza predefinito che è associato all'azione selezionata. Per esempio, un suggerimento che aumenta il costo di sicurezza di «installa hal da experimental» a 15.000 non ha effetto perché quell'azione ha già un costo di 50.000 (ipotizzando che quella versione di hal non sia la versione candidata predefinita).

  5. «numero»: aggiunge il numero specificato al punteggio della versione, facendo propendere il risolutore a suo favore oppure (usando un numero negativo) a suo svantaggio. Per esempio, il suggerimento 200 emacs aggiunge 200 al punteggio di emacs, mentre il suggerimento -10 emacs sottrae 10 dal suo punteggio.

Se il campo bersaglio di un suggerimento per il risolutore contiene un punto interrogativo («?») o una tilde («~») è interpretato come un modello di ricerca e vengono prese in considerazione tutte le versioni di pacchetto che vi corrispondono. Altrimenti viene interpretato come il nome di un pacchetto da selezionare. Perciò il bersaglio «g++» seleziona solamente il pacchetto g++, mentre il bersaglio «?section(non-free)» seleziona ogni pacchetto nella sezione non-free. Per maggiori informazioni sui modelli di ricerca vedere sezione chiamata «Modelli di ricerca».

Se il campo versione non è presente, allora il suggerimento ha effetto su tutte le versioni del pacchetto. Altrimenti, può avere una delle forme seguenti:

  1. «/archivio»: il suggerimento ha effetto solo sulle versioni che sono disponibili nell'archivio specificato.

  2. «<versione»: il suggerimento ha effetto solo sulle versioni il cui numero è minore di versione.

  3. «<=versione»: il suggerimento ha effetto solo sulle versioni il cui numero è minore o uguale a versione.

  4. «=versione»: il suggerimento ha effetto solo sulle versioni il cui numero è versione.

  5. «<>versione»: il suggerimento ha effetto solo sulle versioni il cui numero non è versione.

  6. «>=versione»: il suggerimento ha effetto solo sulle versioni il cui numero è maggiore o uguale a versione.

  7. «>versione»: il suggerimento ha effetto solo sulle versioni il cui numero è maggiore di versione.

  8. «:UNINST»: instead of affecting any of the versions of target, the hint affects the decision to remove target. For instance, «Aptitude::ProblemResolver::Hints { "reject aptitude :UNINST"; };» will prevent the resolver from attempting to remove aptitude.

  9. «versione»: il suggerimento ha effetto solo sulle versioni il cui numero di versione è versione.