Come installo un singolo pacchetto dai test Debian o unstable su stable?


41

Voglio installare un singolo pacchetto (e le sue dipendenze, ma solo nella misura in cui non sono soddisfacenti in Wheezy) da Debian Jessie sul mio sistema Wheezy, senza aggiornare "tutto e il lavello della cucina" alle versioni di Jessie. In particolare, vorrei installare kpcli , che è disponibile in pacchetto in Jessie ma non in Wheezy.

Tutto quello che ho trovato indica che dovrei aggiungere i repository Jessie al mio elenco di fonti, impostare il pinning per mantenere tutto a wheezy e prendere solo il singolo pacchetto da jessie, e andrà praticamente al suo posto. Tuttavia, non sta andando a posto per me. Se creo /etc/apt.d/sources.list.d/jessie.list con il seguente contenuto:

deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main

e quindi creare /etc/apt/preferences.d/jessie con:

Package: *
Pin: release a=wheezy
Pin-Priority: 1001

Package: kpcli
Pin: release a=jessie
Pin-Priority: 450

ed esegui apt-get -u updateseguito da apt-get -u install kpcli/jessie, quindi mi aspetto che apt-get inserisca kpcli e forse una manciata di altri pacchetti da Jessie, lasciando intatto il resto del mio sistema installato. (Il mio sistema è un'installazione completamente aggiornata di Wheezy.) In alternativa, se la priorità dei pin è troppo bassa, mi aspetto che non faccia nulla. Piuttosto, sul mio sistema, apt-get vuole aggiornare diverse centinaia di pacchetti.

Cosa, esattamente, è necessario per installare solo questo singolo pacchetto di una versione di Jessie lasciando intatto il resto del mio sistema Wheezy?

Si noti che in questo caso particolare, il software è effettivamente scritto in Perl, quindi non c'è compilazione in binario o qualcosa del genere in questione; tuttavia, esistono alcune dipendenze del modulo Perl. Quindi, una possibile alternativa sarebbe installare il .deb (scaricato manualmente) usando qualcosa che solo (1) consente di specificare un singolo archivio .deb locale che deve essere installato, come dpkg -i, e (2) gestisce le dipendenze in modo intelligente , che dpkg -inon è chiaro . Tuttavia, per tutte le ricerche che ho fatto in diverse occasioni e non sono riuscito a trovare una guida semplice da seguire su come farlo, una soluzione generica (che funziona anche per pacchetti binari compilati) sarebbe ottima .


4
Il solito modo di gestirlo è il backport - ricostruire il pacchetto dalle fonti Debian su Wheezy. Il pacchetto che stai usando sembra essere perl (o almeno dipende da esso), quindi probabilmente non è difficile effettuare il backport. Se vuoi maggiori dettagli, ti preghiamo di dirlo. Probabilmente potrei fornire una soluzione se ne hai davvero bisogno.
Faheem Mitha,

Risposte:


15

Per ogni voce (stabile, test, instabile) hai la priorità pin 500. Non dovresti usare il pin> 1000. Uso 1001 solo quando voglio effettuare il downgrade di qualcosa. Ho test + sid + voci sperimentali specificate in /etc/apt/sources.liste il seguente /etc/apt/preferencesfile:

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130

Il valore 500 è predefinito per unstable. Quindi, proviamo a controllare iceweasel:

# apt-cache policy iceweasel
iceweasel:
  Installed: (none)
  Candidate: 17.0.10esr-1~deb7u1
  Version table:
     26.0-1 0
        130 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
     24.2.0esr-1 0
        500 http://ftp.pl.debian.org/debian/ sid/main amd64 Packages
     17.0.10esr-1~deb7u1 0
        900 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages

Quindi, se provassi a installare iceweasel, verrebbe scaricato dal ramo di prova perché ha la massima priorità.

Prova a cambiare le priorità in:

Package: *
Pin: release a=wheezy
Pin-Priority: 900

Package: kpcli
Pin: release a=jessie
Pin-Priority: 910

sudo apt-get -u install kpcli/jessiemi dà ancora 316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.con le tue priorità suggerite. Se lo faccio apt-cache policy perl(uno dei pacchetti che vuole aggiornare) mostra 5.18.1-5 come candidato con priorità 500 e installato 5.14.2-21 + deb7u1 anche con priorità 500. Sembra quasi, per qualsiasi motivo, apt non raccoglie le priorità ...
un CVn

OK, ho qualcosa. Sembra che il trucco fosse usare Package: kpcli*(piuttosto che Package: kpcli) e poi un Package: * Pin: release o=Debian Pin-Priority: -10alla fine. Quindi ovviamente ci sono forti dipendenze che portano a versioni di Perl disponibili solo in Jessie, che a sua volta ha bisogno di una nuova libc6! Onestamente, non ho intenzione di percorrere quella strada, ma questo almeno mi ha dato il risultato che stavo cercando. Grazie!
un CVn

25

In realtà c'è un modo per farlo senza usare il pinning / le priorità. Invece, è possibile specificare qual è la versione predefinita da cui verranno installati i pacchetti, che verranno quindi utilizzati se non diversamente specificato utilizzando il parametro di rilascio di destinazione. Funziona allo stesso modo se si desidera installare solo pacchetti selezionati da ad esempio backport.

Lo mostrerò per l'installazione dei pacchetti da Stretch in Jessie, poiché quelli sono gli attuali stable / testing, ma funziona allo stesso modo per l'installazione dei pacchetti Jessie in Wheezy come era stato inizialmente richiesto.

Innanzitutto, aggiungi stretch come repository, ad esempio in /etc/apt/sources.list.d/stretch.list:

deb http://ftp.debian.org/debian stretch main

Quindi, per impostare la versione predefinita, creare un file come /etc/apt/apt.conf.d/default-releasecontenente:

APT::Default-Release "jessie";

(In Wheezy, penso apt.conf.dche non esistesse e avresti bisogno di inserire quel frammento /etc/apt/apt.conf).

Quindi, installare un pacchetto dai test è semplice come aptitude -t stretch install kpclisenza che tu debba preoccuparti di fissare le priorità.

Nota: @amc ha sottolineato nei commenti che se si utilizza aptinvece di aptitude, è necessario utilizzare "stable"come Default-Releaseanziché "jessie". Grazie! (Ovviamente, puoi usare anche aptitudecon quell'impostazione.)


... sembra un modo davvero semplice per farlo. Perché questo non è ufficialmente accettato ??
JamesTheAwesomeDude

1
RicevoThe value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
Steven Penny il

1
è necessario utilizzare "stable" / "testing" / ecc. anziché "jessie" / "stretch" per la versione predefinita e quando si utilizza apt
amc,

6

Pin: release a=wheezydovrebbe essere Pin: release n=wheezy, forse.

Dalla pagina man :

Il seguente record assegna una priorità elevata a tutte le versioni del pacchetto appartenenti a qualsiasi distribuzione il cui nome in codice è "jessie".

           Package: *
           Pin: release n=jessie
           Pin-Priority: 900

Quindi è corretto!


3
questo non installerebbe TUTTI i pacchetti da jessy?
rubo77,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.