Come posso tornare da un aggiornamento al repository proposto?


Risposte:


24

Ecco un modo più generale per tornare dai pacchetti installati localmente, proposti e pacchetti di backport al canale stable + updates. Mentre le altre risposte sono corrette e funzionano in modo simile, penso che questo sia un approccio più elegante.

  1. Assicurati di aver rimosso le voci di -proposedo -backportsnel tuo /etc/apt/sources.liste /etc/apt/sources.list.d/*file.
  2. Aggiungi un file delle preferenze apt, ad esempio /etc/apt/preferences.d/99-back-to-stable-updatescontenente (per precisequi - sostituisci con la tua versione):

    Package: *
    Pin: release a=precise
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-security
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: -10
    
    Package: *
    Pin: release a=precise-backports
    Pin-Priority: -10
    

    Questo blocco di> 1000 renderà appropriato forzare un downgrade sui pacchetti da quel canale e una priorità di <0 sui canali -proposede -backportsfarà rimuovere anche eventuali pacchetti aggiuntivi.

  3. Adesso corri

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    Ispeziona la soluzione proposta che apt ti darà e, se pensi che sia ok, allora accettala. Se hai bisogno di controllare perché e in quale versione verrà eseguito il downgrade, controlla con apt-cache policy packagenamequali versioni sono disponibili e quale apt decide quale sia il candidato per l'installazione.

  4. Rimuovere di /etc/apt/preferences.d/99-back-to-stable-updatesnuovo il file, poiché non è più necessario.

Grazie ai mlindforum di Ubuntu per questa ispirazione sull'inserimento nel suo post di oltre 5 anni fa - eppure oggi mi ha aiutato abbastanza bene.


Suppongo che dovrebbe funzionare anche con Debian. Sfortunatamente, non fa nulla per me: /
Michael

@Michael 1) Debian non ha il concetto di repository ufficiali proposti. 2) Questo sito parla di Ubuntu, non di Debian. Io vi suggerirei di chiedere una nuova domanda sul Unix.SE .
Gertvdijk,

Questa soluzione ha funzionato anche con la versione 'xenial'! (dopo aver sostituito preciso con xenial nel file, ovviamente) Grazie mille!
Morhook,

4

Questa pagina suggerisce che il pin Apt può essere utilizzato per il downgrade da un intero repository sfruttando il fatto che priorità dei pin superiori a 1000 possono causare il downgrade dei pacchetti .

Una soluzione, quindi, potrebbe essere quella di incrementare temporaneamente di 1000 le priorità predefinite di tutti i file del pacchetto tranne quelli del natty-proposedrepository:

apt-cache policy | awk '
    /^ [0-9]+ / {
        p = $1;
        getline;
        r = $0;
        if (r !~ /a=natty-proposed/) p += 1000;
        print "Package: *\nPin: " r "\nPin-priority: " p "\n"
    }
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed

(Nota: questo metodo non riesce ad aumentare la priorità dei file del pacchetto i cui campi di rilascio contengono virgole. Vedi questa domanda .)

Dopo averlo fatto, apt-get --simulate upgradepuò essere utilizzato per verificare il corretto rilevamento del downgrade. Dopo aver confermato che vengono rilevati i downgrade corretti, sudo apt-get upgradedovrebbe essere tutto ciò che è necessario per eseguire il downgrade.

Al termine del downgrade, utilizzare Sorgenti software per disabilitare il repository degli aggiornamenti pre-release (proposti da Natty) , quindi rimuovere l'aumento di priorità temporaneo:

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

Infine, riavvia in modo che tutti i programmi in esecuzione siano le loro versioni declassate.


1
Soluzione interessante, probabilmente la migliore e più generale della mia. A proposito, il numero di pacchetti declassati è lo stesso, confermando la correttezza di entrambi gli approcci.
enzotib,

2

Non riesco a trovare una soluzione più semplice della seguente. Eppure sperando che qualcuno entri con una risposta migliore.

Il seguente script in grado di eseguire il downgrade

#!/bin/bash

# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages

# run apt-cache policy on each of them, then elaborate with the awk script 
apt-cache policy $(<all-packages) |
  ./get-prev-pkg-vers >old-versions

# install previous version of packages
sudo apt-get --simulate install $(< old-versions)

Lo awkscript, chiamato get-prev-pkg-versè il seguente

#!/usr/bin/awk -f

/^[^ ]/ {
    package = $1
    gsub(":", "", package)
    search_next = 0
}
/^     [^ ]/ {
    installed = 0
    version = $1
    if (search_next == 1) {
        print package "=" version
        search_next = 0
    }
}
/^ \*\*\* [^ ]/ {
    installed = 1
}
/^        [^ ]/ {
    branch = $3
    if (installed == 1 && branch ~ /proposed/) {
        search_next = 1
    }
    installed = 0
}

Durante l'esecuzione dello script, il repository proposto NON avrebbe dovuto essere ancora disabilitato.

Ricordarsi di impostare il bit eseguibile su entrambi gli script.

Un problema con questo approccio è che tutti i pacchetti declassati risulteranno installati manualmente (anche quelli installati automaticamente).

Per sicurezza, aggiungi l' --simulateopzione apt-getalla fine dello script bash.


2

Il ripristino di tutti i pacchetti da natty-proposti probabilmente non è necessario: la maggior parte dei pacchetti verrà presto aggiornata alle stesse versioni tramite natty-updates comunque.

In caso di problemi con un pacchetto, è possibile ripristinare quel pacchetto usando il metodo darent presenta (dopo aver disabilitato -proposto), oppure è possibile utilizzare sudo aptitude install packagename/natty. Ma ancora più importante, dovresti presentare un bug sul pacchetto. Poche persone effettivamente testano le proposte malvagie e se si verificano regressioni (= nuovi problemi) dovrebbero sicuramente essere segnalate. Altrimenti potrebbero finire negli aggiornamenti per tutti gli utenti di Ubuntu. Quindi, se avete problemi, si prega di segnalare.


1

In sinaptico puoi disabilitare il repository per la proposta e aggiornare le tue fonti. Quindi vedrai che tutti i pacchetti che sono stati aggiornati vengono visualizzati come installati localmente (poiché non sono più nei repository).

Ora dovrai "downgrade" quei pacchetti. Seleziona uno per uno e nel menu superiore scegli:

package > force version

(o Control + E)

Apparirà un menu con le opzioni disponibili. Sceglierei il numero di versione inferiore per ciascun pacchetto. Se si commette un errore e c'è una versione più recente nei normali repository, verrà risolto in un aggiornamento successivo.

Una soluzione rapida sarebbe quella di utilizzare il comando purge-ppa che punta al repository porposed, ma non so se funzionerebbe con loro, l'ho usato solo per eliminare ppa esterni e pacchetti di downgrade alle versioni ufficiali di Ubuntu. Non ti consiglio di farlo in questo caso, forse qualcuno sa se è un metodo sicuro ...


L'ultimo paragrafo è solo una speculazione e dovrebbe quindi essere un commento sulla domanda o ricercato correttamente.
Karl Richter il

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.