Tengo una serie de paquetes de mesa que había actualizado a una versión de PPA, antes de purgar el PPA para poder actualizar mi sistema. Las diferencias en las versiones son menores (técnicamente son las mismas, solo un conjunto de bibliotecas eran de git y las otras son las versiones finales).
Si trato de degradar a través de Synaptic, apt-get o aptitude, me arrojan al infierno de la dependencia.
¿Hay alguna manera de degradar los paquetes manualmente (quizás uno por uno) y marcar sus paquetes dependientes como inmuebles (si eso tiene sentido) hasta que termine?
PD: esta pregunta: ¿Cómo degradar un paquete a través de apt-get? es un poco diferente y no ayuda a esta situación.
apt
dpkg
dependencies
downgrade
RolandiXor
fuente
fuente
ppa-purge
primero?synaptic
, cuando selecciona el paquete xyz, todas las dependencias se seleccionarán de forma predeterminada. Pero siempre puede anular la selección de todas las dependencias y simplemente instalar el paquete principal. Más tarde puede instalar todas las dependencias. esto solo funciona si está listo para reinstalar.Respuestas:
Nunca jugué con esto antes, pero sugeriría que usted
hold
(olock
) la versión de las dependencias que le causan problemas. De esta formaapt
tiene un número más limitado de posibles soluciones, y tal vez no se confunda cuando intente degradar los otros paquetes.Si nada más funciona, podría tomar el enfoque manual sugerido en esta respuesta: ¿Cómo degradar un paquete a través de apt-get? . Básicamente, descarga las necesarias
.deb
paquetes manualmente, a continuación, instalar uno por uno con el de nivel inferiordpkg
y uno de sus argumentos contundentes:--ignore-depends
,--force-depends
,--force-depends-version
, o incluso--force-all
.En el mismo espíritu que el anterior, tiene el
--force-downgrade
argumento:Pero esto supone que has leído
man dpkg
y que entiendes lo que haces:Consulte Error: el número de versión no comienza con dígitos y ¿Cómo instalar una versión anterior de Java y Cómo instalar una versión anterior de paquete como liquid 2.2.2? para ejemplos de:
Y vea ¿Cómo puedo instalar un paquete sin instalar algunas dependencias? para un ejemplo (junto con la advertencia apropiada) de:
Otro enfoque sería crear un
.deb
paquete ficticio utilizando elequivs
paquete (y quizás un nombre ligeramente diferente). Luego, la instalación del paquete ficticio debería permitirle eliminar el paquete "verdadero" mientras conserva los detalles relevantes y luego instalar la versión anterior. No estoy seguro de cómo funcionaría exactamente esto, pero revise este hilo relevante para obtener detalles: cómo eliminar un deb sin eliminar sus dependencias .fuente
Primero puede usar
apt-mark
para marcar todas las dependencias del paquete de destino (y tal vez las recomendadas / sugeridas también) instaladas en el sistema como instalaciones manuales . Después de hacer eso, instale las versiones anteriores del softwareapt-get
mencionando explícitamente la versión.Para enumerar la dependencia, los paquetes recomendados y sugeridos para el paquete de destino:
Marcar paquetes como instalados manualmente :
(use esto para todas las dependencias, recomienda y sugiere).
Elimine el paquete de destino:
Para ver una lista de versiones de paquetes a las que puede degradar / actualizar, use:
Instale la versión de destino del paquete requerido:
o
PD. Si la lista de dependencias / paquetes recomendados / sugeridos , es decir, aquellos con los que se va a marcar
apt-mark
es grande, guarde la lista deseada de la salida empaquetadaapt-cache show <target-package-name>
en cualquier archivo,/path/to/foo
y useapt-mark
en un combo como este:fuente
apt-cache policy <target-package-name>
para tener una lista de versiones de paquetes que puede degradar / actualizar a ...Acabo de pasar por la molestia de actualizar a una versión anterior de un paquete y luego decidir degradar. Esto fue a través de un repositorio privado de mantenedores. En mi caso, se trataba de probar la última versión de systemd 233 (aún no publicada).
La clave es comprender que necesita especificar todos los paquetes que deberían ser degradados. Si lo hace bien, es probable que haga lo que quiera. Si pierde algo, apt le dirá que la acción hará que se eliminen muchos paquetes. Para asegurarnos de que usamos la bandera '-s' para probar la degradación antes de hacerlo.
Los pasos que debe seguir son los siguientes:
1) Enumere todas las dependencias que se actualizaron a upstream (use alguna otra palabra clave si su situación es diferente):
Esto le proporciona una lista de paquetes con un número de versión ascendente.
2) Enumere cuál es la versión estable correcta para cada paquete:
3) Verifique que todo esté bien:
(no estoy seguro si --reinstall fue necesario por cierto, pero esto es lo que hice)
4) Elimina los -s y hazlo.
fuente