macos 使用 tar 归档,到 Linux 上解压时报警告

55 天前
 ultimate42
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.provenance'

在 linux 上解压时出现这个提示,解压后目录里也多了很多.开头的隐藏文件,我搜到的解决方法是换成 gnutar

export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"

我现在有一点疑问,将系统的 tar 替换为 gnutar 会不会对系统有影响,还是说在脚本里显式使用 gtar 更合适呢

1143 次点击
所在节点    macOS
8 条回复
SGL
55 天前
可以起一个 linux 的容器,在容器里面打。我日常在 x86 的容器里打,放到 x86 的 linux 服务器上没问题。
julyclyde
54 天前
@SGL 太重了吧
为了醋包饺子?憋着屁赶紧穿上裤子再放?
zengxs
54 天前
Apple 自定义的文件属性,只在 macOS 上有效,这个警告不会影响解压出来的文件内容
zengxs
54 天前
gnutar 就是标准的 gnu 的 tar 程序,和 linux 的 tar 是一个版本,你要和 linux 完全兼容最好就用这个
mac 自己的 tar 是一个定制的 bsdtar ,因为它已经占了 tar 这个名字,homebrew 才把 gnu-tar 程序改名为 gtar
同样有坑的还有类似的 gnu-sed

只是替换 PATH 的话不会对系统有啥影响,但是最好还是直接调 gtar 吧
SGL
54 天前
@julyclyde 是比较重,只是提一嘴,我是因为需要在 Mac 上模拟那个服务器的编译环境,所以做过这个事儿。
ultimate42
54 天前
@zengxs 感觉直接用 gtar 的话,如果换成 wsl 或者别人的电脑,去执行这个脚本还得额外安装先一个 gtar 吧
我现在想到的是先在 shell 里先判断是否安装了 gtar ,如果安装了就设置 alias tar='gtar',这样没有安装 gtar 脚本也能执行下去,不过不管怎么样做,都挺奇怪就是了
ultimate42
54 天前
@SGL 我之前也是在 mac 上打包镜像的,不过打包和传输镜像都挺耗时间,网不好的时候传镜像到国外的 vps 非常慢,所以 web 项目我就索性直接传压缩包了
zengxs
54 天前
@ultimate42 可以 uname -s 判断下系统是否是 macOS ,动态选择 tar 命令

if [ "$(uname -s)" == "Darwin" ]; then
TAR=gtar
else
TAR=tar
fi

$TAR .....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1145379

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX