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”.



