私はPyinstallerを使って社内用のPythonアプリケーションを構築しました。今、人々がインストールできるように.debパッケージにエクスポートしたいと思います。ファイルツリー(.debに含める必要のないソースファイルを除く)は次のとおりです。
- DEBIAN/
- rules
- control
- /opt/ <-- I want my app to sit in /opt/
- dist/ <-- This is what I want to distribute essentially
- my_project <-- An executable Python app
- _internal/ <-- Shared libraries needed for Python app sit here
- shared_lib1.so
- shared_lib2.so
- .....
- resources/
- images/
- my_image.png
- info/
- info.json
- warning.txt
- configuration_files/
- configA.json
- configB.json
- logs/ <-- Logs generated by Python app
- my_project_log_20240125.log
- my_project_log_20240124.log
- ...
- /usr/
- share/
- applications/
my_project.desktop <-- Dekstop entry
.debファイルは、1つの例外を除いて、シームレスにビルドおよびインストールされます。私のPythonアプリケーションには、ログを作成するためにインストール/再インストールするたびに少なくともchmod 757 /opt/dist/logsが必要です。それ以外の場合は、「許可拒否」のケースが発生します。つまり、毎回手動で実行する必要があります。
dpkg-debを使用してパッケージをビルドする前にchmod 757 /opt/dist/logsを設定すると、次のエラーが発生します。
dpkg-deb error: control directory has bad permissions 757 (must be >=0755 and <=0775)
これは、アプリケーションをインストールする人が/opt/dist/logsに757権限を持つように設定しない限り、アプリケーションを実行させることができないことを意味します。
他のユーザーがログにアクセスする必要があるため、ユーザーにローカルにログを書きたくありません。また、すべてのユーザーがアプリケーションを実行できます。つまり、すべてのユーザーがこれらのログに書き込める必要があります。私は、あるディレクトリに共有ライブラリがあり、別のディレクトリに実行可能ファイルがあり、3番目のディレクトリにログがあるように、私のファイルがあちこちに散在していることを望みません。そうでなければ、必要なものを見つけるのは難しいでしょう。どこでも必要です。数ヶ月が過ぎると、リソースファイルをどこに保存したのか忘れて、すべてが一箇所にないため、検索してみてください。アプリケーションはWindows用に構築されるため、実行可能ファイルに対して実行する必要があるログ書き込みパスを調整したくありません。これは、WindowsとDebianに複数の異なるログパスを実装する必要があることを意味します。これは痛いです。
誰かが私ができることを教えてもらえますか? .debファイルの作成方法は根本的に間違っていますか? Pythonログファイルを作成するために必要な場合でも権限を自動的に設定することはできず、実行可能ファイルが実行可能ファイルが配置されているのと同じ場所からログを取得するため、実行可能ファイルと一緒に配置するログファイルが必要です。