¿Cómo puedo volver de una actualización al repositorio propuesto?

Respuestas:

24

Aquí hay una forma más general de revertir desde paquetes instalados localmente, paquetes propuestos y de backports al canal estable + actualizaciones. Si bien las otras respuestas son correctas y funcionan de manera similar, creo que este es un enfoque más elegante.

  1. Asegúrese de que ha extraído de las entradas -proposedo -backportsen sus /etc/apt/sources.listy /etc/apt/sources.list.d/*archivos.
  2. Agregue un archivo de preferencias de apt, por ejemplo, que /etc/apt/preferences.d/99-back-to-stable-updatescontenga (por preciseaquí, reemplace con su versión):

    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
    

    Esta fijación de> 1000 hará que sea forzado una rebaja en los paquetes de ese canal y una prioridad de <0 en los canales -proposedy -backportstambién eliminará cualquier paquete adicional.

  3. Ahora corre

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

    Inspeccione la solución propuesta que apt le dará, y si cree que está bien, acéptelo. Si necesita verificar por qué y a qué versión se degradará, verifique esto apt-cache policy packagenamepara ver qué versiones están disponibles y qué apt decide es el candidato para la instalación.

  4. Elimine el /etc/apt/preferences.d/99-back-to-stable-updatesarchivo nuevamente, ya que ya no es necesario.

Gracias a mlindlos foros de Ubuntu por esta inspiración en anclar en su publicación de hace más de 5 años, sin embargo, me ayudó bastante bien hoy.

gertvdijk
fuente
Supongo que también debería funcionar con Debian. Desafortunadamente, no hace nada por mí: /
Michael
@Michael 1) Debian no tiene el concepto de repositorios oficiales propuestos. 2) Este sitio es sobre Ubuntu, no Debian. Yo le sugeriría a hacer una nueva pregunta sobre Unix.SE .
gertvdijk
¡Esta solución también funcionó con la versión 'xenial'! (después de reemplazar preciso con xenial en el archivo, por supuesto) ¡Muchas gracias!
morhook
4

Esta página sugiere que la fijación de aptos se puede usar para degradar de un repositorio completo al aprovechar el hecho de que las prioridades de los pin superiores a 1000 pueden causar degradaciones de paquetes .

Una solución, entonces, podría ser incrementar temporalmente en 1000 las prioridades predeterminadas de todos los archivos de paquetes, excepto los del natty-proposedrepositorio:

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: este método no aumenta la prioridad de los archivos de paquete cuyos campos de lanzamiento contienen comas. Consulte esta pregunta ).

Después de hacer esto, apt-get --simulate upgradepuede usarse para probar la detección exitosa de degradación. Después de confirmar que se detectan las degradaciones correctas, sudo apt-get upgradedebe ser todo lo que se necesita para realizar la degradación.

Cuando se complete la degradación, use las Fuentes de software para deshabilitar repositorio de actualizaciones preliminares (propuesto por natty) , luego elimine el aumento de prioridad temporal:

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

Finalmente, reinicie para que todos los programas en ejecución sean sus versiones degradadas.

ændrük
fuente
1
Solución interesante, probablemente la mejor y más general que la mía. Por cierto, el número de paquetes degradados es el mismo, lo que confirma la exactitud de ambos enfoques.
enzotib
2

No puedo encontrar una solución más simple que la siguiente. Sin embargo, esperando que alguien entre con una mejor respuesta.

El siguiente script que puede ejecutar la degradación

#!/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)

El awkguión, denominado get-prev-pkg-verses el siguiente

#!/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
}

Al ejecutar el script, el repositorio propuesto NO debería haberse desactivado todavía.

Recuerde establecer el bit ejecutable en ambos scripts.

Un problema con este enfoque es que todos los paquetes degradados resultarán como instalados manualmente (también aquellos que se instalaron automáticamente).

Para estar seguro, agregue la --simulateopción al apt-getfinal del script bash.

enzotib
fuente
2

Probablemente no sea necesario revertir todos los paquetes de natty-sugerido: de todos modos, la mayoría de los paquetes se actualizarán pronto a las mismas versiones a través de actualizaciones de natty.

En caso de que tenga un problema con un paquete, puede revertir ese paquete usando el método que darent presenta (después de deshabilitar -propuesto), o puede usarlo sudo aptitude install packagename/natty. Pero lo más importante, debe presentar un error contra el paquete. Pocas personas realmente prueban lo propuesto por natty, y si se producen regresiones (= nuevos problemas), ciertamente deben informarse. De lo contrario, podrían terminar en las actualizaciones para todos los usuarios de ubuntu. Entonces, si tiene algún problema, informe.

johanvdw
fuente
1

En synaptic puede deshabilitar el repositorio de propuestas y actualizar sus fuentes. Luego verá que todos los paquetes que se han actualizado aparecen como instalados localmente (ya que ya no están en los repositorios).

Ahora tendrá que "degradar" esos paquetes. Seleccione uno por uno, y en el menú superior elija:

package > force version

(o Control + E)

Aparecerá un menú con las opciones disponibles. Elegiría el número de versión inferior para cada paquete. Si comete un error y hay una versión más nueva en los repositorios normales, se resolverá en una actualización posterior.

Una solución rápida sería usar el comando purge-ppa apuntando al repositorio propuesto, pero no sé si funcionaría con ellos, solo lo he usado para purgar paquetes externos de ppa y downgrade a las versiones oficiales de ubuntu. No te recomendaré que hagas esto en este caso, tal vez alguien sepa si es un método seguro ...

animaletdesequia
fuente
El último párrafo es solo especulación y, por lo tanto, debe ser un comentario sobre la pregunta o investigarse adecuadamente.
Karl Richter