support instalar python apt linuxmint

instalar - debianzing a python program para obtener un.deb



python download (2)

Acabo de probar stdeb (vea https://pypi.python.org/pypi/stdeb ) un paquete de Python para convertir cualquier otro paquete de Python en un paquete de Debian.

Primero instalé stdeb:

apt-get install python-stdeb

Luego hice un script simple llamado myscript.py con el siguiente contenido:

def main(): print "Hello world, says myscript!" # wait for input from the user raw_input() if __name__ == ''__main__'': main()

Es importante destacar que la estructura de su directorio debe ser:

somewhere/myscript/ setup.py myscript/ __init__.py myscript.py

En el archivo setup.py, haces algo como:

import os from setuptools import setup from nvpy import nvpy setup( name = "myscript", version = "1.0", author = "Charl P. Botha", author_email = "[email protected]", description = "Demo of packaging a Python script as DEB", license = "BSD", url = "https://github.com/cpbotha/nvpy", packages=[''myscript''], entry_points = { ''console_scripts'' : [''myscript = myscript.myscript:main''] }, data_files = [ (''share/applications/'', [''vxlabs-myscript.desktop'']) ], classifiers=[ "License :: OSI Approved :: BSD License", ], )

La directiva console_scripts es importante, creará un script ejecutable llamado my_script , que estará disponible en todo el sistema después de que instales el DEB resultante. Si su script usa algo como tkinter o wxpython y tiene una interfaz gráfica de usuario, debería usar gui_scripts lugar de console_scripts .

La directiva data_files instalará un archivo de escritorio adecuado en /usr/share/applications , para que también pueda iniciar myscript desde su entorno de escritorio. vxlabs-myscript.desktop tiene este aspecto:

[Desktop Entry] Version=1.0 Type=Application Name=myscript Comment=Minimal stdeb example # myscript should wait for user input at the end, else the terminal # window will disappear immediately. Exec=myscript Icon=/usr/share/icons/gnome/48x48/apps/file-manager.png Categories=Utility; # desktop should run this in a terminal application Terminal=true StartupNotify=true StartupWMClass=myscript

Para construir el DEB, haga lo siguiente en el myscript nivel myscript :

python setup.py --command-packages=stdeb.command bdist_deb

Lo que creará un .deb en el directorio deb_dist.

Después de instalar el DEB que creé así, pude ejecutar myscript desde la línea de comandos y también podría invocarlo desde mi entorno de escritorio.

Aquí hay un repositorio de github con el código de ejemplo anterior: https://github.com/cpbotha/stdeb-minimal-example

Esta pregunta ya tiene una respuesta aquí:

objetivo

Para crear un archivo .deb instalable (o paquete). Cuando se hacía clic, se instalaría el software en una máquina Linux y se colocaría un icono en el panel de GNOME. Para poder lanzar esta aplicación desde allí.

A lo que me he referido

Me referí a dos guías de debianización.

Guía 1

Guia 2

El primero tenía un video que era imposible de entender, en parte debido al acento y en parte porque estaba totalmente obsoleto (se subió en 2007).

Y el segundo fue completamente texto. Tengo hasta el cuarto paso, construye el paquete. Pero cuando lo hice obtuve una salida que no coincidía con lo que se daba en la guía.

Lo que requiero

Tengo un programa simple de python. Toma su edad y luego vuelve a imprimir si la edad es inferior, igual o superior a 18 años. Solo hay un archivo y ninguna otra dependencia para este programa. Y quiero construir esto en un .deb .

Especificaciones

-Python 2.7

-Linux Mint

Editar

Seguí la estructura exacta del directorio como usted lo instruyó. Y reemplazó todo mi myscript por cowsandbulls . La compilación se completó y obtuve el debian. Cuando lo instalé y luego ejecuté el comando cowsandbulls desde el terminal, recibí el siguiente error:

Traceback (most recent call last): File "/usr/bin/cowsandbulls", line 9, in <module> load_entry_point(''cowsandbulls==1.0'', ''gui_scripts'', ''cowsandbulls'')() File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 337, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2311, in load_entry_point return ep.load() File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2017, in load entry = __import__(self.module_name, globals(),globals(), [''__name__'']) ImportError: No module named cowsandbulls


La forma correcta de crear un paquete deb es usando dpkg-buildpackage pero a veces es un poco complicado. En su lugar, puede usar dpkg -b <folder> y creará su paquete Debian.

Estos son los conceptos básicos para crear un paquete Debian con dpkg -b <folder> con cualquier binario o con cualquier tipo de script que se ejecute automáticamente sin necesidad de compilación manual (Python, Bash, Pearl, Ruby):

  1. Crea los archivos y carpetas para recrear la siguiente estructura:

ProgramName-Version/ ProgramName-Version/DEBIAN ProgramName-Version/DEBIAN/control ProgramName-Version/usr/ ProgramName-Version/usr/bin/ ProgramName-Version/usr/bin/your_script

Los scripts ubicados en /usr/bin/ se llaman directamente desde el terminal, tenga en cuenta que no agregué una extensión al script. También puedes notar que la estructura del paquete deb será la estructura del programa una vez que esté instalado. Entonces, si sigue esta lógica si su programa tiene un solo archivo, puede colocarlo directamente en ProgramName-Version/usr/bin/your_script , pero si tiene varios archivos, debe colocarlos en ProgramName-Version/usr/share/ProgramName/all your files y coloque solo un archivo en /usr/bin/ que llamará a sus scripts desde /usr/share/ProgramName/

  1. Cambie todos los permisos de la carpeta a la raíz:

    chown root:root -R /path/to/ProgramName-Version

  2. Cambia los permisos del script:

    chmod 0755 /path/to/the/script

  3. Finalmente, puede ejecutar: dpkg -b /path/to/the/ProgramName-Version y se dpkg -b /path/to/the/ProgramName-Version su paquete deb! (También puede agregar los scripts post / pre inst y todo lo que desee, funciona como un paquete normal de Debian)

Aquí hay un ejemplo del archivo de control . Solo necesita copiarlo y pegarlo en un archivo vacío llamado "control" y colocarlo en la carpeta DEBIAN

Package: ProgramName Version: VERSION Architecture: all Maintainer: YOUR NAME <EMAIL> Depends: python2.7, etc , etc, Installed-Size: in_kb Homepage: http://foo.com Description: Here you can put a one line description. This is the short Description. Here you put the long description, indented by 1 space.

Si desea compilar usando dpkg -b <folder> puede usar este programa que hará todo con un solo comando. Si regularmente construyes paquetes, ¡es un dolor hacer todas las cosas que mencioné!

* La guía fue tomada de Basics of Debian Packages.