Página 1 de 1

[RESUELTO] Instalar la versión anterior de un paquete

Publicado: 19 de marzo de 2025 - 11:56
por VincentUCA
Versión 2.6 de WAPT

Buen día,
Lo siento si ya se abrió un tema similar, no pude encontrarlo.
Actualmente estoy desarrollando un paquete de software cuyo instalador no elimina la versión anterior. Así que agregué un fragmento de código para hacerlo. Pero para probar, me gustaría poder reinstalar la versión anterior. Creo que ya lo hice antes, pero no tomé notas y ya no recuerdo cómo.
Encontré una sección en la documentación que dice:
Cada comando que toma el nombre de un paquete como parámetro también puede tomar el `package_uuid` único del paquete como parámetro (wapt-get install, wapt-get forget, etc.). Usar un GUID permite especificar un paquete único sin ambigüedades sobre su arquitectura o versión. El `package_uuid` aparece en la salida de `wapt-get list` y `wapt-get search`. Por ejemplo:
Así que hice una

Código: Seleccionar todo

wapt-get search monpaquet
para recuperar el ID del paquete en la versión que me interesa.
Pero luego cuando ejecuto el comando

Código: Seleccionar todo

wapt-get install c65ecfc2-ed87-428a-abc7-1646497ee71e
Me sale el siguiente error:
Usando el archivo de configuración: C:\Program Files (x86)\wapt\wapt-get.ini
instalar usando los paquetes WAPT c65ecfc2-ed87-428a-abc7-1646497ee71e

Resultados:
Crítico:
=== Paquetes no disponibles ===
c65ecfc2-ed87-428a-abc7-1646497ee71e [x64_fr_PROD,DEV,PREPROD]
¿En qué me estoy equivocando?
Gracias de antemano por su respuesta.
Atentamente.
Vicente

Re: Instalar la versión anterior de un paquete

Publicado: 20 de marzo de 2025 - 09:42
por dcardon
Hola Vincent,

Puede forzar la instalación de una versión particular utilizando la siguiente sintaxis:

Código: Seleccionar todo

wapt-get install "tis-monpaquet(=2.5.3)"
Sin embargo, la versión "pinning" no se almacena en el agente y, por lo tanto, el paquete se actualizará en la próxima actualización de wapt-get.

Atentamente,

Denis

Re: Instalar la versión anterior de un paquete

Publicado: 20 de marzo de 2025 - 19:46
por vcardon
Hola, para complementar el comentario de Denis, si quieres una versión de un software sin que se actualice, duplica la versión que te interesa y cambia el nombre del paquete con la versión del software.

Por ejemplo: el paquete tis-firefox para la versión 136.0.2 se convertiría en tis-firefox-pinned-136.0.2.

Re: Instalar la versión anterior de un paquete

Publicado: 21 de marzo de 2025 - 11:34
por VincentUCA
Hola a todos,
Gracias por su valioso consejo. Probé con éxito la instalación de una versión anterior de mi paquete. Sin embargo, no se debe omitir la parte añadida por WAPT en el número de versión; de lo contrario, no funcionará. Para usar el ejemplo anterior, se ve así:

Código: Seleccionar todo

wapt-get install "tis-monpaquet(=2.5.3-2)"
Sugiero eliminar la instalación a través del UUID de un paquete de la documentación si ya no funciona y agregar este método a través de la "fijación" de versión que no he podido encontrar en otro lugar.

Siendo sincero, el paquete que intento desarrollar es para el software Chimera. Ya existe un paquete en el repositorio tranquil.it con el código para desinstalar versiones anteriores, pero he notado dos cosas.

El primer problema es que el número de versión del software Chimera no está registrado en el registro de Windows. Por lo tanto, el código del paquete es el siguiente:

Código: Seleccionar todo

for to_uninstall in installed_softwares("UCSF Chimera"):
        if Version(to_uninstall["version"]) < Version(last_version):
Pruebe siempre la condición:

Código: Seleccionar todo

if 0.0.0.0 < N° de la dernière version:
Por lo tanto, independientemente de la versión instalada, se desinstalará.

El segundo problema es que la función `installed_softwares("UCSF Chimera")` también recupera la clave de registro de ChimeraX, que tampoco tiene número de versión. Esto provoca que ChimeraX se desinstale durante el proceso de instalación de Chimera.

Vi que en la clave de registro de desinstalación de Chimera, el número de versión se indicaba en la clave "DisplayName". Por lo tanto, modifiqué el código de la siguiente manera:

Código: Seleccionar todo

for to_uninstall in installed_softwares("UCSF Chimera"):
        to_uninstall_version = to_uninstall["name"].split()[-1]
        if Version(to_uninstall_version) < Version(last_version):
            print(f"Removing: {to_uninstall['name']} ({to_uninstall_version})")
Las condiciones probadas son:

Código: Seleccionar todo

if 1.18.0.0 <1.19.0.0:
Y

Código: Seleccionar todo

if "ChimeraX"<1.19.0.0:
Debido a que ChimeraX no tiene el número de versión incluido en "DisplayName", esta condición parece devolver Falso.

No es la solución más limpia, pero funciona. La última versión de Chimera no se desinstala ni se reinstala al actualizar el paquete sin cambiar la versión del software, y ChimeraX tampoco se desinstala, lo que permite que ambos paquetes coexistan. Admito que es un poco quisquilloso :ups: Porque ahora que he añadido la función para eliminar el acceso directo del escritorio, no creo que toque el código de este paquete. Normalmente no tiene mucho sentido tener Chimera y ChimeraX instalados en la misma máquina, pero al parecer, hay funciones que se eliminaron de Chimera en ChimeraX que son útiles para algunos usuarios.

Gracias nuevamente por responder a mi solicitud.
Atentamente.
Vicente

Re: Instalar la versión anterior de un paquete

Publicado: 21 de marzo de 2025 - 14:11
por dcardon
Hola Vincent,

gracias por tus comentarios. Reenviaré tu mensaje al equipo que mantiene los paquetes de la tienda para que puedan corregir el paquete siguiendo tus indicaciones. :-)

Saludos,

Denis

Re: Instalar la versión anterior de un paquete

Publicado: 24 de marzo de 2025 - 11:10
por italbot
Hola,

acabo de adaptar el código para que una versión ya instalada de ChimeraX no se desinstale junto con Chimera. Efectivamente, la comprobación de la versión no funcionaba; también la he modificado.

Gracias por avisarnos.

Atentamente,

Ingrid