柯南从容器内部失败,出现 "sudo: not found" 错误

Conan fails from inside container with "sudo: not found" error

我正在尝试从 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 的情况下到达 运行?

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

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

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

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

如果可以,只需使用包含 sudo 的不同图像即可。

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

要获得比这更多的信息,您需要告知您尝试使用哪个包 使用.