# Reparar dpkg roto por G Radio Player ## Actualizar desde 0.4.8 o anterior a 0.4.9+ Si tienes una versión anterior instalada, **no ejecutes `dpkg -i` directamente** — el `prerm` del paquete instalado corre primero y puede matar a `dpkg`. Usa el script incluido en el ZIP, que parchea automáticamente antes de instalar: ```bash sudo bash instalar.sh ``` O aplica el parche manual de una línea antes de instalar: ```bash sudo bash -c 'printf "#!/bin/bash\nexit 0\n" > /var/lib/dpkg/info/gradio-player.prerm' sudo dpkg -i gradio-player_0.4.9_amd64.deb # o arm64 / arm64_bookworm ``` --- ## Mi dpkg ya está roto (no puedo instalar ni actualizar nada) ### Síntoma ``` E: se interrumpió la ejecución de dpkg, debe ejecutar manualmente «sudo dpkg --configure -a» para corregir el problema ``` O: ``` dpkg: error al procesar el paquete gradio-player (--configure): El paquete está en un estado grave de inconsistencia - debe reinstalarlo antes de intentar su configuración. ``` ### Reparación rápida ```bash # 1. Parchear el prerm roto sudo bash -c 'printf "#!/bin/bash\nexit 0\n" > /var/lib/dpkg/info/gradio-player.prerm' # 2. Reinstalar 0.4.9 (ya tiene prerm correcto) sudo dpkg -i gradio-player_0.4.9_amd64.deb # o arm64 / arm64_bookworm ``` Si aun así dpkg reporta inconsistencia, forzar la eliminación primero: ```bash sudo bash -c 'printf "#!/bin/bash\nexit 0\n" > /var/lib/dpkg/info/gradio-player.prerm' sudo dpkg --remove --force-remove-reinstreq gradio-player sudo dpkg --configure -a sudo dpkg -i gradio-player_0.4.9_amd64.deb ``` --- ## Causa raíz El script `prerm` de versiones anteriores usaba `pkill -f "radio-player"`. El flag `-f` busca en la línea de comando **completa** de todos los procesos. La cadena `"radio-player"` es subcadena de `"gradio-player"`, por lo que el patrón coincide con: - El propio script de mantenimiento: `/var/lib/dpkg/info/gradio-player.prerm` - La invocación de dpkg: `dpkg -i gradio-player_0.4.9_amd64.deb` Al ejecutar, el script se mata a sí mismo y a dpkg, dejando el gestor de paquetes en estado inconsistente. **Desde 0.4.9**: el `prerm` es `exit 0`. No hay kill de procesos. Los ejecutables en uso se reemplazan de forma segura en disco (Linux mantiene el inode anterior abierto hasta que el proceso cierre). --- ## Limpieza manual (si dpkg no removió los archivos) ```bash sudo rm -f /usr/local/bin/{radio-player,comercial-scheduler,playlist-refill} sudo rm -f /usr/local/bin/{gradio.sh,gr-buscador,gr-playlist} sudo rm -f /usr/local/bin/{gr-pautaje,gr-parrilla,gr-botonera,gr-visor,gr-reportes,gr-record} sudo rm -rf /usr/local/share/radio-player sudo rm -f /usr/share/applications/gradio-player.desktop sudo rm -f /usr/share/icons/hicolor/48x48/apps/gradio-player.png sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor 2>/dev/null sudo update-desktop-database /usr/share/applications 2>/dev/null ``` Los datos del usuario en `~/.gradio/` no se eliminan (parrilla, comerciales, configuración). --- ## Historial del bug | Versión | Estado prerm | Notas | |---------|-------------|-------| | 0.3.x – 0.4.7 | `pkill -f` roto | Todos los .deb publicados afectados | | 0.4.8 | `pkill -x` (mejorado) | Sigue siendo un kill — al actualizar a 0.4.9 corre el prerm de 0.4.8 instalado, que puede matar dpkg en algunos entornos | | **0.4.9+** | `exit 0` | **Fix definitivo** — no hay kill de procesos |