4

应用我的 Puppet 清单时出现此错误:

Error: Could not apply complete catalog: Found 1 dependency cycle:
(Exec[pip install requirements] => File[change venv permissions] => File[enforce MinGW compiler] => Exec[pip install requirements])
Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz

这是我的 Puppet 清单(相关部分),我在那里看不到任何依赖循环。有任何想法吗?

exec {'create virtualenv':
    command => "$install_dir/Scripts/virtualenv.exe venv",
    cwd     => $project_dir,
    require => Exec['install virtualenv'],
}

file { "fix Mingw32CCompiler":
    path    => "C:/Python27/Lib/distutils/cygwinccompiler.py",
    content => template($cygwinc_template),
    ensure  => present,
    require => Exec['create virtualenv'],
}

file { "enforce MinGW compiler":
    path    => "$project_dir/venv/Lib/distutils/distutils.cfg",
    owner   => $user,
    content => $mingw,
    ensure  => present,
    require => File['fix Mingw32CCompiler'],
}

exec {'pip install requirements':
    timeout => 1200,
    command => "$project_dir/venv/Scripts/pip.exe install -r $project_dir/requirements.txt",
    require => File['enforce MinGW compiler'],
}

file {'change venv permissions':
    path    => "$project_dir/venv",
    recurse => true,
    owner   => $user,
    mode    => 0770,
    require => Exec['pip install requirements'],
}
4

2 回答 2

4

在 puppet 文件中,对声明的任何父目录都有隐式要求。

有效:

File['change venv permissions'] -> File['enforce MinGW compiler']

所以父母需要 exec,exec 需要孩子,孩子需要父母,创建一个循环。

于 2013-08-09T17:59:00.447 回答
0

您的最后一次更改是什么(这可能是您添加循环的那一刻)。

尝试生成图表的建议。将生成的点文件作为 gist 发布,以便我们进一步调查。

看看Debugging cycle or missing dependency

于 2013-11-29T16:12:42.243 回答