Sistema de automatización de radio en Rust (GTK4 + GStreamer): reproductor principal con crossfade y ducking, scheduler de comerciales, refill de playlist, y herramientas auxiliares (pautaje, parrilla, botonera, visor, buscador, playlist, grabador, reportes). Incluye sistema de skins y modos de Players (paneles de reproducción configurables).
97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
# 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 |
|