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 更合适呢
1
SGL 51 天前
可以起一个 linux 的容器,在容器里面打。我日常在 x86 的容器里打,放到 x86 的 linux 服务器上没问题。
|
![]() |
3
zengxs 50 天前
Apple 自定义的文件属性,只在 macOS 上有效,这个警告不会影响解压出来的文件内容
|
![]() |
4
zengxs 50 天前
gnutar 就是标准的 gnu 的 tar 程序,和 linux 的 tar 是一个版本,你要和 linux 完全兼容最好就用这个
mac 自己的 tar 是一个定制的 bsdtar ,因为它已经占了 tar 这个名字,homebrew 才把 gnu-tar 程序改名为 gtar 同样有坑的还有类似的 gnu-sed 只是替换 PATH 的话不会对系统有啥影响,但是最好还是直接调 gtar 吧 |
![]() |
6
ultimate42 OP @zengxs 感觉直接用 gtar 的话,如果换成 wsl 或者别人的电脑,去执行这个脚本还得额外安装先一个 gtar 吧
我现在想到的是先在 shell 里先判断是否安装了 gtar ,如果安装了就设置 alias tar='gtar',这样没有安装 gtar 脚本也能执行下去,不过不管怎么样做,都挺奇怪就是了 |
![]() |
7
ultimate42 OP @SGL 我之前也是在 mac 上打包镜像的,不过打包和传输镜像都挺耗时间,网不好的时候传镜像到国外的 vps 非常慢,所以 web 项目我就索性直接传压缩包了
|
![]() |
8
zengxs 50 天前
@ultimate42 可以 uname -s 判断下系统是否是 macOS ,动态选择 tar 命令
if [ "$(uname -s)" == "Darwin" ]; then TAR=gtar else TAR=tar fi $TAR ..... |