Tar 压缩时遇到“无法打开:不是目录”

Tar 压缩时遇到“无法打开:不是目录”

我使用 fakeroot v1.12.4 进行打包和提取RHEL-6.4。我有两台不同的服务器,我使用 tar v1.23 压缩文件。其中一台服务器上的压缩失败,并出现以下错误:

tar: ./isolinux/etc/modprobe.d/blacklist.conf: Cannot open: Not a directory
tar: Exiting with failure status due to previous errors

如果我检查此文件的文件类型(作为普通用户),它会说这是一个 ASCII 文件:

girishp@~$ file ./isolinux/etc/modprobe.d/blacklist.conf
isolinux/etc/modprobe.d/blacklist.conf: ASCII English text
girishp@~$

但是如果我在 fakeroot 环境中检查文件类型,它会说它是目录:

+ file ./isolinux/etc/modprobe.d/blacklist.conf
./isolinux/etc/modprobe.d/blacklist.conf: directory

我用来压缩的命令是:

tar -czf /home/users/girishp/tarfiles/mytar.tgz .

使用*而不是.

tar -czf /home/users/girishp/tarfiles/mytar.tgz *

我比较了两台机器的环境变量,环境没有区别。如果我使用sudo而不是fakeroot,它工作正常。straceoftar说它正在尝试使用O_DIRECTORY选项打开文件。

open("./isolinux/etc/modprobe.d/blacklist.conf", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = -1 ENOTDIR (Not a directory)

我试图取消设置以下所使用的一些环境变量fakeroot

unset LD_LIBRARY_PATH
unset LD_PRELOAD

Tar 可以很好地完成这一点。

为什么这个文件在fakeroot环境中显示为目录?

答案1

已将 fakeroot 更新至 v1.20.2-1,更新 fakeroot 后不再出现问题。

相关内容