
Ich erstelle ein völlig neues Debian-Paket cpconverter
aus A simple utility to change the code page of plain text based files
einer in Google Code veröffentlichten Quelle.
Alles lief gut. Allerdings bekomme ich keinen funktionierenden Launchpad-Launcher hin.
Die Python-Datei cpConverter.py
wird im Ordner gespeichert /usr/share/cpconverter/cpconverter/
.
Ich habe einen Ordner Shell Script
mit dem Namen „ cpconverter
in“ /usr/bin/
, der lautet:
#!/bin/sh
python /usr/share/cpconverter/cpconverter/cpConverter.py
Der Desktop Launcher cpconverter.desktop
ist einfach
[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;
Der Start schlägt jedoch fehl.
Ich habe überprüft, ob die Installation cpConverter.py
ordnungsgemäß funktioniert, indem ich sie gestartet habe:
$ python /usr/share/cpconverter/cpconverter/cpConverter.py
Anschließend startet das Programm gelegentlich. Nach dem Anklicken des Launchers funktioniert es jedoch oft nicht mehr.
Allerdings funktioniert die Datei cpConverter.py
in der Gebäudestruktur des Pakets immer zB
$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py
Ich habe versucht, dieselbe Befehlszeile in einem Terminal einzugeben und habe dann eine Reihe (zumindest für mich) unbekannter Fehlermeldungen erhalten:
$ 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
$
Dann habe ich versucht, ein funktionierendes Beispiel für ein Paket zu erstellen convertall
, das für seine Shell Script
Verwendung Folgendes bietet:
#!/bin/sh
exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"
Vom Terminal aus würde ich es erfolgreich mit folgendem starten:
$ python3 /usr/share/convertall/convertall.py "$@"
Dann habe ich es Shell Script
wie folgt geändert:
exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"
Das Ergebnis ist immer noch, dass der Desktop Launcher nicht funktioniert ... eine Sanduhr und nichts. Eine dieser 3 Befehlszeilen startet das Programm jedoch immer:
$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter
Die Zugriffsrechte hierfür cpconverter.desktop
sind Standard:
$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec 9 2014 /usr/share/applications/clipgrab.desktop
Warum kann der Desktop Launcher das Programm dann nicht starten? Was ist mit meinem Desktop Launcher los? [Siehe oben]
Antwort1
Ich bin nicht sicher, ob das wirklich notwendig ist, aber als ich ein Bash-Skript erstellt habe, habe ich das Skript mit diesem Befehl gestartet: „bash $$$$$$$.sh“. Der einzige Grund, warum ich das erwähne, ist, dass die Erweiterung .py nicht im Skriptnamen in Ihrem Desktop-Launcher vorkommt. Vielleicht ist das nichts, aber einen Blick und einen Versuch wert. Craig
Antwort2
Wie ich bereits im Kommentar sagte, schlug das Ausführen Dash Script
aus dem /usr/bin/
Verzeichnis, genau wie beim Desktop-Launcher, mit diesem Python-Fehler fehl:
/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
$
Beim Ausführen cpconverter
an der Eingabeaufforderung an einer anderen Stelle im Home-Ordner oder in /usr/share/cpconverter/cpconverter
(wo sich die Datei coCPnverter.py befindet) wäre dies erfolgreich.
Dann war klar, dass der Täter ./
in der cpConverter.py
Akte war.
Ich habe einfach einen Patch erstellt, allow-launch-from-usr-bin-script.patch
um den absoluten Pfad (nach dem Verpacken) anstelle des relativen Pfads zu platzieren:
builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")
Das hat das Problem erklärt und gelöst.