2

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

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

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

我们如何链接两个目录?

更新 1:
看起来 vm.shared_folder 不会成功,因为它将主机文件夹映射到 vm 文件夹。我也在查看食谱/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

4

2 回答 2

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查看其文档。

干杯!

于 2013-04-26T19:30:33.567 回答
1

我终于得到了它,通过与 VM 共享我的 CKAN fork 目录(在这种情况下是父目录,因为 Vagrantfile 在 chef-ckan 子模块中):

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

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

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

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

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

于 2013-05-07T21:02:31.117 回答