簡體   English   中英

我應該使用哪種紅寶石來處理tar存檔操作?

[英]what ruby gem should I use to handle tar archive manipulation?

我需要下載tar.gz文件,並用另一個tar.gz文件的內容替換其中的目錄。 到目前為止,我已經嘗試了以下寶石,發現它們缺乏

  • archive-tar2:它丟失了倒數第二個路徑分隔符(“ /”),因此實際上無法提取
  • archive-tarsimple:只是沒有提取壓縮的tarball,並且沒有返回任何錯誤消息msg
  • minitar:碰到一個錯誤,該錯誤導致文件路徑超過100個字符
  • archive-tar-minitar-與其父Errno :: ENAMETOOLONG失敗相同/文件名過長
  • libarchive:捆綁安裝失敗,gcc編譯失敗(即使在成功brew安裝libarchive之后)

我開始失去信心。 是否有一個很好的,最新的,維護良好的tar存檔gem可以正常工作? 我希望不要在命令行中使用,因為我想消除命令行注入攻擊的可能性。 但是在這一點上,我將采取一切避免手動調出外殼的方法。

您還可以簽出archive-tar-minitar ,它部分基於已經測試過的minitar ,並且似乎沒有發出對命令行的調用。

最后,我放棄了使用gem來處理tar檔案的方法,而只是通過脫機進入命令行來完成它。

`cd #{container} && tar xvfz sdk.tar.gz`    
`cd #{container} && tar xvfz Wizard.tar.gz`

    #update the framework packaged with the wizard
    FileUtils.rm_rf(container + "/Wizard.app/Contents/Resources/SDK.bundle")
    FileUtils.rm_rf(container + "/Wizard.app/Contents/Resources/SDK.framework")
    FileUtils.mv(container +  "/resources/SDK.bundle", container + "/Wizard.app/Contents/Resources/")
    FileUtils.mv(container +  "/resources/SDK.framework", container + "/Wizard.app/Contents/Resources/")

    config_plist =  render_to_string({
             file: 'site/_wizard_config',
             layout: false,
             locals: { app_id: @version.app.id },
             formats: 'xml'
            })  

File.open(container + "/Wizard.app/Contents/Resources/Configuration.plist", 'w') { |file| file.write( config_plist ) } 

`cd #{container} && rm Wizard.tar.gz`    
`cd #{container} && tar -cvf Wizard.tar 'Wizard.app'`
`cd #{container} && gzip Wizard.tar`

所有這些反引號讓我感覺就像我在重新編寫Perl。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM