Здравствуйте! Прохожу курс “от 0 до Linux админа” по ссылке: Learn Programming Online | Courses for Developers | YODO и столкнулся с проблемой, связанной с использованием GNU tar и опцией --one-top-level.
При попытке извлечь архив в определенное место с помощью следующей команды:
tar xzf ARCHIVE.tar.gz --one-top-level=/my/folder
Я получаю ошибки:
tar: /my/folder: Cannot mkdir: Invalid cross-device link
tar: /my/folder/somefile: Cannot open: Invalid cross-device link
Ранее это работало без проблем, однако в последнее время (по логам сборки Docker) появляется указанная ошибка. Я попробовал это на своей установке WSL, и ошибка воспроизводится. Проблема началась 7 июля и возникает как на Ubuntu 22.04, так и на 24.04 и 26.04.
Может ли кто-нибудь подсказать, что могло измениться в tar или в опции --one-top-level? Я сейчас использую версию 1.35+dfsg-4ubuntu0.4 на своей установке WSL. Буду благодарен за любую помощь!
Ошибка “Недопустимая межустройственная ссылка” при использовании GNU tar с опцией --one-top-level может возникать по нескольким причинам. Эта опция создает один верхний уровень каталога, в который распаковываются все файлы из архива, и проблема может быть связана с тем, как архив был создан или с разрешениями на файлы и каталоги.
Вот несколько возможных причин и решений:
-
Некорректный архив: Убедитесь, что архив, который вы пытаетесь распаковать, корректен и не поврежден. Попробуйте его открыть без --one-top-level для диагностики.
-
Отсутствие прав: Проверьте, есть ли у вас достаточные права на создание каталогов и запись в целевую директорию. Возможно, нужно запустить команду с повышенными правами (например, с использованием sudo).
-
Проблемы с файловой системой: Убедитесь, что файловая система, на которую вы пытаетесь извлечь данные, не имеет каких-либо ограничений (например, файловая система только для чтения).
-
Проблемы с символическими ссылками: Если архив содержит символические ссылки, возможно, они ссылаются на несуществующие файлы или каталоги. Проверьте, можно ли распаковать архив без опции --one-top-level и проанализируйте содержимое.
Если ни одно из этих решений не помогло, вы можете попробовать использовать другие опции tar или обратиться к документации для более глубоких решений.
Спасибо за ваш вопрос! У меня все получилось, и я смог разобраться с этой проблемой.