Cómo convertir un script de Python en un Paquete Deb

🐧 Cómo convertir un script de Python en un comando Linux y empaquetarlo en .deb

Cuando empiezas a crear herramientas en Python, llega un momento en el que quieres dejar de ejecutarlas así:

andres@debian:~$ python3 geo.py

y empezar a usarlas como un comando real del sistema:

andres@debian:~$ geo

En este tutorial vas a aprender:

  • crear un script funcional en Python
  • convertirlo en binario con PyInstaller
  • instalarlo como comando en Linux
  • empaquetarlo como .deb

Tutorial en video:


🧠 ¿Por qué /usr/local/bin?

En Linux hay una diferencia importante:

  • /usr/bin → lo usa el sistema (paquetes oficiales)
  • /usr/local/bin → lo usas tú (programas propios)

👉 Es la ubicación recomendada para software instalado manualmente o personalizado.

Así evitas conflictos con paquetes del sistema.


🔍 1. Crear el programa en Python

Vamos a descar la siguiente herramienta


⚙️ 2. Convertir el script a binario con PyInstaller

Instalar PyInstaller

andres@debian:~$ python3 -m venv venv
andres@debian:~$ source venv/bin/activate
andres@debian:~$ pip install pyinstaller
andres@debian:~$ pip install requests

Crear el binario

andres@debian:~$ pyinstaller --onefile --name geo geo.py

Se generará:

andres@debian:~$ ls dist/geo

🧠 ¿Qué hace PyInstaller?

  • mete Python dentro del ejecutable
  • incluye dependencias
  • genera un binario independiente

👉 Resultado: puedes ejecutar el programa sin instalar Python en otro sistema


🧪 3. Probar el binario

andres@debian:~$ ./dist/geo

Si funciona aquí, funcionará dentro del .deb.


📦 4. Crear el paquete .deb

📁 Estructura

andres@debian:~$ mkdir -p geo-deb/DEBIAN
andres@debian:~$ mkdir -p geo-deb/usr/local/bin

📌 Copiar el binario

andres@debian:~$ cp dist/geo geo-deb/usr/local/bin/.
andres@debian:~$ chmod +x geo-deb/usr/local/bin/geo

🧾 5. Crear el archivo control

Ruta:

andres@debian:~$ nano geo-deb/DEBIAN/control

Contenido:

Package: geo
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: Tu Nombre <tu@email.com>
Description: Herramienta de geo localizacion

❗ ¿Por qué no usamos Depends:?

Porque:

👉 el binario ya incluye Python y requests (gracias a PyInstaller)

No necesitas:

Depends: python3, requestst

⚠️ Pero cuidado

El binario puede depender de librerías del sistema como:

  • libc
  • librerías básicas de Linux

En la mayoría de sistemas Debian modernos no tendrás problemas.


⚙️ 6. Construir el .deb

andres@debian:~$ dpkg-deb --build geo-deb

Resultado:

andres@debian:~$ ls 
andres@debian:~$ geo-deb.deb

📥 7. Instalar el paquete

andres@debian:~$ sudo dpkg -i geo-deb.deb

🚀 8. Usar el comando

andres@debian:~$ geo
andres@debian:~$ Ingrese la dirección IP:

Y listo 🎉

Ya tienes un comando instalado en el sistema.


📍 ¿Dónde quedó instalado?

andres@debian:~$ ls /usr/local/bin/geo

Y como esa ruta ya está en el PATH, puedes usarlo desde cualquier lugar.


⚖️ 10. ¿Por qué usar binario en lugar de .py?

Ventajas

✔ no depende de Python instalado
✔ más fácil para usuarios
✔ listo para distribuir

Desventajas

❌ pesa más
❌ menos flexible


🧠 11. Concepto clave que debes entender

👉 .deb no ejecuta tu programa
👉 solo copia archivos al sistema

El sistema es quien ejecuta:

andres@debian:~$ /usr/local/bin/geo

Con este flujo ya puedes:

  • convertir scripts en herramientas reales
  • instalarlas como comandos
  • distribuirlas en .deb

Este es el punto donde pasas de “hacer scripts” a “crear software usable en Linux”.

Deja un comentario