sábado, 14 de febrero de 2026

📝 Winget upgrade vs winget update: ¿cuál es la diferencia y cómo bloquear actualizaciones con pins?

Cuando administramos aplicaciones en Windows, WinGet se ha convertido en una herramienta fundamental para instalar, actualizar y mantener software desde la línea de comandos. Sin embargo, aún genera confusión la diferencia entre winget upgrade y winget update, así como el uso del comando winget pin para evitar que ciertos programas se actualicen automáticamente.

En esta entrada te explico estas diferencias y te muestro un ejemplo real de cómo bloquear un programa para que no se actualice, utilizando blocking pins.


🔄 ¿Cuál es la diferencia entre winget upgrade y winget update?

Según la documentación oficial, update no es un comando diferente, sino un alias de upgrade. Esto significa que:

➡️ winget update = winget upgrade\ Ambos realizan exactamente la misma acción: actualizar aplicaciones. [learn.microsoft.com], [github.com]

Por lo tanto, cualquier comando que ejecutes con upgrade funcionará igualmente con update, incluyendo parámetros como --all, --silent, --include-unknown, etc.


🔒 Cómo funciona el pinning en WinGet

WinGet permite “anclar” paquetes para controlar si pueden o no ser actualizados:

Tipos de pin:

  1. Pinning\ Excluye al paquete de winget upgrade --all, pero permite actualizarlo manualmente. [learn.microsoft.com]

  2. Blocking\ Bloquea completamente la actualización, incluso si se intenta actualizar el paquete directamente.\ Requiere eliminar el pin o usar --force para sobrescribirlo. [learn.microsoft.com]

  3. Gating\ Permite actualizaciones solo dentro de un rango de versiones definido. [learn.microsoft.com]

En este post nos enfocaremos en blocking, ideal cuando quieres impedir que un programa sea actualizado bajo cualquier circunstancia.


🛑 Ejemplo práctico: bloquear MobaXterm para que no se actualice

A continuación tienes un ejemplo real ejecutado con WinGet, usando un prompt tradicional tipo:

c:\WinUser>

📌 1. Ver qué paquetes están actualmente anclados (pins)

c:\WinUser> winget pin list
Nombre    Id                Versión        Origen Tipo de anclaje
-----------------------------------------------------------------
MobaXterm Mobatek.MobaXterm 25.0.0    winget Pinning

📌 2. Quitar el pin existente

c:\WinUser> winget pin remove Mobatek.MobaXterm
Encontrado MobaXterm [Mobatek.MobaXterm]
El anclaje se quitó correctamente

📌 3. Crear un pin blocking para impedir actualizaciones

c:\WinUser> winget pin add Mobatek.MobaXterm --blocking
Encontrado MobaXterm [Mobatek.MobaXterm]
Anclaje agregado correctamente

📌 4. Verificación final

c:\WinUser> winget pin list
Nombre    Id                Versión        Origen Tipo de anclaje
-----------------------------------------------------------------
MobaXterm Mobatek.MobaXterm 24.2.0.5220    winget Blocking

Ahora MobaXterm no se actualizará automáticamente, ni con winget upgrade --all ni con winget upgrade Mobatek.MobaXterm, a menos que lo fuerces manualmente o elimines el pin.


Conclusión

  • winget update y winget upgrade son lo mismo: update es solo un alias. [learn.microsoft.com]
  • Puedes usar winget pin para evitar que una aplicación se actualice.
  • El tipo blocking es útil para software corporativo, herramientas críticas o versiones específicas que deseas mantener estables. [learn.microsoft.com]

sábado, 6 de mayo de 2023

Pinning apps using winget

Some times you want to update all your packages on your windows system, winget can be a solution, but sometimes all thinks can be out of control, you can try this way to skip certain updates over winget commands.

Recently on winget unstable version  of winget got the excellent feature and its called pin programs.

This is a useful tools in order to run in a relaxed way the famous update "winget update --all"  and does not stuck your system in a little moment.

This treat shows how winget will works:

Pin a package · Issue #476 · microsoft/winget-cli (github.com)


I installed the April unstable release of winget and it seems the this version uses the operations: add, remove, list, reset, showed as follows:









To add a program for pined version just type as follows:





To ensure the package is fully pined, you can try:





And will show your current pinned programs:




If you want to delete or remove this pin, you can try:





Finally, if you want reset all pines you can do it just typing:




Enjoy and Cheers!!

martes, 8 de noviembre de 2022

Fedora y la tapa del ordenador

 He notado que fedora no trae la opción de los equipos Ubuntu en energia para configurar el comportamiento al cerrar la tapa de energia en el portatil.


En este documento de redhat se explica como cambiar las opciones cuando se cierra la tapa, entre las cuales tenemos:


No hacer nada --> ignore

Suspender -> suspend

Bloquear la pantalla -> lock


Lo que nos suguieren es editar el fichero:


/etc/systemd/logind.conf


Por ejemplo:

[Login]
HandleLidSwitch=lock

