Construir un paquete debian con script python
Tener un directorio
root
-setup.py
src/
-app.py (with main function)
con configuración. py
from setuptools import setup
setup(
name="testing_python_package",
version=1.0,
author="Lee",
description="testing python stuff for deb package",
packages=["src"],
entry_points={"console_scripts": ["pytesting=src.app:main"]},
)
mi objetivo es crear un paquete deb que puedo instalar en otro lugar por ejemplo (o la misma máquina con dpkg). Lea algunas cosas al respecto e instale todas las cosas necesarias. Entonces usé el comando
sudo python3 setup.py --command-packages=stdeb.command bdist_deb
para crear paquetes fuente y binarios pero no estoy viendo ningún archivo .deb y conseguir esta salida + error:
running bdist_deb
running sdist_dsc
running egg_info
writing testing_python_package.egg-info/PKG-INFO
writing dependency_links to testing_python_package.egg-info/dependency_links.txt
writing entry points to testing_python_package.egg-info/entry_points.txt
writing top-level names to testing_python_package.egg-info/top_level.txt
reading manifest file 'testing_python_package.egg-info/SOURCES.txt'
writing manifest file 'testing_python_package.egg-info/SOURCES.txt'
running sdist
warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md
running check
warning: check: missing required meta-data: url
warning: check: missing meta-data: if 'author' supplied, 'author_email' must be supplied too
creating testing_python_package-1.0
creating testing_python_package-1.0/src
creating testing_python_package-1.0/testing_python_package.egg-info
copying files to testing_python_package-1.0...
copying setup.py -> testing_python_package-1.0
copying src/__init__.py -> testing_python_package-1.0/src
copying src/app.py -> testing_python_package-1.0/src
copying testing_python_package.egg-info/PKG-INFO -> testing_python_package-1.0/testing_python_package.egg-info
copying testing_python_package.egg-info/SOURCES.txt -> testing_python_package-1.0/testing_python_package.egg-info
copying testing_python_package.egg-info/dependency_links.txt -> testing_python_package-1.0/testing_python_package.egg-info
copying testing_python_package.egg-info/entry_points.txt -> testing_python_package-1.0/testing_python_package.egg-info
copying testing_python_package.egg-info/top_level.txt -> testing_python_package-1.0/testing_python_package.egg-info
Writing testing_python_package-1.0/setup.cfg
Creating tar archive
removing 'testing_python_package-1.0' (and everything under it)
dpkg-buildpackage: source package testing-python-package
dpkg-buildpackage: source version 1.0-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: source changed by unknown
dpkg-source --before-build testing-python-package-1.0
dpkg-source: info: using options from testing-python-package-1.0/debian/source/options: --extend-diff-ignore=\.egg-info$
dpkg-checkbuilddeps: error: Unmet build dependencies: build-essential:native
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
Traceback (most recent call last):
File "setup.py", line 10, in
entry_points={"console_scripts": ["pytesting=src.app:main"]}
File "/home/USER/.local/lib/python3.6/site-packages/setuptools/__init__.py", line 144, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3.6/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.6/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/home/USER/.local/lib/python3.6/site-packages/stdeb/command/bdist_deb.py", line 34, in run
self.run_command('sdist_dsc')
File "/usr/lib/python3.6/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/home/USER/.local/lib/python3.6/site-packages/stdeb/command/sdist_dsc.py", line 144, in run
ignore_source_changes=self.ignore_source_changes,
File "/home/USER/.local/lib/python3.6/site-packages/stdeb/util.py", line 1569, in build_dsc
dpkg_buildpackage(*args, cwd=fullpath_repackaged_dirname)
File "/home/USER/.local/lib/python3.6/site-packages/stdeb/util.py", line 585, in dpkg_buildpackage
process_command(args, cwd=cwd)
File "/home/USER/.local/lib/python3.6/site-packages/stdeb/util.py", line 226, in process_command
check_call(args, cwd=cwd)
File "/home/USER/.local/lib/python3.6/site-packages/stdeb/util.py", line 59, in check_call
raise CalledProcessError(retcode)
stdeb.util.CalledProcessError: 3
¿Qué estoy haciendo mal?
¡Gracias!
usó esto como fuente: ¿Hay una manera estándar de crear paquetes Debian para distribuir programas Python?
Pregunta hecha hace 3 años, 4 meses, 28 días - Por nodenomad
2 Respuestas:
-
El error que estás experimentando se debe a que el comando
sudo python3 setup.py --command-packages=stdeb.command bdist_deb
no está generando el paquete.deb
correctamente debido a algunas dependencias faltantes y errores en la configuración.Aquí hay algunas correcciones que puedes hacer para solucionar este problema:
- Agrega las siguientes dependencias faltantes a tu sistema:
<pre><code>bash sudo apt-get install build-essential </code></pre> Esta instalación resolverá el error de unmet build dependencies en el mensaje de error que recibiste.
- Modifica el archivo `setup.py` para corregir los errores en la configuración. Asegúrate de que tu archivo `setup.py` se vea así:
<pre><code>python from setuptools import setup setup( name="testing_python_package", version="1.0", author="Lee", description="testing python stuff for deb package", packages=["src"], entry_points={ "console_scripts": [ "pytesting=src.app:main" ] }, ) </code></pre>
Con estas correcciones, deberías poder generar el paquete
.deb
correctamente utilizando el comandosudo python3 setup.py --command-packages=stdeb.command bdist_deb
. Una vez generado, podrás instalar el paquete.deb
en tu sistema condpkg
. ¡Espero que esta información sea útil y resuelva tu problema!Respondida el Dec 18, 2020 a las 16:56 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Puedo ayudarte a solucionar el problema que estás experimentando al crear un paquete debian con un script de Python. Veamos los siguientes pasos para resolver el problema:
- Dependencias faltantes: El error menciona que faltan dependencias de compilación para `build-essential`:
dpkg-buildpackage: error: Unmet build dependencies: build-essential:native
Instala las dependencias faltantes ejecutando:
sudo apt install build-essential
- Metadatos faltantes: El error también indica que faltan metadatos como `url` y `author_email` en tu configuración.
Agrega la siguiente información a tu
setup.py
:python setup( name="testing_python_package", version=1.0, author="Lee", author_email="[email protected]", url="https://example.com/testing-python-package", description="testing python stuff for deb package", packages=["src"], entry_points={"console_scripts": ["pytesting=src.app:main"]}, )
- Falta de archivo README: El error también menciona que falta un archivo README estándar. Crea un archivo `README.md` en el directorio raíz de tu proyecto con alguna información básica sobre tu paquete.
- Ejecuta nuevamente el comando: Después de hacer estas correcciones, vuelve a ejecutar el comando:
sudo python3 setup.py --command-packages=stdeb.command bdist_deb
- Comprueba los archivos DEB: Una vez que el comando se ejecute correctamente, deberías ver archivos .deb en el directorio `dist/`. Instala el paquete deb usando:
sudo dpkg -i path/to/deb_file.deb
Nota adicional:
Asegúrate de tener instalados los paquetes necesarios para crear paquetes deb, como
dpkg-dev
ydevscripts
. Puedes personalizar el proceso de creación de paquetes modificando el archivodebian/control
en el directoriodebian
generado. * Para más información, consulta la documentación de stdeb.Respondida el Dec 18, 2020 a las 17:01 - por Gemini
Votos positivos: 0 | Votos negativos: 0