?>/script>'; } ?> [Tutorial] ¿Qué es un paquete .ipk? Widgets Magazine

Autor Tema: [Tutorial] ¿Qué es un paquete .ipk?  (Leído 219 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado raphik

  • *****
  • Mensajes: 108
[Tutorial] ¿Qué es un paquete .ipk?
« en: 28-05-2025, 14:11 (Miércoles) »
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
Código: [Seleccionar]
mkdir -p ~/Documentos/nuevo-banner/etc

# 2. Generar el fichero banner (copia y pega en la terminal)
Código: [Seleccionar]
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
Código: [Seleccionar]
cd ~/Documentos/nuevo-banner

# 4. Generar el fichero contol (copia y pega en la terminal)
Código: [Seleccionar]
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.
Código: [Seleccionar]
tar czf data.tar.gz --owner=0 --group=0 -C . etc

# 6. Generar el archivo control.tar.gz (metadatos del paquete).
Código: [Seleccionar]
tar czf control.tar.gz -C . control

# 7. Generar el archivo debian-binary (texto 2.0)
Código: [Seleccionar]
echo "2.0" > debian-binary

# 8. Generar el paquete .ipk (contiene los ficheros: data-tar-gz + control.tar.gz + debian-binary)
Código: [Seleccionar]
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
Código: [Seleccionar]
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
Código: [Seleccionar]
opkg remove nuevo-bannerNOTA: Al eliminar el paquete, no se restaura el antiguo banner. Para restaurarlo, hay que guardarlo antes de instalar el paquete.


SCRIPTS OPCIONALES

Son 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)
Código: [Seleccionar]
mv /etc/banner /etc/banner_old
Script postrm (ejecución automática posterior a la desisntalación)
Código: [Seleccionar]
mv /etc/banner_old /etc/banner

ARCHIVOS PROTEGIDOS

El 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
Código: [Seleccionar]
/etc/banner_old

Saludos.
« Última modificación: 29-05-2025, 02:46 (Jueves) por raphik »