web-dev-qa-db-ja.com

Centosの古いQNXから.zファイルを抽出する方法

望ましいCentosで解凍する必要がある古いQNXシステムからのzファイル。

これらのファイルはQNXパック方式でパックされており、QNXをロードしてこれらのファイルをアンパックするために使用できる仮想マシン(VMWARE)はありません。

利用可能なすべての抽出プログラムを試しましたが、誰もこれらを解凍できません。ファイルファイル名は、私が以下を試した結果としてデータを提供します:

  • ガンジップ
  • 解凍
  • tar
  • winrar
  • 7z
  • unzip

Centosでの出力:

-rwxr--r-- 1 root root  896 Mar 11 05:15 PMITN01.z
[root@green update]# zcat PMITN01.z
zcat: PMITN01.z: not in gzip format
[root@green update]# gunzip PMITN01.z
gunzip: PMITN01.z: not in gzip format
[root@green update]# uncompress -v PMITN01.z
PMITN01.z - no .Z suffix
[root@green update]# tar -zxvf PMITN01.z
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
[root@green update]# cat PMITN01.z | cpio -imdv
cpio: premature end of archive
[root@green update]# file PMITN01.z
PMITN01.z: data

フリーズ/メルトをインストールした後:

[root@green update]# cp PMITN01.z PMITN01.z.F
[root@green update]# melt PMITN01
PMITN01.F: No such file or directory
[root@green update]# melt PMITN01.z
PMITN01.z.F: not in frozen format

私が見つけた唯一の貴重な検索は次のとおりです OpenQNXフォーラム

- - -更新 - - - -

ファイルを追加しました ここ ファイルの種類を確認/確認できます。

質問に対する答えがまだ見つからないので、なぜ答えが賛成されるのかわかりません。

より複雑にするために、使用されるシステムはおそらくファイルを複数のファイルに分割します。これはll-hal出力です。

-rwxrw-r-- 1 root root  357 Feb  7  2012 PMIPN.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN01.z
-rwxrw-r-- 1 root root  695 Feb  7  2012 PMIRN02.z
-rwxrw-r-- 1 root root  995 Feb  7  2012 PMIRN03.z
-rwxrw-r-- 1 root root  363 Feb  7  2012 PMIRN04.z
-rwxrw-r-- 1 root root 3.2K Feb  7  2012 PMIRN05.z
-rwxrw-r-- 1 root root  363 Feb  7  2012 PMIRN06.z
-rwxrw-r-- 1 root root  363 Feb  7  2012 PMIRN07.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN08.z
-rwxrw-r-- 1 root root  851 Feb  7  2012 PMIRN09.z
-rwxrw-r-- 1 root root 1022 Feb  7  2012 PMIRN10.z
-rwxrw-r-- 1 root root  361 Feb  7  2012 PMIRN11.z
-rwxrw-r-- 1 root root  695 Feb  7  2012 PMIRN12.z
-rwxrw-r-- 1 root root  15K Feb  7  2012 PMIRN13.z
-rwxrw-r-- 1 root root  16K Feb  7  2012 PMIRN14.z
-rwxrw-r-- 1 root root 1.6K Feb  7  2012 PMIRN15.z
-rwxrw-r-- 1 root root  638 Feb  7  2012 PMIRN16.z
-rwxrw-r-- 1 root root 1.9K Feb  7  2012 PMIRN17.z
-rwxrw-r-- 1 root root  13K Feb  7  2012 PMIRN18.z
-rwxrw-r-- 1 root root  363 Feb  7  2012 PMIRN19.z
-rwxrw-r-- 1 root root  578 Feb  7  2012 PMIRN20.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN21.z
-rwxrw-r-- 1 root root 1.6K Feb  7  2012 PMIRN22.z
-rwxrw-r-- 1 root root  361 Feb  7  2012 PMIRN23.z
-rwxrw-r-- 1 root root  361 Feb  7  2012 PMIRN24.z
-rwxrw-r-- 1 root root  688 Feb  7  2012 PMIRN25.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN26.z
-rwxrw-r-- 1 root root  650 Feb  7  2012 PMIRN27.z
-rwxrw-r-- 1 root root  801 Feb  7  2012 PMIRN28.z
-rwxrw-r-- 1 root root 3.0K Feb  7  2012 PMIRN29.z
-rwxrw-r-- 1 root root  361 Feb  7  2012 PMIRN30.z
-rwxrw-r-- 1 root root  354 Feb  7  2012 PMIRN31.z
-rwxrw-r-- 1 root root  569 Feb  7  2012 PMIRN32.z
-rwxrw-r-- 1 root root  361 Feb  7  2012 PMIRN33.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN34.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN35.z
-rwxrw-r-- 1 root root 7.8K Feb  7  2012 PMIRN36.z
-rwxrw-r-- 1 root root  875 Feb  7  2012 PMIRN37.z
-rwxrw-r-- 1 root root 4.6K Feb  7  2012 PMIRN38.z
-rwxrw-r-- 1 root root 3.2K Feb  7  2012 PMIRN39.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN40.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN41.z
-rwxrw-r-- 1 root root 7.4K Feb  7  2012 PMIRN42.z
-rwxrw-r-- 1 root root  362 Feb  7  2012 PMIRN43.z

