2015-05-28 37 views
1

我試圖用木偶/流浪到一個提供VM具有:木偶不使用新的deb源來安裝最新的R版本

  • [R V3.2.0(最新版本)
  • 一些R封裝(具體地預測,dplyr,RMySQL)

Vagrantfile包含使用木偶以供應盒:

Vagrant.configure(2) do |config| 
    config.vm.box = "ubuntu/trusty64" 
    config.vm.provision "puppet" do |puppet| 
    puppet.module_path = "modules" 
    end 
    config.vm.provider "virtualbox" do |vb| 
    vb.gui = true 
    vb.memory = "1024" 
    end 
end 

default.pp目前看起來是這樣的:

include apt 

apt::key { 'cran': 
    id  => 'E084DAB9', 
    server => 'keyserver.ubuntu.com', 
} 

apt::source { 'R': 
    comment => 'This is the apt repository for R - the language for statistical computing', 
    location => 'http://cran.rstudio.com/bin/linux/ubuntu/', 
    release => 'trusty/', 
    repos => '', 
} 

exec { "apt-update": 
    command => "/usr/bin/apt-get update" 
} 

Exec["apt-update"] -> Package <| |> 

package { "r-base": 
    ensure => latest, 
} 

這成功添加易鍵和文件,/etc/apt/sources.list.d/R.list,到VM包含:

# This file is managed by Puppet. DO NOT EDIT. 
# This is the apt repository for R - the language for statistical computing 
deb http://cran.rstudio.com/bin/linux/ubuntu/ trusty/ 

不幸的是,它安裝將R版本是舊的(V3 .0.2)。這是當您在未添加存儲庫的情況下從sudo apt-get install r-base從Ubuntu存儲庫安裝的版本。

如果我ssh入禁區和手動運行sudo apt-get install r-base安裝最新版本的R,它,雖然它並沒有解決我的問題(即完全自動安裝R V3.2.0從cran.rstudio.com ),它確實證明了存儲庫的工作原理。

你能看到我做錯了什麼嗎?爲了創建一個可重複的例子,我把這個項目放在當前狀態下的github上:https://github.com/alexwoolford/vagrantR

回答

1

看起來您需要在應用程序包之前設置源代碼。我沒有用Ubuntu做過很多事情,但是從模塊源代碼看來,它似乎並不自動需要源代碼。

Puppet不按清單中指定的順序應用資源,而是可以按任何順序應用它們。當你指定兩個資源之間的關係來訂購它們時,例外情況就是例外。

例如,一個辦法做到這一點:

exec { "apt-update": 
    command => "/usr/bin/apt-get update", 
    require => Apt::Source['R'] 
} 
+0

謝謝@克里斯皮特曼。那麼是否應該對'default.pp'進行特定的編輯以要求源設置?我認爲'apt-get update'指令會識別添加到'/etc/apt/sources.list.d/'的源,因爲它似乎是以交互方式工作的。 –

+0

@AlexWoolford我在答案中增加了一些信息。這有幫助嗎? –

+0

這很完美,@ChrisPitman。我沒有意識到Puppet按照與寫入的順序不同的順序應用清單的各個部分。 –