如何以 root 身份运行 jhbuild

如何以 root 身份运行 jhbuild

我已经安装了 jhbuild 并将 PATH 变量设置为 $PATH:~/.local/bin。现在,当我运行 jhbuild 命令时,出现错误:您不应该以 root 用户身份使用 jhbuild当我将用户更改为非 root 并再次将 PATH 值更改为上述值并将 ~ 替换为 /root 时,出现错误未找到 jhbuild 命令。 我使用的是kali linux,所以默认用户是root用户。

答案1

您遇到的行为与权限或二进制文件的位置无关,而是与执行它的用户有关。使用JHBUILD_RUN_AS_ROOT任意值指定环境变量,例如env JHBUILD_RUN_AS_ROOT= jhbuild ...以便能够jhbuild以 root 身份运行。

这是一个相当未记录的功能,我确信我建议对应用程序反馈进行改进,但该反馈已被忽略;看https://github.com/GNOME/jhbuild/blob/master/jhbuild/main.py#L97了解为什么这应该有效。

答案2

所以我找到了解决方案未找到命令我更改了 shell 查找命令的目录(/root/.local/bin)以及 jhbuild 想要从命令创建的所有文件(例如 /jhbuild、/jhbuild/.cache)的权限。我手动创建它们并以类似的方式更改它们的权限。

答案3

正如 Karl Richter 所说,您需要使用env JHBUILD_RUN_AS_ROOT= jhbuild ...才能jhbuild以 root 身份运行。

因为他们进行了根检查https://github.com/GNOME/jhbuild/blob/master/jhbuild/main.py#L59,如果运行它的用户是 root,则会出现该错误。

当您更新或构建模块时,该解决方案就很好。
但是,如果您想运行您构建的 gnome 版本,您将无法再次收到该错误。
我在日志上看到了。

因此,您需要从jhbuild文件中删除根检查。
之后您就不需要设置env并且可以直接使用jhbuild ....

如何构建jhbuild包删除根检查:

  1. Kali 基于 Debian,因此您可以使用apt source jhbuild.
  2. 从 中删除根检查jhbuild-<version>/jhbuild/main-py
    要删除(或注释)的行:
if 'JHBUILD_RUN_AS_ROOT' not in os.environ and hasattr(os, 'getuid') and os.getuid() == 0:
    uprint(_('You should not run jhbuild as root.\n'), file=sys.stderr)
    sys.exit(1)
  1. 安装构建它所需的包:apt build-dep jhbuild
  2. 将创建的.deb文件安装在父目录中:dpkg -i *.deb.

因为command not found您可以安装jhbuild,因此apt它将在系统范围内可用。
或者为每个用户重新构建它,或者如您所说修复权限。

相关内容