y reiniciar el servicio ( es posible que la sesión actual de X se pierda luego de hacer los cambios y un reinicio completo sea necesario) .


systemctl restart systemd-logind.service

sábado, 13 de agosto de 2022

Como Instalar VirtualBox 6.1 y firmar los modulos del kernel fedora 35 y 36

Cuando requeria ejecutar Virtualbox en un sistema fedora, la única opción viable era  deshabilitar la opción de secureboot en equipo, hasta hace poco, siempre existía la necesidad de firmar los drivers de virtualbox, pero esto no era posible o no había encontrado como hasta ahora.


En esta página se explica el proceso detalladamente. Básicamente los pasos son los siguientes:


Preparar el sistema Fedora:

Pasarnos a modo super usuario

#sudo -i

Ejecutar actualizaciones y limpieza del sistema:

#dnf -y update && dnf -y upgrade && dnf -y autoremove

Instalar cabecéras del kernel y módulos de desarrollo:

#dnf install -y kernel-devel-$(uname -r) kernel-headers

Habilitar los repositorios:


Pasarnos a super usuario

#sudo -i 

Importar la firma de Oracle VirtualBox en nuestros RPM

#rpm --import  https://www.virtualbox.org/download/oracle_vbox.asc
 
Agregar el Repositorio oficial VirtualBox vía DNF:

#dnf config-manager --add-repo https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo

Instalar VirtualBox en Fedora 36

Instalamos VirtualBox vía DNF

#dnf install -y VirtualBox-6.1

regresar al usuario sin privilegios y ejecutar 

#exit

sudo agregar al usuario normal al grupo vboxusers

#sudo  usermod -aG vboxusers $USER

#sudo -i

Preparar el sistema para firmar los drivers en los sistemas EFI con SecureBoot habilitado

Generar el Machine Owner Key MOK

Instalar OpenSSL
#dnf install -y openssl

Crear el directorio para nuestros módulos:

#mkdir /root/module-signing
#cd /root/module-signing

Crear la llave de la máquina (yo usé hostname) pero ese campo CN se puede personalizar a su gusto:

#openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=$(hostname)/"

Proteger la llave creada

#chmod 600 MOK.priv
 

Ahora vamos a importar la llave generada con la utilidad mokutil, debemos colocar contraseña y reiniciar, esto nos dirigirá a la BIOS donde debemos completar el proceso de importación, colocando la contraseña asignada en este paso.

#mokutil --import /root/module-signing/MOK.der

Al reiniciar presionamos Enter

1. Seleccionamos la opción Enrolar/Inscribir MOK
2. Seleccionamos la opcion View Key 0 (Ver llave 0) para revisar el Machine Owner, si la información es correcta, continuamos.
3. Elegimos continuar y damos la opción YES (si), en seguida se solicita la contraseña que le asingamos a la llave.
4. Reiniciamos el sistema.


Con este MOK agregado a la BIOS nos permitirá firmar nuestros drivers de VirtualBox y así completar el proceso:

creamos el script /root/module-signing/sign-vbox-modules

Nos pasamos a Root:

#sudo -i

Creamos el script con el comando echo.

# echo "
#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
  echo "Signing $modfile"
  /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 \
                                /root/module-signing/MOK.priv \
                                /root/module-signing/MOK.der "$modfile"
done
" > /root/module-signing/sign-vbox-modules

Luego de esto Protegemos el script

#chmod 700 /root/module-signing/sign-vbox-modules

Ahora podemos ejecutar el script:

#/root/module-signing/sign-vbox-modules

Con los drivers firmados podemos habilitar nuestro sistema VirtualBox

#systemctl enable --now vboxdrv


Habilitar las Extensiones de VirtualBox


Descargamos las extensiones:

#wget https://download.virtualbox.org/virtualbox/6.1.34/Oracle_VM_VirtualBox_Extension_Pack-6.1.34.vbox-extpack

Las agregamos al sistema Instalado y Habilitado

#VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.34.vbox-extpack


Y así podemos ya Instalar nuestros sismemas de pruebas con VirtualBox en Fedora 35 - 36




Un saludo.

sábado, 14 de agosto de 2021

Revertir actualización de paquetes con DNF


 Existen múltiples formas de deshacer actualizaciones o instalaciones de paquetes en Linux, para el caso de fedora, redhat, almalinux, centos, rock y otras, a través del comando dnf se puede hacer una trazabilidad de las transacciones y obtener diferentes resultados:

El comando dnf history 

 nos permite observar la clase de cosas que hemos hecho con los sistemas:


 

 

Cuando se ha identificado lo que se quiere deshacer, uno puede irse al id  de la transacción:

 

El comando descargará nuevamente los paquetes y los instalará en la versión previa.

Por otro lado, no es necesario que se use el control estricto del id de la transacción; por ejemplo, si queremos deshacer la acción 7, para estar seguros de se hizo o no, o se modificó por otro paquete podemos  hacer lo siguiente:

 

Con esto ya sabremos qué hacer en caso de necesitar hacer rollback en una actualización o reinstalación de paquetes.