Un paquete .ipk es un archivo comprimido que contiene uno o varios archivos —asociados a una ruta de destino— listos para ser instalados en dispositivos que ejecutan el S.O. OpenWrt.
OpenWrt usa paquetes .ipk y el gestor opkg para instalar, actualizar y eliminar software de forma modular, pero su flexibilidad permite también automatizar configuraciones, desplegar servicios, distribuir archivos personalizados y restaurar el sistema, adaptando el router a múltiples usos más allá de la simple gestión de aplicaciones
Por ejemplo, imaginemos que queremos cambiar el banner de OpenWrt. En lugar de modificar manualmente el archivo en el sistema, podemos crear un paquete .ipk que incluya el nuevo banner y, al instalarlo, el cambio se aplicará automáticamente de forma controlada y repetible.
EN EL PC# 1. Abrir una terminal, generar la carpeta raíz del proyecto y la de ubicación del banner
mkdir -p ~/Documentos/nuevo-banner/etc
# 2. Generar el fichero banner (copia y pega en la terminal)
cat << 'EOF' > ~/Documentos/nuevo-banner/etc/banner
_________________________
/ Just for fun, learning, \
\ or because it can. /
-------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
EOF
# 3. Colocarse en la raiz del proyecto
cd ~/Documentos/nuevo-banner
# 4. Generar el fichero contol (copia y pega en la terminal)
cat << 'EOF' > ~/Documentos/nuevo-banner/control
Package: nuevo-banner
Version: 1.00
Description: Cambio de banner - Just for fun, learning, or because it can.
Maintainer: NOBODY <abandon@ware.com>
Architecture: all
EOF
La estructura del paquete es esta:

# 5. Generar el archivo data.tar.gz con el archivo que se instalará en el router.
tar czf data.tar.gz --owner=0 --group=0 -C . etc
# 6. Generar el archivo control.tar.gz (metadatos del paquete).
tar czf control.tar.gz -C . control
# 7. Generar el archivo debian-binary (texto 2.0)
echo "2.0" > debian-binary
# 8. Generar el paquete .ipk (contiene los ficheros: data-tar-gz + control.tar.gz + debian-binary)
tar czf nuevo-banner_1.0.ipk control.tar.gz data.tar.gz debian-binary

# 9. Copiar el paquete en la carpeta /tmp del router
scp nuevo-banner_1.0.ipk@192.168.1.1:/tmp/
# 10. Instalar el paquete en el router
ssh root@192.168.1.1 "opkg install --force-overwrite /tmp/nuevo-banner_1.0.ipk"
EN EL ROUTER# 1. Al inicar sesión, se visualiza el nuevo banner

# 2. Eliminar el paquete
opkg remove nuevo-banner
NOTA: Al eliminar el paquete, no se restaura el antiguo banner. Para restaurarlo, hay que guardarlo antes de instalar el paquete.
SCRIPTS OPCIONALESSon archivos que pueden forman parte del ciclo de vida de los paquetes .ipk. Se ejecutan antes o después de la instalación o eliminación del paquete.
┌──────────┬───────────────────────────────────────┐
│ Script │ Momento de ejecución │
├──────────┼───────────────────────────────────────┤
│ preinst │ Antes de instalar el paquete │
├──────────┼───────────────────────────────────────┤
│ postinst │ Después de instalar el paquete │
├──────────┼───────────────────────────────────────┤
│ prerm │ Antes de eliminar el paquete │
├──────────┼───────────────────────────────────────┤
│ postrm │ Después de eliminar el paquete │
└──────────┴───────────────────────────────────────┘Todos estos scripts se colocan en el archivo control.tar.gz del paquete y no llevan extensión.
Si no se incluye un script, simplemente no se ejecuta esa acción durante el ciclo de vida del paquete.
Ejemplo: Se puede preservar el banner original incluyendo un par de ficheros opcionales en la carpeta raíz del paquete:
Script
preinst (ejecución automática previa a la instalación)
mv /etc/banner /etc/banner_old
Script
postrm (ejecución automática posterior a la desisntalación)
mv /etc/banner_old /etc/banner
ARCHIVOS PROTEGIDOSEl archivo
conffiles también es opcional. Contiene las rutas absolutas de aquellos archivos que se deben preservar durante los procesos de actualización o reinstalación. De este modo mantienen su contenido.
Ejemplo: Si se realiza una reinstalación de nuestro paquete ejemplo, el contenido original de banner_old se perdería. Para evitarlo, basta incluirlo en el archivo conffiles.
Fichero
conffiles/etc/banner_old
Saludos.