You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用untar函数解压Shiny Web App文件返回错误代码1的问题咨询

Shiny下载操作界面截图

报错排查与解决

核心报错原因

错误码1首先来自文件读取失败,注意报错第一行显示的目标文件路径:/Users/filepath/Downloads/ad2007308f644d078ec59ce84d31ce7f .tar 文件名末尾多了一个空格,先检查下载的tar文件实际名称是否存在多余空格、存储路径是否包含中文、空格、Emoji等非ASCII特殊字符,Mac系统对路径转义的要求比Windows严格,很容易因路径识别错误无法读取文件。

Mac与PC端untar的差异

untar属于R内置utils包的函数,无需额外安装依赖包,两端的功能差异本质来自默认调用的tar工具不同:

  • Windows端R默认使用内置的GNU tar实现,兼容性更强,对非标准打包的tar文件容错率更高
  • 新Mac(macOS Ventura及以上版本)默认自带BSD tar,参数规则、压缩格式支持都和GNU tar有区别,遇到Shiny服务端打包的tar文件时容易出现兼容性报错

修复方案

调用untar时显式指定使用R内置的tar实现,跳过系统自带的tar工具即可抹平跨平台差异:

untar(
  tarfile = "/Users/你实际的文件存储路径/ad2007308f644d078ec59ce84d31ce7f.tar",
  exdir = "/Users/你期望的解压输出路径",
  tar = "internal"
)

如果下载的是gzip压缩的tar包,额外添加compressed = "gzip"参数明确指定压缩格式即可。

untar使用注意事项

  • 路径尽量统一使用英文,避免包含空格、特殊字符,从根源规避不同系统的路径转义差异问题
  • 新Mac需要先在系统设置「隐私与安全性」-「文件和文件夹」中给R/RStudio授予下载文件夹、目标输出文件夹的读写权限,否则也会因权限不足返回错误码1
  • 解压前可以用file.size()核对下载的tar文件大小,确认文件下载完整没有损坏,避免因下载丢包导致解压失败
  • 要写跨平台兼容的解压代码,固定添加tar = "internal"参数即可统一不同系统的解压逻辑,无需适配系统自带的tar工具

内容的提问来源于stack exchange,提问作者firmo23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:27:04