En corto

1
2
3
4
5
mkdir -p /usr/share/proxmox-ve
touch /usr/share/proxmox-ve/pve-apt-hook
chmod +x /usr/share/proxmox-ve/pve-apt-hook
apt install -f
apt install proxmox-ve

Con proxmox-ve reinstalado, el hook real reemplaza al vacío y apt vuelve a la normalidad.

El error

1
2
/bin/sh: 1: /usr/share/proxmox-ve/pve-apt-hook: not found
E: Failure running script /usr/share/proxmox-ve/pve-apt-hook

Sale en cualquier apt install, apt upgrade o apt full-upgrade, y bloquea todo, incluido lo que intentas hacer para arreglarlo.

Por qué pasa

El paquete proxmox-ve instala dos cosas que van juntas:

ArchivoQué es
/etc/apt/apt.conf.d/10pveapthookConfigura apt para ejecutar el hook antes de cada operación de dpkg
/usr/share/proxmox-ve/pve-apt-hookEl hook: protege proxmox-ve y el kernel de Proxmox de ser eliminados por error

Si proxmox-ve se fue (un apt remove o autoremove mal calculado, un dist-upgrade interrumpido, un paquete a medio instalar), el script desaparece pero el archivo de /etc/apt/apt.conf.d/ es un conffile y se queda. apt sigue intentando ejecutar un script que ya no existe y falla antes de tocar nada.

Arreglo si quieres seguir con Proxmox

El hook vacío solo sirve para que apt arranque; lo importante es reinstalar proxmox-ve:

1
2
3
4
5
6
mkdir -p /usr/share/proxmox-ve
touch /usr/share/proxmox-ve/pve-apt-hook
chmod +x /usr/share/proxmox-ve/pve-apt-hook

apt install -f            # cierra dependencias rotas primero (recomendación del staff de Proxmox)
apt install proxmox-ve    # trae de vuelta el hook real y lo que falte

Comprueba que el hook ya es el de verdad y no tu archivo vacío:

1
2
dpkg -S /usr/share/proxmox-ve/pve-apt-hook   # proxmox-ve: /usr/share/proxmox-ve/pve-apt-hook
head -1 /usr/share/proxmox-ve/pve-apt-hook   # #!/usr/bin/perl

Después de esto, apt full-upgrade y un reinicio para confirmar que arranca el kernel de Proxmox.

Arreglo si quitaste Proxmox a propósito

Si la máquina está volviendo a ser un Debian normal, el snippet sobra:

1
2
3
rm /etc/apt/apt.conf.d/10pveapthook
# o, más limpio, purgar lo que quedó del paquete:
dpkg --purge proxmox-ve

apt remove deja los conffiles; purge se los lleva.

Trampas

  • No dejes el hook vacío. Existe para que apt no te borre proxmox-ve ni el kernel proxmox-kernel-* por accidente. Con el archivo vacío esa protección no está.
  • Revisa qué se fue con proxmox-ve. Si apt lo quitó, probablemente también se llevó dependencias; el apt install proxmox-ve las regresa, pero mira la lista antes de aceptar.
  • Si apt install proxmox-ve no encuentra el paquete, el problema está en los repos: repositorios sin suscripción.
  • Referencia: hilo del foro de Proxmox.