
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과 untar를 시도해 보았습니다.
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
gtar를 사용해야 하며 일반적으로 SUNWgtar 패키지와 함께 사전 설치되어 있습니다.
gzip -dc gcc-4.9.0.tar.gz | /usr/sfw/bin/gtar -xf -
echo $?
0
기본 Solaris 패치가 적용되지 않은 tar는 GNU tar로 생성된 파일에 문제가 있을 수 있습니다. @schily 이유의 답변을 참조하십시오.