Cou氏の徒然日記

ほのぼの日記ブログです。

Linuxでの圧縮・解凍でのトラブル

新人OJTネタです。

 

coublood.hatenablog.com

先日の環境構築で、yumコマンドによるパッケージダウンロードの問題はありましたが、次に起きた問題が・・・

圧縮ファイルの拡張子問題

 

ファイルの圧縮形式は、WindowsでもLinuxでも色々とあります。

有名どころでは、zip、lzh、tar.gz、tar.Zなど色々とあります。

もちろん知っていれば別に普通のことですが、これって知らない人からしたら、何?ってなりがちのようです。

 

今回は、もともとのライブラリファイルを更新するという作業で、Windows用とLinux用があり、ソース管理への追加はWindowsマシンからやっています。

なので、Linuxのライブラリ入れ替えについては、Windowsを経由するため、生のファイルをやり取りすると、ファイル権限などがおかしくなったりすることもあり、また容量を節約するために、固めて登録してあります。

今回のライブラリは、最初に作った人が、「tar.Z」の形式(tar+compress)で登録しており、ツールでもそれを想定した作りになっているので、更新時も当然、同じ形式(tar.Z)形式で登録、更新することになりますが…

 

その作業をお願いしたところ、「大丈夫です」と特に質問もなく、普通に2〜3時間で作業終了したようです。

そのライブラリの入れ替えを待っていた人は、そのブランチを自分の作業ブランチに取り込んで作業をしていたところ、とある連絡が…。

 

作業者:

「修正確認をしようとしたら、ビルドエラーになるんですけど・・・どうしたらよいでしょうか?」

f:id:coublood:20210424103209p:plain

その質問が飛んできたので調べてみると・・・インクルードするファイルがないというエラー。

なんでファイルがないんだ?とその環境にログインしてみてみると、そのファイルはどうやら、問題の入れ替えたライブラリの中の1ファイル。

 

ログを見ると…

# uncompress lib_files.tar.Z
lib_files.tar.Z: not in compressed format 

どうやら、圧縮されたライブラリファイルの解凍に失敗していたようで…。

 

tar.Zファイルは、

  1. tarコマンドで固めて、
  2. その後、compressコマンドで圧縮

した形式。

そのため、解凍時には、「uncompressコマンド」と「tarコマンド」で解凍するわけですが・・・ 

uncompressコマンドを実行したところ、形式が違うよエラーが。

 

アレっと思って調べてみると、どうやら、compressコマンドを使っておらず、ただのtarで固めただけのファイルだということが判明…。

つまり、「tar.Z」というファイル名の拡張子は見せかけで、実は「tar」形式だったというオチ。

 

担当者に作業ログをもらってみると・・・tarコマンドで固める時に、拡張子を「tar.Z」指定で固めてたとか…。

そもそもtar.Zというものが何かを理解しないまま作業していたようです。

 

まあ確かに知らなかったら、そういう風に考えてしまう可能性もあるのかもしれません。それを想定できていなかった自分に反省です。