솔라리스 10에서 md5.sum을 사용하여 .tar.gz를 올바르게 추출하는 방법

솔라리스 10에서 md5.sum을 사용하여 .tar.gz를 올바르게 추출하는 방법

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

star100% 호환되는 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 이유의 답변을 참조하십시오.

관련 정보