gcc 미러 사이트 중 하나에서 다운로드한 gcc-4.9.0.tar.gz를 추출하려고 합니다. 압축하기 전에 md5 서명을 확인하기 위해 다음을 수행했습니다.
digest -a md5 -v gcc-4.9.0.tar.gz
이것은
md5 (gcc-4.9.0.tar.gz) = fe8786641134178ecfeee2dc7644a0d8
이는 소스에서 다운로드한 디렉터리의 md5.sum과 일치합니다.
그럼 내가 그랬어
gzip -dc gcc-4.9.0.tar.gz | tar xvf -
추출이 시작되었으나 곧 종료됨
tar: directory checksum error
저도 이렇게 압축과 압축해제를 따로 해보았습니다
gunzip gcc-4.9.0.tar.gz
그 다음에
tar -xvf gcc-4.9.0.tar
그러나 결국 체크섬 오류가 발생합니다.
이 문제를 어떻게 해결할 수 있나요?
답변1
tar 아카이브에 결함이 있거나 표준 이하인 것 같습니다.
아카이브를 bz2 이미지로 가져오고 bzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -
.
압축을 푼 아카이브에는 md5 체크섬이 있습니다: 6b8f599053a52e7c2076485d1ad3e747.
지금 .gz 파일을 받고 있습니다. 무엇을 얻는지 살펴보겠습니다...
좋습니다. gcc-4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8의 md5 체크섬은 보시는 것과 같습니다.
일반적으로 문제는 아카이브를 생성할 때 발생 gtar
하지만 드물게 directory checksum error
.
무슨 일이 일어나고 있는지 더 잘 이해하고 싶다면 를 tartest
사용하는 것이 좋습니다 star
.
다음에서 최신 정보를 얻으세요 schilytools
:
http://sourceforge.net/projects/schilytools/files/
프로그램을 컴파일한 다음 실행합니다 tartest/OBJ/*/tartest < gcc-4.9.0.tar
.
나는 이것을 했고 그 이유는 아카이브가 tar 헤더에서 GNU 공급업체 특정 "파일 유형" "L"을 사용하고 있었기 때문이라는 것을 알아냈습니다.
중요: GNU tar가 절반만 준수했거나 적어도 절반의 오류가 없었다면 문제의 파일 이름이 POSIX.1-1988 100+255 이름 체계를 완전히 준수하기 때문에 이 문제는 발생하지 않습니다. 사람들이 GNU tar 사용을 피해야 하는 이유에 대한 또 다른 팁이 있습니다.
를 사용하는 것이 좋습니다 star
.
의 모든 기능은 star
속성 설명 구조에 의해 완전히 제어됩니다. 아카이브 형식을 지정하면 star
다른 아카이브 형식과 관련된 아카이브 콘텐츠가 생성되지 않습니다.
예를 들어 전화하는 경우:
star -c -f out.tar -Hustar somedir
star
100% POSIX.1-1988 아카이브 형식이 사용되며, 이 아카이브 형식에 적합하지 않은 파일이 있는 경우 star
비표준 방법으로 파일을 아카이브하는 대신 경고가 표시됩니다.
참고: Sun이 이 공급업체 고유 기능에 대한 지원을 추가한 변경 세트는 다음과 같습니다.
changeset: 11995:caff1bd711f5
user: Rich Burridge <[email protected]>
date: Thu Mar 25 13:21:39 2010 -0700
description:
6202362 Solaris tar can't unpack files created with GNU tar
modified:
usr/src/cmd/tar/tar.c
답변2
일반적으로 SUNWgtar 패키지와 함께 사전 설치되는 gtar를 사용해야 합니다.
gzip -dc gcc-4.9.0.tar.gz | /usr/sfw/bin/gtar -xf -
echo $?
0
기본 Solaris 패치가 적용되지 않은 tar는 GNU tar를 사용하여 생성된 파일에 문제가 있을 수 있습니다. @schily의 답변을 참조하세요.