Ошибка «tar: not found in archive» при использовании докера Alpine - PullRequest
0 голосов
/ 26 января 2019

Я запускаю эти команды:

docker run -ti --rm alpine
apk add --no-cache curl
curl https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.15.6.tgz | tar xvz --strip 1 package/min

и получил ошибку tar: package/min: not found in archive.

Я запускаю одну и ту же команду (curl | tar) в терминале Mac и в Docker Ubuntu, все они успешны.

1 Ответ

0 голосов
/ 26 января 2019

tar, включенный в Alpine, - это не обычный (GNU) tar, а компонент BusyBox:

/scratch # tar --version
tar (busybox) 1.28.4

Очевидно, эта версия tar генерирует (поддельное) сообщение об ошибке при запуске с

tar xvz --strip 1 package/min

(однако, на первый взгляд, он прекрасно создал целевой каталог, поэтому игнорирование сообщения об ошибке может быть нормальным).

Чтобы избавиться от надоедливой ошибки, вы должны установить GNU tar и использовать это:

/scratch # apk add --no-cache tar
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tar (1.31-r0)
Executing busybox-1.28.4-r2.trigger
OK: 7 MiB in 19 packages
/scratch # tar --version
tar (GNU tar) 1.31
<rest of message omitted>

После этого выполнение вашей исходной команды работает без каких-либо сообщений об ошибках.

...