![如何以 root 身份运行 jhbuild](https://linux22.com/image/128211/%E5%A6%82%E4%BD%95%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%20jhbuild.png)
我已经安装了 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
包删除根检查:
- Kali 基于 Debian,因此您可以使用
apt source jhbuild
. - 从 中删除根检查
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)
- 安装构建它所需的包:
apt build-dep jhbuild
。 - 将创建的
.deb
文件安装在父目录中:dpkg -i *.deb
.
因为command not found
您可以安装jhbuild
,因此apt
它将在系统范围内可用。
或者为每个用户重新构建它,或者如您所说修复权限。