I am trying to download and extract tar.xz
file with a single line command. However, it doesn't consistently work for all of the links. I can manually download and extract it.
I am able to download glibc and extract without any issue.
curl https://ftp.gnu.org/gnu/glibc/glibc-2.26.tar.xz | tar -xJ -C ${PWD} --strip-components 1
When it comes to download the following file, it surprisingly fails. I couldn't find out what makes the difference. This is the single link I have seen so far which fails.
Any idea why the following command fails?
curl https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz | tar -xJ -C ${PWD} --strip-components 1
It fails with the following message.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
xz: (stdin): File format not recognized
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Any help would be appreciated.
Use curl -L
to follow redirects:
curl -L https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz | tar -xJ --strip-components 1
To debug such issues, you can run the curl
command by itself and observe that in this case, it doesn't return any data:
$ curl https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
$
You can then further run curl -v
to see what's going on. It shows a HTTP/1.1 302 Found
with an empty body and a redirection to a different file, which is how you know to add -L
to follow the redirection.