我需要下载tar.gz文件,并用其他tar.gz文件的内容替换其中的目录。到目前为止,我已经尝试了以下宝石,并发现它们缺乏
我开始失去信心。是否有一个好的,最新的,维护良好的tar存档宝石才有效?我更喜欢一个没有呼叫命令行的人,因为我想消除命令行注入攻击的可能性。但是在这一点上,我会采取任何避免手动调用shell的东西。
答案 0 :(得分:0)
您还可以查看archive-tar-minitar,它部分基于您已经测试过的minitar
,并且它似乎不会触发对命令行的调用。
答案 1 :(得分:0)
我最终放弃使用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。