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因此它将在系统范围内可用。
或者为每个用户重新构建它,或者如你所说修复权限。
您遇到的行为与权限或二进制文件的位置无关,而是与执行它的用户有关。
JHBUILD_RUN_AS_ROOT
使用任何值指定环境变量,例如env JHBUILD_RUN_AS_ROOT= jhbuild ...
,以便能够以jhbuild
root 身份运行。这是一个相当无证的功能,我确信我曾经建议改进应用程序反馈,但它被忽略了;请参阅https://github.com/GNOME/jhbuild/blob/master/jhbuild/main.py#L97了解为什么这应该有效。
所以我找到了command not found的解决方案我更改了 shell 正在查找命令的目录的权限(/root/.local/bin)以及 jhbuild 想要从命令创建的所有文件(例如 /jhbuild,/ jhbuild/.cache)。我手动创建它们并以类似的方式更改它们的权限。
正如 Karl Richter 所说,您需要使用
env JHBUILD_RUN_AS_ROOT= jhbuild ...
才能以jhbuild
root 身份运行。因为他们进行了根检查https://github.com/GNOME/jhbuild/blob/master/jhbuild/main.py#L59,如果运行它的用户是根用户,则会出现该错误。
当您更新或构建模块时,该解决方案很好。
但是,如果您想运行已构建的 gnome 版本,您将无法再次遇到该错误。
我在日志上看到了。
因此,您需要从
jhbuild
文件中删除根检查。在您不需要设置之后
env
,您可以使用jhbuild ...
.如何构建
jhbuild
包删除根检查:apt source jhbuild
.jhbuild-<version>/jhbuild/main-py
。要删除(或评论)的行:
apt build-dep jhbuild
..deb
文件安装在父目录中:dpkg -i *.deb
.因为
command not found
您可以安装jhbuild
,apt
因此它将在系统范围内可用。或者为每个用户重新构建它,或者如你所说修复权限。