ご覧のとおり、ファイルサイズの明確な分割ではありません。

2
Tahir Malik

リンクされた例はzlibストリームです。 pigz (gzipの並列実装)を使用して、.zファイルを解凍できます。例えば。

pigz -dz *.z

結果のPMRINnnを組み合わせる場合は、catを使用できます。ここで、ワイルドカードはそれらを名前で並べ替えます。

cat PMRIN?? > PMRIN
3
Mark Adler

最初にコマンドを試す必要があります

file yourfilename.z

そしてそれが何として識別されているかを見てください、それはどのプログラムを示しているはずです。

fileがこれがcompress'd data 16 bitsであると言った場合、使用できます

gzip -d < yourfilename.z > yourfilename

uncompressプログラムに加えて)それを解凍します。

5
Anthon

次の Perlスクリプト をファイルを含むディレクトリ(たとえば、Qでリンクしたもの、media.ini.z)で実行します。

#!/usr/bin/Perl -w
use strict;
use Compress::Zlib;

my ($tempFilename2, $tempFilename1, $gz, $buffer, $gzerrno);
$tempFilename1 = "mediainf.ini.z";
$tempFilename2 = "mediainf.ini";
open (GZIPFILE, "$tempFilename1") 
   || warn "Can't open Zip input file: $tempFilename1: $!";
binmode GZIPFILE;
open (DATAFILE, ">>$tempFilename2")  
   || warn "Can't open uncompressed data file: $tempFilename2: $!";
binmode DATAFILE;
my $x = inflateInit()
   or die "Cannot create a inflation stream\n" ;

my $input = '' ;

my ($output, $status) ;
while (read(GZIPFILE, $input, 4096))
{
    ($output, $status) = $x->inflate(\$input) ;

    print DATAFILE $output 
        if $status == Z_OK or $status == Z_STREAM_END ;

    last if $status != Z_OK ;
}

die "inflation failed\n"
    unless $status == Z_STREAM_END ;

Mediainf.iniの出力:

00:01=outinf_md5&lang_cd;
00:02=db_area_name&db_fname&part&dir&decomp_sz&file_op&ftype&data_type_id&area_id;
01:c3031a6ffb4e0d09f88043b6692b956c&en;
01:c3031a6ffb4e0d09f88043b6692b956c&fr;
01:c3031a6ffb4e0d09f88043b6692b956c&de;
01:c3031a6ffb4e0d09f88043b6692b956c&es;
01:c3031a6ffb4e0d09f88043b6692b956c&it;
01:c3031a6ffb4e0d09f88043b6692b956c&pt;
01:c3031a6ffb4e0d09f88043b6692b956c&nl;
01:c3031a6ffb4e0d09f88043b6692b956c&ru;
01:c3031a6ffb4e0d09f88043b6692b956c&none;

生のzlibデータを解凍する代替方法については、この他の Q&A も参照してください。

2
user44370

file(1)は何を教えてくれますか?

ウィキペディアのページ は、Unixの pack コマンドによって処理される廃止された形式(単純なハフマン符号化)を暗示しているようです。私の(完全な検索ではありませんが)フォーマットやソースコードへのポインタはありません。おそらく nix Heritage Society にはいくつかの古代のコードがあります。

しかし、先史時代のCをコンパイルすることは、興味深い演習になる可能性があります。これらすべてを純粋に娯楽的価値のために行っているのでない限り、最近の(っぽい)マシンを入手して仮想マシンでQNXを実行しても、害ははるかに少なくなります。

1
vonbrand