Old:APT uso avanzato: mixare releases diverse: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (Forma italiana)
m (spaziatura/box iniziale)
 
(50 versioni intermedie di 13 utenti non mostrate)
Riga 1: Riga 1:
Guide@Debianizzati.Org
{{Old|Leggere la guida sul [[Repository & pinning|pinning]].}}
__TOC__
== Introduzione ==
 
Spesso abbiamo la necessità di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che però non è disponibile per il rilascio di Debian che abbiamo installato.
 
Il caso più frequente è probabilmente quello di un'installazione di Testing con la necessità di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra.
 
APT è nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di release diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell'intera distribuzione e senza dover impazzire per risolvere conflitti e inconsistenze. Questa caratteristica è definita anche '''apt-pinning''', dal ''pin'' che si imposta nel file <code>/etc/apt/preferences</code>.
 
In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental e Marillat (deb-multimedia), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...).
 
== Impostare i repository ==
 
Assicuriamoci di essere l'utente root e procediamo.
 
Per prima cosa editiamo il file <code>/etc/apt/sources.list</code> ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo:
<pre>
### Debian Ufficiale -- Testing
deb http://ftp.it.debian.org/debian/ testing main contrib non-free
 
### Debian Ufficiale -- Testing Sicurezza
deb http://security.debian.org/ testing/updates main contrib non-free
 
### Debian Ufficiale -- Sid
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
 
###  Debian Ufficiale -- Experimental
deb http://ftp.it.debian.org/debian/ experimental main contrib non-free
 
### Multimedia -- Marillat
deb http://www.deb-multimedia.org testing main non-free
deb http://www.deb-multimedia.org sid main non-free
</pre>
In alternativa, invece di editare il file <code>/etc/apt/sources.list</code>, è possibile aggiungere nuovi files nella directory <code>/etc/apt/sources.list.d/</code>: dal manuale <code>man sources.list</code>
<pre>
      La  directory /etc/apt/sources.list.d fornisce un metodo per aggiungere
      voci di sources.list in file separati che terminano con .list. Il
      formato è il medesimo del file sources.list regolare.
</pre>
Fare attenzione al nome dei file: deve terminare con '''.list'''.
 
== Configurare apt ==
 
A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file <code>/etc/apt/preferences</code> e <code>/etc/apt/apt.conf</code>.
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.
 
Anche in questo caso, come per <code>/etc/apt/sources.list</code>, è possibile creare dei files nelle directory <code>/etc/apt/preferences.d/</code> e <code>/etc/apt/apt.conf.d/</code>, anziché editare <code>/etc/apt/preferences</code> e <code>/etc/apt/apt.conf</code>.
Vedere il manuale di <code>apt_preferences</code> e <code>apt.conf</code> per approfondimenti.
 
 
=== Il file <code>preferences</code> ===
 
Creiamo il file <code>/etc/apt/preferences</code>:
<pre>
# touch /etc/apt/preferences
</pre>
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
<pre>
Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950
 
Package: *
Pin: release a=testing
Pin-Priority: 850
 
Package: *
Pin: release a=unstable
Pin-Priority: 800
 
Package: *
Pin: release a=experimental
Pin-Priority: 750
</pre>
 
Il pinning può essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc...
 
Con '''"o="''' si specifica l'origine (la distribuzione) del pacchetto, con '''"a="''' l'archivio (stable, testing, sid, jessie, ecc...).
 
Questo dato è reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "InRelease" che è contenuto in tutti i repository ufficiali. Per archivi personali e/o non ufficiali, invece, non è sempre e necessariamente presente (purtroppo).
 
Vediamo alcuni esempi:
 
<pre>
$ cd /var/lib/apt/lists
 
$ cat deb-multimedia.org_dists_unstable_InRelease
Origin: Unofficial Multimedia Packages
Label: Unofficial Multimedia Packages
Suite: unstable
Version: None
Codename: sid
Date: Thu, 09 May 2013 21:26:40 UTC
Architectures: amd64 armel armhf i386 ia64 mips mipsel powerpc sparc kfreebsd-i386 kfreebsd-amd64
Components: main non-free
Description: This repository is mostly non-free
 
$ cat liquorix.net_debian_dists_sid_InRelease
Origin: liquorix
Label: cool stuff
Suite: unstable
Codename: sid
Date: Fri, 03 May 2013 00:32:30 UTC
Architectures: i386 amd64
Components: main future past
Description: liquorix repository
</pre>
 
Dove:
* '''Suite''' = è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
* '''Components''' = indica il tipo di componente (ad es.: main, contrib, non-free);
* '''Origin''' = specifica il proprietario del repository;
* '''Label''' = identifica il repository: potete inserire descrizioni, ecc...;
* '''Architectures''' = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...).
 
Possiamo vedere che nel file Release è contenuto proprio il dato che stavamo cercando: Origin.
 
=== Il file <code>apt.conf</code> ===
 
Ora creiamo il file <code>/etc/apt/apt-conf</code>
 
<pre>
# touch /etc/apt/apt.conf
</pre>
 
editiamolo inserendo quanto segue:
 
<pre>
APT::Default-Release "testing";
APT::Cache-Limit 15000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";
</pre>
 
Facciamo l'update del database dei pacchetti:
 
<pre>
# apt-get update
</pre>
 
D'ora in avanti avremo due possibilità per installare un nuovo pacchetto: il metodo che usiamo di solito e cioè:
 
<pre>
# apt-get install nome_pacchetto
</pre>
 
che utilizzerà pacchetti proveniente dalla versione impostata come '''Default-Release''' in '''apt.conf''', oppure il comando
 
<pre>
# apt-get install -t versione_di_debian nome_pacchetto
</pre>
 
che provvederà a installare il pacchetto da noi richiesto per la versione specificata (''versione_debian''), risolvendo automaticamente le dipendenze.
 
Happy debian!
 
== Pagine correlate ==
[[Repository & pinning]]
 
{{Autori
|Autore = [[User:Keltik|Keltik]]
|Estesa_da =
:[[User:Nest|Nest]]
|Verificata_da=
:[[Utente:TheNoise|~ The Noise]]
|Numero_revisori = 1
}}

Versione attuale delle 11:37, 25 giu 2016

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.
Leggere la guida sul pinning.


Introduzione

Spesso abbiamo la necessità di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che però non è disponibile per il rilascio di Debian che abbiamo installato.

Il caso più frequente è probabilmente quello di un'installazione di Testing con la necessità di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra.

APT è nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di release diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell'intera distribuzione e senza dover impazzire per risolvere conflitti e inconsistenze. Questa caratteristica è definita anche apt-pinning, dal pin che si imposta nel file /etc/apt/preferences.

In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental e Marillat (deb-multimedia), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...).

Impostare i repository

Assicuriamoci di essere l'utente root e procediamo.

Per prima cosa editiamo il file /etc/apt/sources.list ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo:

### Debian Ufficiale -- Testing
deb http://ftp.it.debian.org/debian/ testing main contrib non-free

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

### Debian Ufficiale -- Sid
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free

###  Debian Ufficiale -- Experimental
deb http://ftp.it.debian.org/debian/ experimental main contrib non-free

### Multimedia -- Marillat
deb http://www.deb-multimedia.org testing main non-free
deb http://www.deb-multimedia.org sid main non-free

In alternativa, invece di editare il file /etc/apt/sources.list, è possibile aggiungere nuovi files nella directory /etc/apt/sources.list.d/: dal manuale man sources.list

       La  directory /etc/apt/sources.list.d fornisce un metodo per aggiungere
       voci di sources.list in file separati che terminano con .list. Il
       formato è il medesimo del file sources.list regolare.

Fare attenzione al nome dei file: deve terminare con .list.

Configurare apt

A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file /etc/apt/preferences e /etc/apt/apt.conf. Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.

Anche in questo caso, come per /etc/apt/sources.list, è possibile creare dei files nelle directory /etc/apt/preferences.d/ e /etc/apt/apt.conf.d/, anziché editare /etc/apt/preferences e /etc/apt/apt.conf. Vedere il manuale di apt_preferences e apt.conf per approfondimenti.


Il file preferences

Creiamo il file /etc/apt/preferences:

# touch /etc/apt/preferences

editiamolo col nostro editor di fiducia e inseriamo queste direttive:

Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950

Package: *
Pin: release a=testing
Pin-Priority: 850

Package: *
Pin: release a=unstable
Pin-Priority: 800

Package: *
Pin: release a=experimental
Pin-Priority: 750

Il pinning può essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc...

Con "o=" si specifica l'origine (la distribuzione) del pacchetto, con "a=" l'archivio (stable, testing, sid, jessie, ecc...).

Questo dato è reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "InRelease" che è contenuto in tutti i repository ufficiali. Per archivi personali e/o non ufficiali, invece, non è sempre e necessariamente presente (purtroppo).

Vediamo alcuni esempi:

$ cd /var/lib/apt/lists

$ cat deb-multimedia.org_dists_unstable_InRelease
Origin: Unofficial Multimedia Packages
Label: Unofficial Multimedia Packages
Suite: unstable
Version: None
Codename: sid
Date: Thu, 09 May 2013 21:26:40 UTC
Architectures: amd64 armel armhf i386 ia64 mips mipsel powerpc sparc kfreebsd-i386 kfreebsd-amd64
Components: main non-free
Description: This repository is mostly non-free

$ cat liquorix.net_debian_dists_sid_InRelease
Origin: liquorix
Label: cool stuff
Suite: unstable
Codename: sid
Date: Fri, 03 May 2013 00:32:30 UTC
Architectures: i386 amd64
Components: main future past
Description: liquorix repository

Dove:

  • Suite = è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
  • Components = indica il tipo di componente (ad es.: main, contrib, non-free);
  • Origin = specifica il proprietario del repository;
  • Label = identifica il repository: potete inserire descrizioni, ecc...;
  • Architectures = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...).

Possiamo vedere che nel file Release è contenuto proprio il dato che stavamo cercando: Origin.

Il file apt.conf

Ora creiamo il file /etc/apt/apt-conf

# touch /etc/apt/apt.conf

editiamolo inserendo quanto segue:

APT::Default-Release "testing";
APT::Cache-Limit 15000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";

Facciamo l'update del database dei pacchetti:

# apt-get update

D'ora in avanti avremo due possibilità per installare un nuovo pacchetto: il metodo che usiamo di solito e cioè:

# apt-get install nome_pacchetto

che utilizzerà pacchetti proveniente dalla versione impostata come Default-Release in apt.conf, oppure il comando

# apt-get install -t versione_di_debian nome_pacchetto

che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.

Happy debian!

Pagine correlate

Repository & pinning




Guida scritta da: Keltik Swirl-auth40.png Debianized 40%
Estesa da:
Nest
Verificata da:
~ The Noise

Verificare ed estendere la guida | Cos'è una guida Debianized