Я использую 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
, он работает нормально. strace
из tar
говорит, что пытается открыть файл с 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?
источник
Cannot open: NOT a directory
. Так что tar не считает это каталогом. Что произойдет, если вы попробуете ту же команду*
вместо.
? Или в чистой оболочке?Ответы:
Обновлен fakeroot до v1.20.2-1, проблема с обновленным fakeroot отсутствует.
источник