使用 dpkg-deb 构建 .deb 文件,无法设置我需要的权限

使用 dpkg-deb 构建 .deb 文件,无法设置我需要的权限

我使用 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 文件构建和安装都很顺利,但有一个例外:我的 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 权限,我就无法让安装该应用程序的任何人运行它。

我不想在用户本地写入日志,因为任何其他用户可能需要访问日志。此外,每个用户都能够运行该应用程序,这意味着每个用户都应该能够写入这些日志。我不希望我的文件分散在各处,就像在一个目录中有共享库,在不同的目录中可执行,在第三个目录中登录,否则,很难找到我需要的东西,我需要到处搜索,因为我,之后几个月后,可能会忘记,我保存资源文件的位置,并且所有内容都不在一处。我不想调整任何日志写入路径,因为它应该相对于可执行文件来完成,因为该应用程序也将为 Windows 构建,这意味着,如果我必须为 Windows 和 debian 实现多个不同的日志路径,这就是痛苦。

有人可以告诉我,我能做什么?我构建 .deb 文件的方法从根本上是错误的吗?我无法自动设置权限,即使我需要它们编写Python日志文件,并且我需要日志文件与可执行文件放在一起,因为可执行文件在与可执行文件放置的位置相同的位置搜索日志。

相关内容