如何处理 Linux 上缺少的库? [没有管理员权限和 PIP 被阻止]

How to deal with missing libraries on Linux? [No Admin privileges and PIP is blocked]

为了我的工作,我需要使用 PySide6 为远程系统编写一个 GUI。 OS 是 RHEL 7.9,我既没有管理员权限也没有 PIP 工作(被管理员阻止),所以我不能自己安装任何东西(无论如何我都不允许)。

该脚本在 Windows 和 Fedora 上完美运行,但在 RHEL 7.9 上不起作用:

  1. 由于机器不允许 pip,我在我的虚拟环境中包含了 PySide6,但系统本身缺少库,如 CXXABI_1.3.9 和 GLIBC_2.33 Shiboken6 需要的。
  2. 它也无法以编译形式(使用 PyInstaller)工作,因为缺少 GLIBC_2.29。
  3. 我天真地将 libstdc++.so.6 和 libc.so.6 从 Fedora 机器复制到 RHEL,并使用 LD_LIBRARY_PATH 环境变量将链接重定向到库,但由于其他依赖关系,它没用。

有没有办法让脚本跨平台独立运行?

一种方法可能是将(二进制)文件放入用户 bin 中。 路径(至少在我的系统上)是 /home/.local/bin

确保它在您的 $PATH 变量中,如果它还没有(应该是)。

如果这些只是 Python 个模块,您可以将源文件拖到上述路径中(确保它们有一个 shebang,所以它们 运行)。如果没有,您可能需要编译它们然后将它们放在那里。

本地bin的解释

注意:这是我的经验

本地 bin (/home/.local/bin) 是您可以将想要的程序放入 运行 的地方,而无需全局安装它们。它类似于执行 ./file.py,除了你不需要与文件位于同一目录中(并且你不必包含 ./)我假设,如果你包含编译版本你想要的依赖项,它应该可以工作。

这不会回答您关于缺少库的问题,但我希望它能帮助您解决当前与 PySide 相关的问题。

我以前遇到过类似的问题,你应该总是在目标平台上开发以获得可比较的结果。
这意味着理论上你必须在 RHEL 机器上编写、编译和打包你的程序。您还需要始终在旧平台上进行开发。并不总是保证向前兼容性。因此,我建议您在虚拟机中安装 CentOS 7,如果您的程序不是太复杂,请尝试使用 PySide2 而不是 PySide6。