0

我正在尝试在我的厨师食谱中使用以下代码解压缩 tar 文件:

execute "#{node['ffmpeg']['yasm']}.tar.gz" do
      command "tar -xzvf /tmp/#{node['ffmpeg']['yasm']}.tar.gz -C #{node['ffmpeg']['source_files']}"

但是下一个命令失败,说指定目录中没有这样的文件。这是怎么回事?我该怎么办?文件和目录存在 谢谢

4

2 回答 2

2

您需要确保/tmp/#{node['ffmpeg']['yasm']}.tar.gz存在并且更改目录-C也存在。

execute你可以放之前:

   directory node['ffmpeg']['source_files'] do
     recursive true
   end

为了创建更改目录,如果它丢失。

为了检查文件是否存在,/tmp/#{node['ffmpeg']['yasm']}.tar.gz您可以添加

  only_if { ::File.exist?("/tmp/#{node['ffmpeg']['yasm']}.tar.gz") }

到您的执行资源。

在这种情况下,您的代码将受到错误的保护。

还有一件事——如果你change directory只需要在execute资源被触发时创建,你就需要使用notify resource.

于 2018-05-17T20:57:25.863 回答
1

对于其他可能像我一样挣扎的人,我得出的解决方案是

bash "extract-yasm" do
  cwd path/to/destination
  code <<-EOH
  tar -xzvf /tmp/file-name.tar.gz
  EOH
end

感谢大家的帮助:)

于 2018-05-21T09:53:00.117 回答