Repository & pinning: differenze tra le versioni

divisi esempi in due sezioni (a seconda che sia consigliato o meno il pinning), riscritta parte su apt.conf e proposta solo come alternativa a preferences
(→‎/etc/apt/apt.conf: ripristino parte cancellata, un po' estesa per chiarezza)
(divisi esempi in due sezioni (a seconda che sia consigliato o meno il pinning), riscritta parte su apt.conf e proposta solo come alternativa a preferences)
Riga 80: Riga 80:
<pre>APT::Default-Release "release_voluta";</pre>
<pre>APT::Default-Release "release_voluta";</pre>


che equivale alla dichiarazione in riga di comando dell'opzione '''<code>-t release_voluta</code>''' in [[apt-get]], [[apt]] e [[aptitude]]. Tale dichiarazione attribuisce priorità 990 a tutti i pacchetti appartenenti alla [[release]] specificata.
che equivale alla dichiarazione in riga di comando dell'opzione '''<code>-t release_voluta</code>''' (anche nella forma <code>--target-release release_voluta</code>) in [[apt-get]], [[apt]] e [[aptitude]].
 
Tale dichiarazione:
* attribuisce priorità 990 a tutti i pacchetti appartenenti alla [[release]] specificata;
* ignora tutte le impostazioni di pinning in <code>/etc/apt/preferences</code> riguardanti la stessa release e relative a tutti i pacchetti (anziché a un singolo pacchetto o a un gruppo di pacchetti).
 
Pertanto si raccomanda di '''non''' impostare una <code>Default-Release</code> se si vuole utilizzare anche il file <code>/etc/apt/preferences</code>, per non creare conflitti tra le due configurazioni.


{{Warningbox|
{{Warningbox|
* Tale priorità si applica alla release e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository principale (o ai due repository principali), ma anche quelli provenienti da altre fonti se il gestore di tale repository usa lo stesso valore per i parametri [[suite]] e [[codename]] di quelli principali, ad esempio stable e ''jessie''.
* Tale priorità si applica alla release e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository principale (o ai due repository principali), ma anche quelli provenienti da altre fonti se il gestore di tale repository usa lo stesso valore per i parametri [[suite]] e [[codename]] di quelli principali, ad esempio ''stable'' e ''jessie''.
* Per quanto riguarda tutti i pacchetti della target release questa dichiarazione ha la precedenza su qualsiasi altra generica priorità definita nel file ''preferences'', ad eccezione di quei pacchetti per ciascuno dei quali sia stata definita una specifica priorità.
* Questa direttiva influenza la priorità del repository principale di una release, nonché di quella relativa alla sua sicurezza, per esempio:
* Questa direttiva influenza la priorità del repository principale di una release, nonché di quella relativa alla sua sicurezza, per esempio:
** <code>deb http://ftp.it.debian.org/debian/ jessie main</code>
** <code>deb http://ftp.it.debian.org/debian/ jessie main</code>
Riga 91: Riga 96:


Si noti inoltre che:
Si noti inoltre che:
* Comandi del tipo <code>apt-get install pacchetto/release_taldeitali</code> non cambiano la ''target release'', ma si limitano a dire di prelevare lo specifico pacchetto dalla release indicata invece che da quella predefinita. Questo implica che le dipendenze continueranno ad essere risolte in base alla release obiettivo eventualmente specificata in <code>apt.conf</code> e/o in base al file <code>preferences</code> e/o in accordo all'algoritmo predefinito.
* Comandi del tipo <code>apt-get install pacchetto/release_taldeitali</code> '''non''' cambiano la ''target release'', ma si limitano a dire di prelevare lo specifico pacchetto dalla release indicata invece che da quella predefinita. Questo implica che le dipendenze continueranno ad essere risolte in base alla release obiettivo eventualmente specificata in <code>apt.conf</code> e/o in base al file <code>preferences</code> e/o in accordo all'algoritmo predefinito.
* Le dichiarazioni di parametri da riga di comando hanno sempre la precedenza su quelli definiti in un file di configurazione, che di conseguenza verranno ignorati, quindi usare un comando del tipo <code>apt-get install pacchetto -t release_taldeitali</code> disabilita durante l'esecuzione qualunque release obiettivo (<code>Default-Release</code>) dichiarata nel file <code>apt.conf</code>. Perciò avere un pinning a 990 in preferences non è necessariamente equivalente a impostare una <code>Default-Release</code>.
* Le dichiarazioni di parametri da riga di comando hanno sempre la precedenza su quelli definiti in un file di configurazione, che di conseguenza verranno ignorati, quindi usare un comando del tipo <code>apt-get install pacchetto -t release_taldeitali</code> disabilita durante l'esecuzione qualunque release obiettivo (<code>Default-Release</code>) dichiarata nel file <code>apt.conf</code>. Perciò avere un pinning a 990 in <code>preferences</code> non è necessariamente equivalente a impostare una <code>Default-Release</code>, anche in assenza di conflitti tra i due file di configurazione.
* Definire una release obiettivo in <code>apt.conf</code> è quasi equivalente a dichiarare in <code>preferences</code> (si veda la prossima sezione) quanto segue:
<pre>Package: *
Pin: release a=release_voluta
Pin-Priority: 990
</pre>
:senonché, qualora si sia definita una <code>Default-Release</code> in <code>apt.conf</code>, qualsiasi dichiarazione in <code>preferences</code> riguardante tutti i pacchetti (<code>Package: *</code>) di quella stessa release sarà ignorata. Per esempio sarebbe del tutto inutile definire:
<pre>
Package: *
Pin: release a=release_in_default_release
Pin-Priority: 1000
</pre>
* Ricapitolando <code>-t release_voluta</code> ignora e ha gli stessi effetti di una <code>Default-Release</code>, che a sua volta ignora ogni generica (<code>Package: *</code>) impostazione di pinning relativa alla stessa release.


{{Box|File multipli|L'utente può, invece di creare un unico file di nome ''apt.conf'', creare più file di nome arbitrario in ''/etc/apt/apt.conf.d/'' (si veda il manuale)}}
{{Box|File multipli|L'utente può, invece di creare un unico file di nome <code>apt.conf</code>, creare più file di nome arbitrario in <code>/etc/apt/apt.conf.d/</code> (si veda il manuale)}}


= /etc/apt/preferences =
= /etc/apt/preferences =
Questo è il file dove è possibile definire tutte le priorità che si vogliono, fermo restando quanto detto nella sezione dedicata ad <code>apt.conf</code>. La sintassi generale è la seguente:
Questo è il file dove è possibile definire tutte le priorità che si vogliono, fermo restando quanto detto nella sezione dedicata ad <code>apt.conf</code> di utilizzare soltanto uno dei file per il pinning. La sintassi generale è la seguente:
<pre>
<pre>
Package: nome pacchetto o espressione regolare
Package: nome pacchetto o espressione regolare
Riga 115: Riga 108:
Pin-Priority: numero
Pin-Priority: numero
</pre>
</pre>
Un paio di esempi del tutto arbitrari:
 
Un po' di esempi del tutto arbitrari:
<pre>
<pre>
Package: vlc
Package: vlc
Pin: release a=testing
Pin: release a=testing
Pin-Priority: 991
Pin-Priority: 991
</pre>
<pre>
Package: vlc
Pin: release n=stretch
Pin-Priority: 991
</pre>
<pre>
Package: virtualbox4*
Package: virtualbox4*
Pin: Release o=Oracle Corporation
Pin: Release o=Oracle Corporation
Pin-Priority: 780
Pin-Priority: 780
</pre>
</pre>
Nel primo esempio si è definito il pinning per il pacchetto di nome "vlc", richiedendo che le versioni appartenenti alla release testing abbiano priorità 991. Nel secondo invece sfruttando una semplicissima espressione regolare si impone che tutti i pacchetti il cui nome inizia per "virtualbox4" e appartenenti al repository la cui origine è definita come "Oracle Corporation" abbiano priorità 780.
Il primo e il secondo esempio sono equivalenti, il primo fa riferimento alla [[suite]] (detta anche '''''a'''rchive'') mentre il secondo al [[codename]] ('''''n'''ome in codice''). In entrambi si è definito il pinning per il pacchetto di nome "vlc", richiedendo che le versioni appartenenti alla release testing, attualmente [[Stretch]], abbiano priorità 991. Attenzione però che quando Stretch diverrà la nuova [[stable]], il primo si applicherà alla nuova testing mentre il secondo continuerà a far riferimento a Stretch. Solitamente è consigliabile il secondo (con ''codename''), se si utilizza una stable e si vogliono prelevare pacchetti da testing, mentre il primo (con ''suite'') se si utilizza una testing e si vuole restare sempre con quella. La scelta dovrebbe inoltre riflettere quella adottata per tutti i repository in <code>/etc/apt/sources.list</code>, tenendo presente anche che i [[backports]] contengono sempre il ''codename''.
 
Nel terzo esempio invece, sfruttando un semplicissimo pattern, si impone che tutti i pacchetti il cui nome inizia per "virtualbox4" e appartenenti al repository la cui origine è definita come "Oracle Corporation" abbiano priorità 780.


Il pinning può essere orientato ai campi "Suite", "Origin", "Label" e "Codename" del file "Release" di un certo repository (si veda [[i repository ed il loro utilizzo]]), nonché all'indirizzo del repository stesso. Si noti che per archivi personali e/o non ufficiali può non essere presente (purtroppo) un file "Release".
Il pinning può essere orientato ai campi "Suite", "Origin", "Label" e "Codename" del file "Release" di un certo repository (si veda [[i repository ed il loro utilizzo]]), nonché all'indirizzo del repository stesso. Si noti che per archivi personali e/o non ufficiali può non essere presente (purtroppo) un file "Release".
Riga 156: Riga 158:
Non è un'operazione minimamente supportata né testata, in quanto è opposta a quella che avviene con l'aggiornamento tramite APT e ha grandi probabilità di rendere l'intero sistema inusabile. Si raccomanda caldamente invece di effettuare una nuova installazione della [[release]] desiderata.}}
Non è un'operazione minimamente supportata né testata, in quanto è opposta a quella che avviene con l'aggiornamento tramite APT e ha grandi probabilità di rendere l'intero sistema inusabile. Si raccomanda caldamente invece di effettuare una nuova installazione della [[release]] desiderata.}}


= Esempi =
= Esempi senza bisogno di pinning =


== Release pura ==
== Release pura ==
Non serve il pinning se si usano i repository ufficiali di una sola release di Debian, ed è '''sconsigliato''' anche impostare una <code>Default-Release</code> in <code>apt.conf</code>.
Non serve il pinning se si usano i [[repository ufficiali]] o quelli [[repository speciali|speciali]] di una sola release di Debian, ed è '''sconsigliato''' anche impostare una <code>Default-Release</code> in <code>apt.conf</code>.


Infatti ciò avrebbe effetto sul repository principale e su quello della sicurezza, ma non sugli eventuali ''updates'' o ''proposed-updates'', che non sarebbero più aggiornati automaticamente, salvo che per i pacchetti già installati da quei repository. Per riabilitare gli aggiornamenti automatici sarebbe necessario impostare un pinning a 990, pari a quello della <code>Default-Release</code>.
Infatti ciò avrebbe effetto sul repository principale e su quello della sicurezza, ma non sugli eventuali ''updates'' o ''proposed-updates'', che non sarebbero più aggiornati automaticamente, salvo che per i pacchetti già installati da quei repository. Per riabilitare gli aggiornamenti automatici sarebbe necessario impostare un pinning a 990, pari a quello della <code>Default-Release</code>.


Si ricorda nuovamente che in una release pura non serve il pinning nemmeno per i [[backports]], perché i pacchetti contenuti non sono mai installati automaticamente senza specificare una release obiettivo (opzione <code>-t</code>/<code>--target-releae</code> con [[apt-get]]), salvo presenti soltanto lì, ma una volta che i pacchetti sono installati dai backports verranno aggiornati automaticamente.
== Stable con backports ==
Non è necessario alcun pinning nemmeno aggiungendo i [[backports]] ai repository della [[stable]] (attualmente [[Jessie]]), in quanto di default sono disattivati, a eccezione dei pacchetti presenti soltanto lì, e consentono solo l'aggiornamento automatico dei pacchetti installati manualmente dai backports.
 
Per installare un pacchetto dai backports la prima volta, basta eseguire:
<pre># apt-get -t jessie-backports install nomepacchetto</pre>


Inoltre anche nel caso che si utilizzino soltanto i repository [[sid]] ed [[experimental]] non sarebbe necessario alcun pinning, dato che gli experimental di default hanno una ''Pin-Priority'' di 1, che impedisce sia l'installazione sia l'aggiornamento automatico dei pacchetti contenuti.
Per esempio per installare <code>libreoffice</code>:
<pre># apt-get -t jessie-backports install libreoffice</pre>
Dopo di che sarà aggiornato automaticamente assieme agli altri pacchetti di Jessie con:
<pre>
# apt-get update
# apt-get upgrade
</pre>


== Stable con backports obbligati ==
=== Backports automatici ===
Si supponga di voler usare tutti i pacchetti della stable, con l'eccezione di quelli relativi a libreoffice che si vuole siano prelevati esclusivamente dai [[backports]].
{{Warningbox | Questo esempio '''non''' è consigliato, ma intende soltanto mostrare alcune delle problematiche nella configurazione del pinning.


Questo esempio '''non''' è consigliato, ma intende soltanto mostrare alcune delle problematiche nella configurazione del pinning, quando si applica solo a una selezione ristretta di pacchetti.
Si ricorda infatti che i backports non sono sottoposti agli stessi controlli dei repository principali della stable, per cui è sconsigliato l'uso indiscriminato di tutti i pacchetti contenuti, in particolare per macchine di produzione. È invece consigliabile utilizzarli soltanto per i pacchetti di cui si ha una reale necessità, come visto nella sezione precedente.}}


{{Warningbox | Si noti infatti che mentre è possibile impedire l'installazione dei pacchetti dalla stable quando presenti anche nei backports, non è possibile garantirne l'installazione automatica dei pacchetti dai backports. Questo perché, per soddisfare tutte le possibili dipendenze dei pacchetti installati, l'unico modo sarebbe assegnare un pinning di almeno 500 a tutti i pacchetti provenienti dai backports.
Si supponga di voler usare tutti i pacchetti della [[stable]], con l'eccezione di quelli relativi a <code>libreoffice</code> che si vuole siano prelevati esclusivamente dai [[backports]]. È bene chiarire subito che '''non esiste alcun modo di garantire ciò''' tramite il pinning, poiché le [[dipendenze]] di un pacchetto non sono influenzate dalla sua ''Pin-Priority''. Quello che si può fare è trovare una soluzione di compromesso, che è quasi sempre più svantaggiosa di quella proposta nella sezione precedente, ossia non utilizzando alcun pinning.


Si ricorda però che i backports non sono sottoposti agli stessi controlli dei repository principali della stable, per cui è sconsigliato l'uso indiscriminato di tutti i pacchetti contenuti, in particolare per macchine di produzione. È invece consigliabile utilizzarli soltanto per i pacchetti di cui si ha una reale necessità.}}
Infatti è possibile soltanto impedire l'installazione dei pacchetti dalla stable quando presenti anche nei backports. Questo perché, per soddisfare tutte le possibili dipendenze dei pacchetti installati, l'unico modo sarebbe assegnare una ''Pin-Priority'' di almeno 500 a tutti i pacchetti provenienti dai backports, che di default ne hanno una di 100.


=== sources.list ===
Le principali alternative, presentate a solo scopo didattico:
* nessuna <code>Default-Release</code> in <code>apt.conf</code> e file <code>/etc/apt/preferences</code> come segue
<pre>
Package: libreoffice
Pin: release n=jessie-backports
Pin-Priority: 500
</pre>
* nessuna <code>Default-Release</code> in <code>apt.conf</code> e file <code>/etc/apt/preferences</code> come segue
<pre>
Package: libreoffice*
Pin: release n=jessie-backports
Pin-Priority: 500
</pre>
* nessuna impostazione in <code>/etc/apt/preferences</code> e file <code>/etc/apt/apt.conf</code> come segue
<pre>
<pre>
deb http://ftp.it.debian.org/debian/ jessie main
APT::Default-Release "jessie-backports";
deb-src http://ftp.it.debian.org/debian/ jessie main
</pre>
 
# Aggiornamenti di sicurezza
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main


# Aggiornamenti raccomandati
La prima possibilità restituisce errore quando si cerca di installare il pacchetto, costringendo a ricorrere all'opzione <code>-t</code> oppure lasciando ad [[aptitude]] il compito di risolvere i conflitti. In modo analogo può restituire errore durante un aggiornamento, se richiede anche l'aggiornamento delle sue [[dipendenze]], costringendo a ripetere il comando di installazione con <code>-t</code>.
deb http://ftp.it.debian.org/debian/ jessie-updates main
deb-src http://ftp.it.debian.org/debian/ jessie-updates main


# Backports
La seconda possibilità riesce più spesso, in quanto quasi tutte le dipendenze cominciano con la stringa ''libreoffice'' e sono quindi catturate dal pattern ''libreoffice'''*''''', tuttavia nemmeno ciò garantisce il funzionamento automatico in ogni circostanza, per via di possibili altre dipendenze con altri nomi. E anche se aggiungessimo pure tali pacchetti, si aumenterebbe soltanto la frequenza di successo, senza però mai avere una garanzia nella totalità dei casi, visto che nuove dipendenze potrebbero essere aggiunte in successivi aggiornamenti.
deb http://ftp.it.debian.org/debian/ jessie-backports main
deb-src http://ftp.it.debian.org/debian/ jessie-backports main
</pre>


Quello mostrato è solo un esempio con: i due repository principali di [[Jessie]], quello normale e di sicurezza; gli aggiornamenti raccomandati, che non sono strettamente necessari; e i backports.
La terza alternativa è l'unica che funziona sempre in automatico, ma si applica indiscriminatamente a tutti i pacchetti contenuti nei ''backports'', che è proprio quello che si voleva evitare per una [[stable]].


Di default si ricordi che tutti i repository hanno una priorità di 500, a eccezione di '''jessie-backports''' che ne hanno una di 100.
{{Box | Backports obbligatori | Specificando una priorità di 990 anziché 500 nel file <code>/etc/apt/preferences</code>, come visto in questa sezione, l'installazione di <code>libreoffice</code> dai repository non backports fallirebbe anche utilizzando l'opzione <code>-t jessie</code>, rendendo l'installazione da ''jessie-backports'' l'unica possibile (anche se non garantita senza l'uso dell'opzione <code>-t jessie-backports</code>).


=== apt.conf ===
Si noti invece che l'uso dei backports non è obbligatorio specificando la <code>Default-Release</code> a ''jessie-backports'', per le ragioni già esposte nella sezione su <code>apt.conf</code> di questa guida, anche se lo sarebbero gli aggiornamenti (in assenza di conflitti con le dipendenze).}}
Non serve modificarlo, né crearlo se non esiste, ed è anzi consigliabile non impostare la <code>Default-Release</code>. Si noti infatti che il suo utilizzo per '''jessie''' non avrebbe effetto sugli aggiornamenti raccomandati ('''jessie-updates'''), che verrebbero quindi disabilitati come i backports.


=== preferences ===
== Unstable/Sid ed experimental ==
<br/>
Se si utilizzino soltanto i repository [[sid]] ed [[experimental]] non è necessario alcun pinning, dato che gli experimental di default hanno una ''Pin-Priority'' di 1, che impedisce sia l'installazione sia l'aggiornamento automatico dei pacchetti contenuti.
<pre>
Package: libreoffice*
Pin: release n=jessie-backports
Pin-Priority: 990
</pre>


=== Osservazioni ===
Per installare o aggiornare un pacchetto da experimental, basta eseguire:
Per come è definito <code>preferences</code> l'installazione della versione di libreoffice da repository non backports è impossibile, una volta che i pacchetti entrano in tale [[repository]], anche usando l'opzione <code>-t</code> da riga di comando.
<pre># apt-get -t experimental install nomepacchetto</pre>


Si noti che solo il pacchetto <code>libreoffice</code> e tutte le dipendenze inizianti con quello stesso prefisso possono essere installate automaticamente dai backports, per cui l'installazione o l'aggiornamento non sono garantiti in presenza di altre dipendenze da soddisfare dallo stesso ramo senza l'uso di:
= Esempi con pinning =
<pre># apt-get -t jessie-backports install libreoffice</pre>
Questo è il motivo per cui si sconsiglia l'uso del pinning per i backports, visto che basta utilizzare direttamente questo comando, senza modificare le impostazioni del sistema.


== Stable con testing ==
== Stable con testing ==
Riga 251: Riga 259:
Quello mostrato è solo un esempio con i due repository principali di [[Jessie]], quello normale e di sicurezza, gli aggiornamenti raccomandati e i backports, che non sono strettamente necessari per questo esempio (ma è sempre preferibile cercare prima in questi repository che in testing), e i due repository di [[Stretch]] ([[testing]]).
Quello mostrato è solo un esempio con i due repository principali di [[Jessie]], quello normale e di sicurezza, gli aggiornamenti raccomandati e i backports, che non sono strettamente necessari per questo esempio (ma è sempre preferibile cercare prima in questi repository che in testing), e i due repository di [[Stretch]] ([[testing]]).


Questo file è valido per tutti gli esempi di questa sezione, mentre gli altri dipendono dalla configurazione del pinning desiderata.
Questo file è valido per tutti gli esempi di questa sezione, mentre gli altri dipendono dalla configurazione del pinning desiderata. Si noti in particolare la scelta del [[codename]] (''stretch'') al posto della [[suite]] (''testing''), che è la configurazione consigliata in presenza di una [[stable]] e verrà quindi mantenuta anche per il pinning.


=== Pinning per un singolo pacchetto ===
=== Pinning per un singolo pacchetto ===
Riga 257: Riga 265:
<pre>
<pre>
Package: nomepacchetto
Package: nomepacchetto
Pin: release a=testing
Pin: release n=stretch
Pin-Priority: 990
Pin-Priority: 990


Package: *
Package: *
Pin: release a=testing
Pin: release n=stretch
Pin-Priority: -1
Pin-Priority: -1
</pre>
</pre>


Adesso è possibile installare il pacchetto "nomepacchetto" da testing con:
Questa configurazione si consiglia soltanto per pacchetti che non richiedono l'installazione di altri da testing.
 
Si può controllarne il funzionamento con:
<pre>
<pre>
# apt-get install nomepacchetto
$ apt-get --simulate install nomepacchetto
</pre>
</pre>
oppure in caso di dipendenze con:
(e si può usare la forma abbreviata <code>-s</code> al posto di <code>--simulate</code>)
 
In assenza di problemi, sarà possibile installare il pacchetto "nomepacchetto" da testing semplicemente con:
<pre>
<pre>
# apt-get -t testing install nomepacchetto
# apt-get install nomepacchetto
</pre>
</pre>
Con questo secondo comando è superfluo l'uso del pinning per "nomepacchetto", se non per ricordarsi la configurazione desiderata.


{{Box | Aptitude | È possibile anche installare il pacchetto tramite [[aptitude]]:
In presenza di dipendenze, o si aggiungono al file <code>preferences</code> se non sono molte, oppure si consiglia la configurazione presentata nella sezione successiva.
 
{{Warningbox | Infatti mentre sarebbe possibile forzarne l'installazione con:
<pre>
<pre>
# aptitude install nomepaccheto
# apt-get -t stretch install nomepacchetto
</pre>
</pre>
facendo risolvere a questo comando il conflitto causato dal pinning del pacchetto e le sue dipendenze, fino ad ottenere la soluzione desiderata.
cda considerare che l'uso dell'opzione <code>-t</code> renderebbe il pinning per "nomepacchetto" superfluo; e inoltre la configurazione attuale impedirebbe gli aggiornamenti automatici delle dipendenze appena installate, costringendo a ripetere il comando precedente in caso di conflitti oppure ad avvelersi di [[aptitude]] per risolverli (prestando '''molta attenzione''' alle soluzioni proposte).}}
 
Si presti però attenzione alle soluzioni proposte, prima di accettarle. Questo metodo '''non''' è consigliato, ma è presentato per completezza per chiarire come in alcuni casi è possibile l'installazione di un pacchetto senza specificare manualmente l'opzione <code>-t</code>.}}
 
Si noti anche che non si avranno aggiornamenti automatici per i pacchetti che vengono installati con questo metodo, a meno che riguardino soltanto quel singolo pacchetto e nessun altro. In caso contrario bisogna rieseguire il precedente comando, avvalersi di <code>aptitude</code> per risolvere i conflitti, oppure impostare il pinning con la configurazione trattata in seguito.


=== Pinning per tutti i pacchetti di testing e backports ===
=== Pinning per tutti i pacchetti di testing e backports ===
Riga 293: Riga 302:


Package: *
Package: *
Pin: release a=testing
Pin: release n=stretch
Pin-Priority: 200
Pin-Priority: 200
</pre>
</pre>
Dove ''jessie-backports'' è il nome della [[suite]] (e il [[codename]], che sono uguali per i [[backports]]) dei repository backports di [[Jessie]]. È consigliabile specificare la nuova priorità a prescindere dalla loro presenza, altrimenti se attivati saranno sempre nascosti da testing, avendo di default una priorità di 100 e contenendo versioni non più aggiornate.
Dove ''jessie-backports'' è il nome della [[suite]] (e il [[codename]], che sono uguali per i [[backports]]) dei repository backports di [[Jessie]]. È consigliabile specificare la nuova priorità a prescindere dalla loro presenza, altrimenti se attivati saranno sempre nascosti da [[Stretch]], avendo di default una priorità di 100 e contenendo versioni non più aggiornate.


Si noti che i valori scelti non sono gli unici possibili. L'importante è che siano soddisfatte le seguenti condizioni:
Si noti che i valori scelti non sono gli unici possibili. L'importante è che siano soddisfatte le seguenti condizioni:
* ''jessie-backports'' deve avere una priorità inferiore a quella di default (500), utilizzata per ''jessie'' e ''jessie-updates'';
* ''jessie-backports'' deve avere una priorità inferiore a quella di default (500), utilizzata per ''jessie'' e ''jessie-updates'';
* testing deve avere una priorità inferiore a quella scelta per ''jessie-backports'';
* ''stretch'' deve avere una priorità inferiore a quella scelta per ''jessie-backports'';
* testing e ''jessie-backports'' devono avere una priorità almeno pari a 100, per consentire gli aggiornamenti automatici una volta che un pacchetto è installato da tali repository.
* ''stretch'' e ''jessie-backports'' devono avere una priorità almeno pari a 100, per consentire gli aggiornamenti automatici una volta che un pacchetto è installato da tali repository.


Ora basterà:
Ora basterà:
<pre>
<pre>
# apt-get -t testing install nomepacchetto
# apt-get -t stretch install nomepacchetto
</pre>
</pre>
per installare nuovi pacchetti da testing, che saranno poi aggiornati in automatico. Si noti però che perfino in questo caso gli aggiornamenti potrebbero comunque richiedere l'uso dell'opzione <code>-t</code>, se nuove dipendenze fossero aggiunte in testing, oppure il meccanismo di risoluzione automatica dei conflitti di [[aptitude]].
per installare nuovi pacchetti da Stretch, che saranno poi aggiornati in automatico. Si noti però che perfino in questo caso gli aggiornamenti potrebbero comunque richiedere l'uso dell'opzione <code>-t</code> oppure il meccanismo di risoluzione dei conflitti di [[aptitude]], se nuove dipendenze fossero aggiunte nello stesso ramo.


== Testing con unstable ed experimental ==
== Testing con unstable ed experimental ==
Riga 341: Riga 350:
</pre>
</pre>


Questa configurazione assegna al repository principale e a quello di sicurezza di testing un pinning di 990. Di conseguenza sid resta a 500 ed experimental a 1.
Come nel <code>sources.list</code> la release è indicata per ''suite''.
 
Questa configurazione assegna al repository principale e a quello di sicurezza di testing una ''Pin-Priority'' di 990. Di conseguenza sid resta a 500 ed experimental a 1.


=== preferences ===
=== preferences ===
Riga 361: Riga 372:
Abilitiamo anche le sezioni ''contrib'' e ''non-free'':
Abilitiamo anche le sezioni ''contrib'' e ''non-free'':
<pre>
<pre>
### Debian testing
# Debian testing
deb http://ftp.it.debian.org/debian/ testing main contrib non-free
deb http://ftp.it.debian.org/debian/ testing main contrib non-free


### Debian testing - sicurezza
# Debian testing - sicurezza
deb http://security.debian.org/ testing/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free


### repository NON ufficiali - multimedia
# repository NON ufficiali - multimedia
deb http://www.deb-multimedia.org testing main non-free
deb http://www.deb-multimedia.org testing main non-free
</pre>
</pre>


Senza altre impostazioni, tutti i repository avrebbero una priorità di 500, e pertanto di default verrebbero sempre installati quelli solitamente più aggiornati di deb-multimedia, ogni volta che è possibile. Questo comportamento non è affatto desiderabile, e anzi può compromettere la stabilità del sistema.
Senza altre impostazioni, tutti i repository avrebbero una priorità di 500, e pertanto di default verrebbero sempre installati quelli solitamente più aggiornati di ''deb-multimedia'', ogni volta che è possibile. Questo comportamento non è affatto desiderabile, e anzi può compromettere la stabilità del sistema.


=== apt.conf ===
=== apt.conf ===
Non è necessaria nessuna modifica. Sarebbe inoltre del tutto inutile impostare una <code>Default-Release</code>, poiché sia i repository ufficiali sia quelli di deb-multimedia sono considerati testing.
Non è necessaria nessuna modifica. Sarebbe inoltre del tutto inutile impostare una <code>Default-Release</code>, poiché sia i repository ufficiali sia quelli di ''deb-multimedia'' sono considerati testing.


=== preferences ===
=== preferences ===
Riga 383: Riga 394:
</pre>
</pre>


Con questa impostazione il repository deb-multimedia si comporta in maniera analoga ai repository backports ufficiali, consentendo l'installazione automatica dei soli pacchetti non presenti in altri repository e anche l'aggiornamento automatico di tutti i pacchetti precedentemente installati dallo stesso.
Con questa impostazione il repository ''deb-multimedia'' si comporta in maniera analoga ai repository backports ufficiali, consentendo l'installazione automatica dei soli pacchetti non presenti in altri repository e anche l'aggiornamento automatico di tutti i pacchetti precedentemente installati dallo stesso.


=== Osservazioni ===
=== Osservazioni ===
* Poiché entrambe le fonti, ''principale'' e ''deb-multimedia'', appartengono alla release testing in teoria questo caso non sarebbe gestibile tramite pinning, tuttavia sotto l'ipotesi di voler installare da deb-multimedia solo i pacchetti non presenti nella fonte principale il problema è risolvibile. Evitando di definire in <code>apt.conf</code> una release obiettivo e definendo in <code>preferences</code> prima il record relativo a deb-multimedia si ottiene di riuscire ad assegnare la priorità desiderata, nonostante il fatto che il secondo record si applichi in teoria anche a deb-multimedia. Si noti che stanti così le cose dovrebbe essere in realtà possibile attribuire pin superiori, fino a 499, a deb-multimedia, senza che per questo i suoi candidati ottengano la precedenza su quelli del repository principale.
* Poiché entrambe le fonti, ''principale'' e ''deb-multimedia'', appartengono alla release testing in teoria questo caso non sarebbe gestibile tramite pinning, tuttavia sotto l'ipotesi di voler installare da ''deb-multimedia'' solo i pacchetti non presenti nella fonte principale il problema è risolvibile. Evitando di definire in <code>apt.conf</code> una release obiettivo e definendo in <code>preferences</code> prima il record relativo a ''deb-multimedia'' si ottiene di riuscire ad assegnare la priorità desiderata, nonostante il fatto che il secondo record si applichi in teoria anche a ''deb-multimedia''. Si noti che stanti così le cose dovrebbe essere in realtà possibile attribuire pin superiori, fino a 499, a ''deb-multimedia'', senza che per questo i suoi candidati ottengano la precedenza su quelli del repository principale.
* L'utilizzo dell'opzione <code>-t</code>/<code>--target-release</code> in questo caso è inutile, visto che si lavora per ipotesi con una sola release.
* L'utilizzo dell'opzione <code>-t</code>/<code>--target-release</code> in questo caso è inutile, visto che si lavora per ipotesi con una sola release.


Riga 412: Riga 423:
|Verificata_da =
|Verificata_da =
: [[Utente:Wtf|Wtf]]
: [[Utente:Wtf|Wtf]]
: [[Utente:HAL 9000|HAL 9000]] 21:37, 10 mag 2015 (CEST)
: [[Utente:HAL 9000|HAL 9000]] 13:01, 11 mag 2015 (CEST)
|Numero_revisori = 2
|Numero_revisori = 2
}}
}}


[[Categoria:Apt]][[Categoria:E-zine]][[Categoria:Repository ufficiali]]
[[Categoria:Apt]][[Categoria:E-zine]][[Categoria:Repository ufficiali]]
3 581

contributi