
Estou construindo um pacote Debian inteiramente novo cpconverter
, A simple utility to change the code page of plain text based files
de uma fonte publicada no Google Code.
Tudo correu bem. No entanto, não consigo um iniciador de launchpad funcional.
O arquivo python cpConverter.py
é armazenado na pasta /usr/share/cpconverter/cpconverter/
.
Eu tenho um Shell Script
nomeado cpconverter
in folder /usr/bin/
, que diz:
#!/bin/sh
python /usr/share/cpconverter/cpconverter/cpConverter.py
O Desktop Launcher cpconverter.desktop
é simples
[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;
No entanto, ele não consegue iniciar.
Eu verifiquei se o instalado cpConverter.py
está funcionando bem iniciando-o:
$ python /usr/share/cpconverter/cpconverter/cpConverter.py
Então o programa é lançado em algumas ocasiões. Depois de clicar no inicializador, muitas vezes ele não funciona mais.
Porém o arquivo cpConverter.py
na estrutura de construção do pacote sempre funciona, por exemplo
$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py
Tentei digitar a mesma linha de comando em um Terminal e recebi vários erros inéditos (pelo menos para mim):
$ 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
$
Então tentei pegar um exemplo prático de pacote convertall
que para seus Shell Script
usos:
#!/bin/sh
exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"
No Terminal, eu o iniciaria com sucesso com:
$ python3 /usr/share/convertall/convertall.py "$@"
Então modifiquei o Shell Script
de acordo para ler:
exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"
O resultado ainda é que o Desktop Launcher não está funcionando... alguma ampulheta e nada. No entanto, qualquer uma destas 3 linhas de comando sempre inicia o programa:
$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter
Os direitos de acesso para cpconverter.desktop
são padrão:
$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec 9 2014 /usr/share/applications/clipgrab.desktop
Por que então o Desktop Launcher não consegue iniciar o programa? O que há de errado com meu Desktop Launcher? [Veja acima]
Responder1
Não tenho certeza se isso é realmente necessário, mas quando fiz um script bash, lancei o script com este comando "bash $$$$$$$.sh". A única razão pela qual mencionei isso é que a extensão .py não está no nome do script no inicializador da área de trabalho. Pode não ser nada, vale a pena dar uma olhada e tentar. Craig
Responder2
Bem, como eu disse no comentário, executar a Dash Script
partir do /usr/bin/
diretório exatamente como o inicializador da área de trabalho está fazendo, falhou com este erro do 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
$
Durante a execução cpconverter
no prompt em outro lugar na pasta Home ou em /usr/share/cpconverter/cpconverter
(onde está o arquivo coCPnverter.py) seria bem-sucedido.
Então ficou óbvio que o culpado estava ./
no cpConverter.py
arquivo.
Simplesmente criei um patch allow-launch-from-usr-bin-script.patch
para colocar o caminho absoluto (uma vez empacotado) em vez do caminho relativo:
builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")
Isso explicou e resolveu o problema.