tar -C 在 Chef 中失败
tar -C fails in Chef
我正在尝试用我的厨师食谱中的这段代码解压缩 tar 文件:
execute "#{node['ffmpeg']['yasm']}.tar.gz" do
command "tar -xzvf /tmp/#{node['ffmpeg']['yasm']}.tar.gz -C #{node['ffmpeg']['source_files']}"
但是下一个命令失败说在指定的目录中没有这样的文件。这是怎么回事?我该怎么办?文件和目录存在
谢谢
您需要确定 /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
.
对于可能像我一样挣扎的其他人,我得出的解决方案是
bash "extract-yasm" do
cwd path/to/destination
code <<-EOH
tar -xzvf /tmp/file-name.tar.gz
EOH
end
感谢大家的帮助:)
我正在尝试用我的厨师食谱中的这段代码解压缩 tar 文件:
execute "#{node['ffmpeg']['yasm']}.tar.gz" do
command "tar -xzvf /tmp/#{node['ffmpeg']['yasm']}.tar.gz -C #{node['ffmpeg']['source_files']}"
但是下一个命令失败说在指定的目录中没有这样的文件。这是怎么回事?我该怎么办?文件和目录存在 谢谢
您需要确定 /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
.
对于可能像我一样挣扎的其他人,我得出的解决方案是
bash "extract-yasm" do
cwd path/to/destination
code <<-EOH
tar -xzvf /tmp/file-name.tar.gz
EOH
end
感谢大家的帮助:)