在 Vagrantfile 中安装 PyEnv

Install PyEnv in Vagrantfile

PyEnv 没有 great installer,它需要一些 post-install 处理才能使其正常工作(例如修改 .bashrc 以添加到 $PATH 并进行两次 pyenv 调用)。我想知道如何有人能够通过 Vagrantfile 安装 PyEnv。我想构建一个可重复使用的映像进行开发,这样我就不必在销毁此 VM 时重新安装过程。

我已经尝试 运行 安装程序并对 .bashrc 进行了推荐的编辑以使 pyenv 正常工作,但是当我进入我的 Vagrant 框时 pyenv 是未安装。我试过将 pyenv 脚本移动到 /bin/pyenv 中,但是当机器出现时它不在那里。我该怎么做?

作为参考,这是我目前 运行 在 Vagrantfile:

中的 Vagrant 配置步骤中无法将 PyEnv 安装到 Vagrant 机器的脚本
#! /usr/bin/env bash

# REQUIRES: curl, git

curl -L https://raw.githubusercontent.com/pyenv/pyenv-
installer/master/bin/pyenv-installer | bash

cat >> /home/ubuntu/.bashrc << 'EOF'

export PATH="$PATH:~/.pyenv/bin"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

EOF

exec $SHELL

并尝试将 pyenv 移动到 /bin 下:

#! /usr/bin/env bash

# REQUIRES: curl, git

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
mv ~/.pyenv/bin/pyenv /bin/pyenv

cat >> /home/ubuntu/.bashrc << 'EOF'

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

EOF

exec $SHELL

都不行。我如何安装它?

您的问题是您运行通过 Vagrant shell 配置脚本作为 root,因此更新是为您的 root 用户完成的。 当您通过 ssh 进入 VM 时,您已使用 vagrant 用户登录,因此它不可用。

当您需要将 Vagrantfile 中的 is 更改为 运行 使用 privileged 选项的脚本时

config.vm.provision "shell", path: "xxx", privileged: false