如何将Vagrant中的CKAN安装链接到主机操作系统中的克隆存储库?

时间:2013-04-26 18:18:14

标签: pip chef vagrant ckan

我正在使用Vitor Baptista的chef-ckan食谱为Vagrant设置CKAN安装。

一切正常,但我找不到让CKAN从我的主机操作系统加载源代码的方法(在本例中是OSX中的克隆目录)。

目前,主机操作系统中的CKAN代码(repo代码)与Vagrant共享为 / vagrant 。问题是CKAN虚拟环境正在从〜/ pyenv / src / ckan读取源代码,但不包括我们的提交。

我们如何链接两个目录?

更新1:
看起来vm.shared_folder不会起作用,因为它将主机文件夹映射到vm文件夹。我也在查看cookbook / ckan / recipes并找到了SOURCE_DIR常量,但没有解决问题。

USER = node[:user]
HOME = "/home/#{USER}"
ENV['VIRTUAL_ENV'] = "#{HOME}/pyenv"
ENV['PATH'] = "#{ENV['VIRTUAL_ENV']}/bin:#{ENV['PATH']}"
SOURCE_DIR = "#{ENV['VIRTUAL_ENV']}/src/ckan"

更新2:
刚刚在配方https://github.com/vitorbaptista/chef-ckan/blob/master/cookbooks/ckan/recipes/default.rb#L29中找到了这一行,也许我们可以链接到vm.shared_folder,以便CKAN安装从我们的主机操作系统读取源代码。

仍然无法正常工作。只是想知道vagrant reload是否还不够,我应该做vagrant destroy; vagrant up

2 个答案:

答案 0 :(得分:2)

(我刚把它添加到chef-ckan的存储库中,所以更容易更新它。这里我只是解释修复。)

问题是我使用pip install --editable来克隆CKAN的存储库并安装它。要做你想做的事,你需要将这两个步骤分开。

# Install CKAN Package步骤之前,添加:

git SOURCE_DIR do
  user USER
  group USER
  repository "git://github.com/okfn/ckan.git"
  reference "master"
  enable_submodules true
end

然后将安装编辑为:

python_pip SOURCE_DIR do
  ...
end

然后你可以随意改变SOURCE_DIR(即/vagrant/ckan),它应该有效。它不能是尚未创建其父级的子目录。例如,如果SOURCE_DIR是“/ vagrant / src / ckan”,则必须存在“/ vagrant / src”。

默认情况下,git chef的配方会在克隆的存储库运行时更新它。如果您想更改它,请查看http://docs.opscode.com/resource_git.html上的文档。

干杯!

答案 1 :(得分:1)

我终于得到了它,通过与VM共享我的CKAN fork directoy(在这种情况下,由于Vagrantfile位于chef-ckan子模块内,因此是父对象):

config.vm.share_folder "ckan", "/vagrant", ".."

参考:https://github.com/wilhelmbot/chef-ckan/commit/3cacc6969e8e257862cbc13f32a4d9f271850f27

并更改CKAN配方以使用共享文件夹作为SOURCE DIRECTORY(正如Vitor指出的那样)https://github.com/wilhelmbot/chef-ckan/commit/cc338f6946efc3968c3b8bded6df00010e9e4732

注意:
我无法使git引用属性起作用,这就是为什么我没有使用Vitor提出的完整解决方案。

我得到了STDOUT: STDERR: fatal: Could not parse object 'e0648dbf...'