柯南从容器内部失败,出现“sudo:未找到”错误

Posted

技术标签:

【中文标题】柯南从容器内部失败,出现“sudo:未找到”错误【英文标题】:Conan fails from inside container with "sudo: not found" error 【发布时间】:2022-01-22 08:59:05 【问题描述】:

我正在尝试从 Ubuntu 映像构建一个项目作为 CI 管道的一部分。

我已经粘贴了下面记录的最后几行:

Not updating system_requirements. CONAN_SYSREQUIRES_MODE=verify
Running: sudo -A apt-get install -y --no-install-recommends libfontenc-dev libice-dev libsm-dev libx11-xcb-dev libxaw7-dev libxcb-dri3-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xkb-data
/bin/sh: 1: sudo: not found
xorg/system: ERROR: while executing system_requirements(): Command 'sudo -A apt-get install -y --no-install-recommends libfontenc-dev libice-dev libsm-dev libx11-xcb-dev libxaw7-dev libxcb-dri3-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xkb-data' failed
ERROR: Error in system requirements
CMake Error at build/conan.cmake:631 (message):
  Conan install failed='1'
Call Stack (most recent call first):
  cmake/Conan.cmake:47 (conan_cmake_install)
  CMakeLists.txt:42 (run_conan)
-- Configuring incomplete, errors occurred!

这是因为 thngs 已经以 root 用户身份运行了吗?如果是这样,有没有办法让柯南运行而不调用sudo

对于那些想要重现错误的人:

    启动一个ubuntu:20.10 docker 镜像 运行
$ apt update && apt install -y python3-pip pkg-config libudev-dev libgl-dev
    安装柯南:pip install conan 使用以下内容创建conanfile.txt
[requires]
sfml/2.5.1
    运行conan install path/to/conanfile.txt 观察上面粘贴的错误

【问题讨论】:

您使用的是哪个 Ubuntu?是 Docker 镜像吗?我强烈建议你使用官方的柯南 docker 图片:hub.docker.com/u/conanio @UlrichEckhardt conan 正在尝试在不需要的环境中使用 sudo(在只有 root 用户的 docker 映像中)。如果有办法告诉柯南不要使用 sudo,这个错误应该会消失。如果有帮助,我在上面添加了一个可重现的示例 【参考方案1】:

当您在 conanfile 中指定 libA 作为依赖项时,它也会安装所有 libA 所需的依赖项。但是,柯南中的一些包(不多)也有 “系统要求”。系统要求只是包的另一个依赖项,但是 一个尚未打包为柯南包,而是通过您的 系统包管理器。您尝试安装的软件包至少有一个系统 要求。

当有系统需求时,柯南将需要管理员权限,因为它 将调用您的系统包管理器来安装该要求。在 Linux 的情况下, 该管理权限意味着使用sudo。但是,您在 CI 中使用的图像 没有 sudo。

如果可以,只需使用包含 sudo 的其他图像,它应该可以工作。

您还可以查看您尝试使用的柯南包的配方。 包可以提供选项,您尝试使用的包可能有 一些选项,例如,不启用某些功能,因此不依赖于某些库。

要了解更多信息,您需要告知您要尝试使用哪个包 使用。

【讨论】:

我发现的另一个解决方案是简单地安装 sudo:apt install sudo

以上是关于柯南从容器内部失败,出现“sudo:未找到”错误的主要内容,如果未能解决你的问题,请参考以下文章

如何处理柯南服务器连接被拒绝?

用GoogleTest库编译程序失败,由柯南安装。

Docker 容器启动失败日志分析方法,启动sonic容器实例simple时未报错运行一会又停止的问题排查实例演示

Python notebook 中的 !curl 命令失败,出现 500 内部错误

发布到 Azur 失败并出现 500 内部服务器错误

VMware虚拟机安装失败,出现如图错误,我该怎么解决?