Tar сжимает «Не удается открыть: не каталог» во время сжатия

5

Я использую 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?

GiL
источник
Вы имеете в виду, что это проблема с open ()?
ГиЛ
Я не знаю, в чем проблема, но вы выводите пока Cannot open: NOT a directory. Так что tar не считает это каталогом. Что произойдет, если вы попробуете ту же команду *вместо .? Или в чистой оболочке?
Хеннес
Он отлично работает в чистой оболочке, так как fakeroot там не используется. проблема только там, когда я выполняю tar в скрипте bash, порожденном с помощью fakeroot. Я не пробовал с * на данный момент, я поделюсь результатами после тестирования.
ГиЛ
1
Похоже, вы нашли ошибку в Fakeroot. На каком дистрибутиве вы находитесь? Какая версия fakeroot?
Дероберт
1
Кстати, отключив LD_PRELOAD и LD_LIBRARY_PATH, вы также отключаете fakeroot.
Пол Стелиан

Ответы:

0

Обновлен fakeroot до v1.20.2-1, проблема с обновленным fakeroot отсутствует.

GiL
источник