
Estoy creando un paquete Debian completamente nuevo cpconverter
que proviene A simple utility to change the code page of plain text based files
de una fuente publicada en Google Code.
Todo salió bien. Sin embargo, no puedo conseguir un lanzador de plataforma de lanzamiento que funcione.
El archivo Python cpConverter.py
se almacena en la carpeta /usr/share/cpconverter/cpconverter/
.
Tengo una carpeta Shell Script
nombrada , que dice:cpconverter
/usr/bin/
#!/bin/sh
python /usr/share/cpconverter/cpconverter/cpConverter.py
El iniciador de escritorio cpconverter.desktop
es simple
[Desktop Entry]
Version=0.5
Encoding=UTF-8
Name=Code Page Converter
Name[en_US]=Code Page Converter
Comment=A simple utility to change the code page of plain text based files
Type=Application
Exec=/usr/bin/cpconverter
Icon=cpconverter
Terminal=false
StartupNotify=true
Categories=Utility;
Sin embargo, no puede comenzar.
Verifiqué que la instalación cpConverter.py
funciona bien al iniciarla:
$ python /usr/share/cpconverter/cpconverter/cpConverter.py
Luego el programa se lanza en algunas ocasiones. Después de hacer clic en el iniciador, a menudo ya no funciona.
Sin embargo, el archivo cpConverter.py
en la estructura de construcción del paquete siempre funciona, por ejemplo
$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py
Intenté escribir la misma línea de comando desde una Terminal y luego obtuve una variedad de errores inauditos (al menos para mí):
$ cpconverter
/usr/bin/cpconverter: 3: /usr/bin/cpconverter: pyhton: not found
$
$ pyhton /usr/share/cpconverter/cpconverter/cpConverter.py
No command 'pyhton' found, did you mean:
Command 'python' from package 'python-minimal' (main)
pyhton: command not found
$
Luego intenté tomar un ejemplo funcional para el paquete convertall
que por sus Shell Script
usos:
#!/bin/sh
exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"
Desde la Terminal lo iniciaría exitosamente con:
$ python3 /usr/share/convertall/convertall.py "$@"
Luego modifiqué el Shell Script
de acuerdo para leer:
exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"
El resultado sigue siendo el de que el Desktop Launcher no funciona…algo de reloj de arena y nada. Sin embargo, cualquiera de estas 3 líneas de comando siempre inicia el programa:
$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter
Los derechos de acceso para cpconverter.desktop
son estándar:
$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec 9 2014 /usr/share/applications/clipgrab.desktop
¿Por qué entonces Desktop Launcher no puede iniciar el programa? ¿Qué le pasa a mi Iniciador de escritorio? [Verlo arriba]
Respuesta1
No estoy seguro de si esto es realmente necesario, pero cuando hice un script bash, lo inicié con este comando "bash $$$$$$$.sh". La única razón por la que menciono esto es que la extensión .py no está en el nombre del script en el iniciador de su escritorio. Puede que no sea nada, vale la pena echarle un vistazo y probarlo. Craig
Respuesta2
Bueno, como dije en el comentario, al ejecutar Dash Script
desde el /usr/bin/
directorio tal como lo hace el iniciador de escritorio, falló con este error de Python:
/usr/bin$ cpconverter
Traceback (most recent call last):
File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 342, in <module>
app = cpConverter()
File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 74, in __init__
builder.add_from_file("./gui/gui.xml")
glib.GError: Failed to open file './gui/gui.xml': No such file or directory
$
Mientras se ejecuta cpconverter
en el mensaje en otra parte de la carpeta de inicio o en /usr/share/cpconverter/cpconverter
(donde está el archivo coCPnverter.py), se realizará correctamente.
Entonces quedó claro que el culpable estaba ./
en el cpConverter.py
expediente.
Simplemente creé un parche allow-launch-from-usr-bin-script.patch
para colocar la ruta absoluta (una vez empaquetada) en lugar de la ruta relativa:
builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")
Eso explicó y resolvió el problema.