tar: Архив сжат. Используйте опцию -z. Почему tar просит меня использовать опцию -z, если она игнорируется в режиме извлечения?
Я получаю эту ошибкуtar: Archive is compressed. Use -z option
при попытке создать образ докера:
RUN wget https://github.com/wal-g/wal-g/releases/download/v2.0.1/wal-g-pg-ubuntu-20.04-amd64.tar.gz -O - | \
tar -xvf - -O > "${APP}/bin/wal-g"
Но почему эта ошибка возникает, когда опция игнорируется в режиме извлечения?
-z, --gunzip, --gzip
(только режим c) Сожмите полученный архив с помощью gzip(1). В режимах извлечения или списка эта
опция игнорируется. Обратите внимание, что эта реализация tar автоматически распознает сжатие gzip при чтении архивов.
Когда я добавляю-z
вариант, я получаю еще одну ошибку:
Cannot write to ‘-’ (Success).
1 ответ
Команда должна быть:
wget https://github.com/wal-g/wal-g/releases/download/v2.0.1/wal-g-pg-ubuntu-20.04-amd64.tar.gz -O - | tar zxvf - -O > "${APP}/bin/wal-g"
The z
необходимо добавить где-то не между и . Опция требует аргумента, которым в данном случае является .
Вот как ака--file
Опция определена в исходном коде tar :
{"file", 'f', N_("ARCHIVE"), 0,
N_("use archive file or device ARCHIVE"), GRID_DEVICE },
Вы можете видеть из кода, что-f
за ним должно следовать имя файла, в данном случае специальное имя-
что означает stdout(3).
Кажется, что tar использует GNU argp для анализа аргументов CLI вместо getopt(3) .