【问题标题】:How to unzip an .sh file using a chef recipe如何使用厨师食谱解压缩 .sh 文件
【发布时间】:2022-03-16 17:47:36
【问题描述】:

您能否分享一个示例厨师食谱来执行 .sh 文件?该文件被压缩在一个文件夹中,所以我需要在执行之前先提取它(再次使用配方)。尝试静默安装 .sh 文件时遇到问题。 “-q”没有被配方识别。我试图执行的命令是“sh .sh –q –varfile response.file” 我能够在 linux 上成功安装它,但不使用配方。请帮忙

【问题讨论】:

    标签: chef-infra recipe


    【解决方案1】:

    我假设您正在寻找类似 @​​987654321@ 和两个 execute 这样链接的资源(假设压缩文件在其根目录包含文件并且是 gzipped tar 类型,相应地更新命令):

    execute "silent_install" do
      command "/path/to/package/script.sh -q -varfile /path/to/package/response.file"
      action :nothing
    end
    
    execute "unzip_package" do
      command "/bin/tar -xzf /path/to/package.tgz -C /path/to/package"
      action :nothing
      notifies :run,'execute[silent_install]', :immediately
    end
    
    remote_file "/path/to/package.tgz" do
      source "http://host/package-source.tgz" 
      notifies :run,'execute[unzip_package]', :immediately
    end
    

    然而这是ark资源更适合执行的操作,而且更不容易出错和脆弱。

    具有相同假设的示例(保持静默安装程序的执行,最好包含在 Makefile 中,但我认为这超出了此答案的范围):

    execute "silent_install" do
      command "/path/to/package/script.sh -q -varfile /path/to/package/response.file"
      action :nothing
    end
    
    ark 'mypackage' do
       url 'http://remote.host/package.tar.gz'
       path "/path/to"
       action :put
       notifies :run,'execute[silent_install]', :immediately
     end
    

    【讨论】:

    • 您好,zip 文件不是 tar 文件,而是一个压缩文件,由于文件非常大,我无法将其转换为 .tar。有没有直接解压压缩文件的命令?此外,没有下载 zip 文件的直接链接,因此源路径可能不起作用。那么我可以将 zip 文件放在 cookbook/files/default 中并在静默安装之前解压缩吗?
    • 我对厨师很陌生,所以我需要编写一个配方来从我的本地机器复制安装文件(对于静默安装,我需要复制 response.varfile、lisence 文件和 . sh 文件),然后解压缩文件,然后安装它。
    • @user6039496 命令将是 unzip 而不是 tar,或者可能只是 gzip。我不建议在你的食谱中设置一个大文件,但如果这绝对是你想要的,你可以查看cookbook_file 资源(我让你自己在文档上搜索它)。但我真的建议您查看ark 食谱,它会为您管理文件类型 (tar/gzip/zip/bz2) 并允许更好地控制该过程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    相关资源
    最近更新 更多