Как правильно извлечь файл .tar.gz с помощью md5.sum на Solaris 10

Эти числа являются дескрипторами файлов . Как вы заметили, некоторые из них создаются автоматически. При открытии других файлов или подобных файлов они получат другие номера.

Числа, которые используются в любой конкретной программе, зависят от того, какие файлы были открыты этой программой или использованы иным образом. Например, если вы хотите «сохранить» текущий stdin и временно перенаправить stdin из другого места, а затем восстановить его позже, вы можете сделать что-то вроде:

exec 4<&0
exec < /some/file
#process
exec 0<&4 4<&- # restore stdin and close our duplicate

Таким образом, этот скрипт будет иметь дескриптор файла 4 , доступный по адресу по крайней мере, на какое-то время. Эти 4 могут быть чем угодно, что не используется (ну, есть предел на количество файлов, которые процесс может открывать, но все, что находится в пределах этого ограничения).

Вы можете увидеть, какие файловые дескрипторы были открыты у процесса и где они открыты, посмотрев в / proc / / fd . Это показывает все дескрипторы открытых файлов для этого процесса и файлы, с которыми они связаны.

5
29.05.2018, 18:08
2 ответа

Debe usar gtar, generalmente viene preinstalado con el paquete SUNWgtar:

gzip -dc gcc-4.9.0.tar.gz | /usr/sfw/bin/gtar -xf -
echo $?
0

El tar nativo de Solaris sin parches puede tener problemas con los archivos creados con GNU tar. Ver respuesta de @schily por qué.

5
27.01.2020, 20:33

Parece que el archivo tar es defectuoso o no cumple con los estándares.

Tenga en cuenta que obtuve el archivo como imagen bz2 y no tuve problemas con el uso de bzip2 -d gcc-4.9.0.tar.bz2 < tar tvf -.

El archivo descomprimido tiene la suma de comprobación md5 :6b8f599053a52e7c2076485d1ad3e747.

Ahora estoy buscando el archivo.gz, veamos qué obtengo...

OK, aquí está la suma de comprobación md5 de gcc -4.9.0.tar.gz fe8786641134178ecfeee2dc7644a0d8 que es lo mismo que ves.

Tenga en cuenta que su problema generalmente ocurre cuando el archivo ha sido creado por gtar, pero en casos raros resulta en un directory checksum error.

Si desea comprender mejor lo que sucede, le recomiendo que utilice el programa tartestque viene con star.

Obtener lo último schilytoolsde:

http://sourceforge.net/projects/schilytools/files/

compile y luego ejecute el programa tartest/OBJ/*/tartest < gcc-4.9.0.tar.

Hice esto y descubrí que la razón es que el archivo utiliza un "tipo de archivo" específico del proveedor de GNU 'L' en un encabezado tar.

IMPORTANTE :si GNU tar cumplía la mitad del estándar o al menos estaba libre de errores -, este problema no ocurrió ya que el nombre del archivo en cuestión encajaba perfectamente en POSIX.1 -1988 100+255 nombre -esquema. Así que esta es otra pista de por qué la gente debería evitar usar GNU tar en absoluto.

Recomiendo usar star.

Cada característica individual en starestá completamente bajo el control de una estructura de descripción de propiedades. Si especifica un formato de archivo, starnunca creará contenido de archivo relacionado con un formato de archivo diferente.

Si, p. llamar:

star -c -f out.tar -Hustar somedir

starutilizará un formato de archivo POSIX.1 -1988 compatible al 100 % y, en caso de que haya un archivo que no encaje en ese formato de archivo, starescribe una advertencia en lugar de archivar el archivo utilizando métodos no estándar.

Por cierto :Aquí está el conjunto de cambios, donde Sun agregó soporte para esta característica única del proveedor:

changeset:   11995:caff1bd711f5 
user:        Rich Burridge <rich.burridge@sun.com> 
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 
7
27.01.2020, 20:33

Теги

Похожие вопросы