Linux 커널을 다운로드하고 한 단계로 압축을 풀고 싶습니다. 많이있다수동그것에 대해. 그래서 나는 다음을 시도한다:
$ wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz | tar -xav -C /home/a/myKernel/
--2023-05-06 03:04:38-- https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz
Resolving cdn.kernel.org (cdn.kernel.org)... 146.75.49.176, 2a04:4e42:7c::432
Connecting to cdn.kernel.org (cdn.kernel.org)|146.75.49.176|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 136934448 (131M) [application/x-xz]
Saving to: ‘linux-6.3.1.tar.xz’
linux-6.3.1.tar.xz 100%[========================================================================================================================================>] 130.59M 9.08MB/s in 14s
2023-05-06 03:04:52 (9.32 MB/s) - ‘linux-6.3.1.tar.xz’ saved [136934448/136934448]
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
나는 또한 다음을 시도했습니다.
$ aria2c https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz | tar -xz -C /home/a/myKernel/
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
오류가 발생할 때마다. 그러나 다음 두 명령은 잘 작동합니다.
$ wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz
$ tar xavf linux-6.3.1.tar.xz
단일 명령으로 Linux 커널을 다운로드하고 압축을 푸는 방법은 무엇입니까?
답변1
GNU를 사용하면 tar
파일 에 있는 파일의 압축을 풀기 tar xf file.tar.xz
위한 호출이 xz -d
호출되지만 어떤 이유로 -
.
libarchive 작업으로 전환 bsdtar
:
wget -qO- https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz |
bsdtar xvf -
xz -d
하지만 직접 호출 할 수도 있습니다 .
wget -qO - https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz |
xz -d |
tar xvf -
이는 모든 tar
구현에 적용됩니다.
GNU tar
매뉴얼에는 다음이 있습니다:
아카이브를 읽을 때 압축 해제 옵션을 지정해야 하는 유일한 경우는 무작위 액세스를 지원하지 않는 파이프 또는 테이프 드라이브에서 읽을 때입니다. 그러나 이 경우 GNU "tar"는 사용해야 할 옵션을 나타냅니다. 예를 들어:
$ cat archive.tar.gz | tar tf - tar: Archive is compressed. Use -z option
여기:
$ cat file.tar.xz | tar tf -
tar: Archive is compressed. Use -J option
tar: Error is not recoverable: exiting now
따라서 GNU를 사용하는 경우 tar
명시적 -J
또는 --xz
for 호출을 사용하여 입력 스트림의 압축을 tar
동적으로 풀 수 있습니다.xz -d
wget -qO- https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz |
gnu-tar Jxvf -
어쨌든 다운로드한 파일을 stdout(여기서는 stdout으로 파이프)으로 인쇄하는 대신 로컬 파일에 저장한다는 사실을 잊어버렸을 수도 있습니다. 다운로드가 -O -
기본적 wget
으로 stdout으로 출력된다는 사실에 tar
혼란스러울 수도 있습니다. (quiet) 의 (silent)와 마찬가지로 기본적으로 획득되는 진행 정보를 억제합니다.wget
curl
-q
curl
-s
답변2
이와 같이:
wget -q -O - https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.3.1.tar.xz |
tar xJvf -
-O
여기에 출력 파일을 정의하십시오STDOUT
.-
-q
조용한 모드에서
그 다음에:
cd linux-6.3.1/
ls -1
arch/
block/
certs/
[...]