在使用 debootstrap 在代码空间上创建的 chroot 内启动的子进程失败,并显示 /dev/fd/62:没有这样的文件或目录

在使用 debootstrap 在代码空间上创建的 chroot 内启动的子进程失败,并显示 /dev/fd/62:没有这样的文件或目录

我的目标是使用基本的 Unix 工具集(bashcptouchcat等)建立 chroot ,并且任何必要的依赖项都需要apt get在代码空间内运行。使用 debootstrap 让我更接近。基本工具都安装好了,可以运行了apt get。问题是子进程不起作用。我希望最后一行打印“test”,但实际上我收到一个错误,说子进程的文件句柄不好。我本以为普通的 debootstrap 环境会被充分煮熟,以便子进程工作,但情况似乎并非如此。有一个开关我可以通过吗?

$ sudo apt-get install -y binutils debootstrap
$ cd /home/codespace
$ CHROOT=/home/codespace/chroot
$ mkdir -p "${CHROOT}"
$ sudo debootstrap stable "${CHROOT}" http://deb.debian.org/debian/
$ sudo chroot "${CHROOT}"
$ cat < <(echo test)
bash: /dev/fd/63: No such file or directory

为了重现,

  • 注册 codespaces beta这里
  • 启动一个代码空间这个项目,打开 bash shell (ctrl+`)。
  • 运行上面的。

这也会在代码空间之外重现,因此任何 Ubuntu 环境都可能会产生类似的结果。

答案1

找到了答案这里。结果发现/proc没有安装。为了安装进程我跑了

$ cd "${CHROOT}"
$ sudo mount --types proc /proc proc/

现在一切正常了!

$ cat < <(echo test)
test

相关内容