
cpconverter
私は、A simple utility to change the code page of plain text based files
Google Code で公開されているソースから、まったく新しい Debian パッケージを構築しています。
すべてうまくいきました。ただし、Launchpad ランチャーが動作しません。
Python ファイルはcpConverter.py
フォルダーに保存されます/usr/share/cpconverter/cpconverter/
。
フォルダ内に、次のようなShell Script
名前のがあります。cpconverter
/usr/bin/
#!/bin/sh
python /usr/share/cpconverter/cpconverter/cpConverter.py
デスクトップランチャーcpconverter.desktop
はシンプルです
[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;
しかし、起動に失敗します。
インストールしたcpConverter.py
ものを起動して正常に動作していることを確認しました。
$ python /usr/share/cpconverter/cpconverter/cpConverter.py
その後、プログラムが起動することがあります。ランチャーをクリックした後、動作しなくなることがよくあります。
cpConverter.py
ただし、パッケージのビルド構造内のファイルは常に機能します。例:
$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py
ターミナルから同じコマンド ラインを入力しようとしたところ、さまざまな聞いたことのないエラーが発生しました (少なくとも私にとっては)。
$ 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
$
convertall
次に、パッケージの実際の使用例を試してみましたShell Script
。
#!/bin/sh
exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"
ターミナルから次のようにして正常に起動します:
$ python3 /usr/share/convertall/convertall.py "$@"
次に、Shell Script
次のように変更しました。
exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"
結果は、デスクトップ ランチャーがまだ動作していないことです...砂時計が表示され、何も表示されません。ただし、次の 3 つのコマンド ラインのいずれかを使用すると、常にプログラムが起動します。
$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter
のアクセス権はcpconverter.desktop
標準です:
$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec 9 2014 /usr/share/applications/clipgrab.desktop
では、なぜデスクトップ ランチャーはプログラムを起動できないのでしょうか? デスクトップ ランチャーの何が問題なのでしょうか? [上記を参照]
答え1
これが本当に必要かどうかはわかりませんが、bash スクリプトを作成したときに、このコマンド「bash $$$$$$$.sh」でスクリプトを起動しました。これについて言及する唯一の理由は、デスクトップ ランチャーのスクリプト名に .py 拡張子がないことです。何も問題ないかもしれませんが、確認して試してみる価値はあります。Craig
答え2
コメントで述べたように、デスクトップ ランチャーと同じようにディレクトリDash Script
から実行すると、次の Python エラーが発生して失敗しました。/usr/bin/
/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
$
cpconverter
ホーム フォルダー内の他の場所または (coCPnverter.py ファイルがある場所) でプロンプトを実行すると/usr/share/cpconverter/cpconverter
成功します。
すると、犯人はファイル./
内の人物であることが明らかになりましたcpConverter.py
。
allow-launch-from-usr-bin-script.patch
私は、相対パスの代わりに絶対パス(パッケージ化後)を配置するパッチを作成しました。
builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")
それで問題が説明され、解決しました。