Cabal устанавливается в корневой каталог вместо каталога /home/vagrant с использованием Vagrantfile

Ниже приведено содержимое бродячего файла. Когда я запускаю команду vagrant up, она устанавливает кабалу по мере необходимости, но она находится в корневом каталоге. Следовательно, он становится непригодным. Я хочу обновить версию клики до последней версии, используя cabal update. Но этого не происходит.

Наконец, на моей виртуальной машине у меня есть старая версия Cabal, которая поставляется с haskell-platform, которая мне бесполезна. Однако, когда я выполняю эти команды отдельно, явно входя в виртуальную машину и ничего не помещая в Vagrantfile, это работает, и я получаю версию кабалы 1.22.6.0, которая мне нужна, но с использованием Vagrantfile. Как мне убедиться, что cabal не устанавливается в корневой каталог? Вместо этого я думаю, что его следует установить в каталог /home/vagrant следующим образом: /home/vagrant/.cabal/bin

==> default: Setting up haskell-platform (2013.2.0.0.debian3) ...
==> default: Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
==> default:  ********************************

    ==> default: Config file path source is default config file.
    ==> default: Config file /root/.cabal/config not found.
    ==> default: Writing default configuration to /root/.cabal/config
    ==> default: Downloading the latest package list from hackage.haskell.org
    ==> default:  ********************************
    ==> default: Resolving dependencies...
    ==> default: Downloading binary-0.7.6.1...
    ==> default: Configuring binary-0.7.6.1...
    ==> default: Building binary-0.7.6.1...
    ==> default: Preprocessing library binary-0.7.6.1...

СОДЕРЖАНИЕ ФАЙЛА VAGRANT НИЖЕ:

Vagrant.configure(2) do |config| 
      config.vm.box = "ubuntu/trusty32"
      config.vm.box_check_update = false 
      config.vm.provider "virtualbox" do |vb| 
        vb.gui = true  
        vb.memory = "2048"
      end

      config.vm.provision "shell", inline: <<-SHELL
      cd /home/vagrant      
      sudo apt-get update 
      echo "-----------------------------" 
      echo "-----------------------------" 
      sudo apt-get -y install zip
      sudo apt-get -y install git
      sudo apt-get -y install build-essential
      sudo apt-get -y install libmakefile-parser-perl
      sudo apt-get -y install libreoffice-dev
      sudo apt-get -y install haskell-platform

      echo " ********************************" 
      cabal update

      echo " ********************************" 

      cabal install cabal-install
      echo "+++++++++++==========++++====="

      # echo "PATH=/home/vagrant/.cabal/bin:$PATH" >> /home/vagrant/.bashrc 

      SHELL

person Zack    schedule 11.11.2015    source источник
comment
Почему бы вам не установить ghc-7.10.2 и cabal-1.22 из hvr/ghc? Если вы действительно не хотите GHC 7.6, я бы не стал использовать haskell-platform на Trusty.   -  person Zeta    schedule 11.11.2015
comment
@Zeta: это работает, когда я делаю те же шаги вручную на виртуальной машине. Просто он устанавливается в корневой каталог, когда я делаю то же самое с Vagrantfile. Если я смогу решить эту проблему, я в порядке.   -  person Zack    schedule 11.11.2015
comment
Вы пытались добавить su - vagrant предыдущий шаг установки клики?   -  person daniel.kahlenberg    schedule 11.11.2015
comment
да. я пробовал это   -  person Zack    schedule 11.11.2015


Ответы (1)


Лично мне больше повезло с настройкой vagrant с помощью ansible, но если вы хотите сделать это таким образом, вы пробовали:

sudo -u vagrant cabal install cabal-install
person David McHealy    schedule 11.11.2015
comment
Я не пробовал это. Я пытался сделать su vagrant, но это не сработало. Сейчас попробую то, что вы сказали. - person Zack; 11.11.2015