【问题标题】:Vagrant Installing Anaconda Python?Vagrant 安装 Anaconda Python?
【发布时间】:2016-09-22 11:19:54
【问题描述】:

Anaconda python 通过 bash 脚本安装(在 linux 中)。我正在尝试使用 Vagrant 配置来安装 Anacaonda Python。

在 bash 脚本中(遵循文档 bootstrap.sh example)我有一个 bootstrap.sh 脚本:

  1. wget 安装脚本
  2. chmod +x 使其可执行
  3. ./<script>.sh 安装。

以这种方式安装失败,因为安装有一些提示,其中一个需要非默认答案。

是否可以通过 bash 脚本自动安装?如果没有,是否有必要使用 Puppet 之类的东西?我根本不了解 Puppet,所以尽量避免使用……也许是时候深入研究了?

最终目标是发布 Vagrantfile,而不是托管 Vagrant box。

附:我最初的微弱尝试使用了 linux yes 命令,但必须存在更好的方法!

【问题讨论】:

    标签: python vagrant puppet vagrantfile


    【解决方案1】:

    在您的 bootstrap.sh 中只需包含以下内容:

    miniconda=Miniconda3-3.7.4-Linux-x86_64.sh
    cd /vagrant
    if [[ ! -f $miniconda ]]; then
        wget --quiet http://repo.continuum.io/miniconda/$miniconda
    fi
    chmod +x $miniconda
    ./$miniconda -b -p /opt/anaconda
    
    cat >> /home/vagrant/.bashrc << END
    # add for anaconda install
    PATH=/opt/anaconda/bin:\$PATH
    END
    

    -b 选项在批处理模式下运行,是您正在寻找的:

    >>>> ./Miniconda-3.7.0-Linux-x86_64.sh -h 
    usage: ./Miniconda-3.7.0-Linux-x86_64.sh [options]
    
    Installs Miniconda 3.7.0
    
        -b           run install in batch mode (without manual intervention),
                     it is expected the license terms are agreed upon
        -f           no error if install prefix already exists
        -h           print this help message and exit
        -p PREFIX    install prefix, defaults to /Users/phil/miniconda
    

    我通常还将 Miniconda(或指向它的链接)直接放在 bootstrap.sh 所在的“vagrant”中。这样,您就不会在每次 vagrant up 期间(在 init 或 destroy 之后)从网上下载。

    【讨论】:

    【解决方案2】:

    我根据Phil Cooper 的回答创建了一个 GitHub 存储库。

    https://github.com/tomohiro1221/vagrant-anaconda

    【讨论】:

      【解决方案3】:

      对于想要从头开始使用 anaconda 的新盒子的人,可以通过使用 continuumio 的 anaconda3 盒子(或其他 anaconda 盒子)来实现。通过使用以下命令来初始化 vagrant。

      vagrant init continuumio/anaconda3; vagrant up --provider virtualbox
      

      还有其他几个conda and miniconda boxes here。这种方法很容易实现,但是如果您想将 conda 添加到现有的盒子中,Phil Cooper 的解决方案是可行的方法。

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      • 嗨,J.Chomel,我添加了一点解释。感谢您的建议。
      • 愚蠢的问题,当我运行这个然后vagrant ssh 我得到:$ vagrant ssh [vagrant@localhost ~]$ conda --version -bash: conda: command not found 任何想法为什么我似乎不能使用 conda ?
      【解决方案4】:

      这是一个 expect 脚本文件,用于在 Vagrant 上安装 Anaconda (Anaconda-2.0.1-Linux-x86_64.sh):

      #!/usr/bin/expect
      #exp_internal 1
      set timeout 600
      spawn /tmp/Anaconda-2.0.1-Linux-x86_64.sh
      send "\r"
      send " "
      send " "
      send " "
      send " "
      send " "
      expect -exact "\[no\] >>>"
      send "yes\r"
      expect -exact "\[/home/vagrant/anaconda\] >>>"
      send "\r"
      expect -exact "\[no\] >>>"
      send "yes\r"
      

      取消注释 exp_internal 1 以查看匹配的超时时间是 Anaconda 的安装时间,在我的盒子上花了 390 秒。

      编辑:我实际上在这里用 Anaconda 完成了一个工作 Vagrant 环境:https://github.com/colour-science/colour-vagrant

      【讨论】:

        【解决方案5】:

        Puppet 不会让这项任务变得更容易,因为运行交互式脚本不是其核心功能的一部分(我什至不相信它可以通过 3rd 方模块获得)。

        确实存在更好的方法,即使用expect 工具。它允许您编写一个健壮的脚本来与安装过程的输入提示进行交互。

        【讨论】:

          【解决方案6】:

          您可以使用来自 ContinuumIO 的 offical vagrant 图像中的所需图像

          【讨论】:

            猜你喜欢
            • 2016-04-19
            • 2020-08-13
            • 2014-11-07
            • 2016-05-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-06-29
            相关资源
            最近更新 更多