以前はLHA書庫がよく使われたが、最近はあまり見かけなくなった。それでも.lzh
ファイルを扱う必要があったので、msys2に「lha」コマンドをインストールして使えるようにしたので備忘録を残す。
残念ながらpacmanパッケージには登録されてないようで、ソースコードを取得しビルドしてインストールする。尚、gccなどのコンパイルコマンドが必要で、下記記事の手順で準備しておく。
msys2でWindows上でのビルド環境をつくる(msys2のインストール)
GNU makeやコンパイラが動かせる環境を、Windows上にmsys2をインストールしてつくる。Unixのbashライクなコマンドラインが使えるようになるソフトだが、このようなソフトは、他にはCygwinやMinGWなどがある。msys...
LHAソースのダウンロード
GitHubの下記URLでソースコードが公開されているので取得する。
GitHub - jca02266/lha: LHa for UNIX - Note: This software is licensed under the ORIGINAL LICENSE. It is written in man/lha.n in Japanese(Translated: )
LHa for UNIX - Note: This software is licensed under the ORIGINAL LICENSE. It is written in man/lha.n in Japanese(Transl...
任意のフォルダで、ターミナルから下記コマンドを実行。
$ wget https://github.com/jca02266/lha/archive/master.zip
$ 7z x master.zip
$ cd lha-master/
尚、7zコマンドがない場合は、下記記事の要領でインストールしておく。
7-zip圧縮操作「7z」コマンドを使う
7zip圧縮ファイルを操作する「7z」コマンドを使えるようにしたので、備忘録を残す。1.macOSHomebrewで下記コマンドでインストール$ brew install p7zip2.msys2(Windows)pacman -Ss 7z...
又、以下のgitコマンドでクローン取得しても大丈夫。
$ git clone https://github.com/jca02266/lha.git
$ cd lha/
ビルド
同梱の説明ドキュメント、README.jp.md, INSTALL
ファイルなどの説明を参照し下記手順でビルドする。
configureを生成
$ autoreconf -is
configureを実行
$ ./configure --with-tmp-file=no --disable-largefile --disable-multibyte-filename --disable-iconv
--with-tmp-file=no --disable-largefile
オプションを指定しておかないと、lha実行時の/tmp/
に確保された一時ファイルへのアクセスができずエラーとなった。- 私は、漢字ファイル名は扱わないので
--disable-multibyte-filename --disable-iconv
オプションを指定した。
コンパイル
$ make && make check
インストール
$ make install
起動確認
コマンド実行してみる。
$ lha
LHarc for UNIX V 1.02 Copyright(C) 1989 Y.Tagawa
LHx for MSDOS V C2.01 Copyright(C) 1990 H.Yoshizaki
LHx(arc) for OSK V 2.01 Modified 1990 Momozou
LHa for UNIX V 1.00 Copyright(C) 1992 Masaru Oki
LHa for UNIX V 1.14 Modified 1995 Nobutaka Watazaki
LHa for UNIX V 1.14i Modified 2000 Tsugio Okamoto
LHA-PMA for UNIX V 2 PMA added 2000 Maarten ter Huurne
Autoconfiscated 2001-2008 Koji Arai
usage: lha [-]<commands>[<options>] [-<options> ...] archive_file [file...]
commands: [axelvudmcpt]
options: [q[012]vnfto[567]dizg012e[w=<dir>|x=<pattern>]]
long options: --system-kanji-code={euc,sjis,utf8,cap}
--archive-kanji-code={euc,sjis,utf8,cap}
--extract-broken-archive
--convert-filename-case
--ignore-mac-files
--timestamp-archive
--traditional
--help
--version
commands: options:
a Add(or replace) to archive q{num} quiet (num:quiet mode)
x,e EXtract from archive v verbose
l,v List / Verbose List n not execute
u Update newer files to archive f force (over write at extract)
d Delete from archive t FILES are TEXT file
m Move to archive (means 'ad') o[567] compression method (a/u/c)
c re-Construct new archive d delete FILES after (a/u/c)
p Print to STDOUT from archive i ignore directory path (x/e)
t Test file CRC in archive z files not compress (a/u/c)
g Generic format (for compatibility)
0/1/2 header level (a/u/c)
e TEXT code convert from/to EUC
w=<dir> specify extract directory (x/e)
x=<pattern> eXclude files (a/u/c)
無事に実行できた。
使用例
解凍
$ lha x <lzhfile>
圧縮
$ lha a <lzhfile> <file1> <file2> ...
リスト表示
$ lha l <lzhfile>
必要なDLLの確認
lddコマンドで、実行に必要なDLLを確認。
$ cd src/
$ ldd lha.exe
ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffaa33b0000)
KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffaa1410000)
KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ffaa0c00000)
msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ffaa1e80000)
msys2に依存するDLLは使われてないので、Windows上でも lha.exe
をコピーするだけで利用可能。
補足
autoreconf
コマンドが見つからないエラーが出る場合は、下記コマンドで関連パッケージをインストールする。
$ pacman -S msys/libtool
$ pacman -S msys/autoconf
$ pacman -S msys/automake-wrapper
コメント