Linuxで7Zip | ガラス越しの世界

ガラス越しの世界

とまぁ色々あるよなないよなでぼちぼち更新。
たまには技術情報もあるよw

はい、こんばんは。

割と使い回しの効く技術情報があったので今日3件目の投稿w

Linuxで7Zip形式の圧縮ファイルを扱う方法です。
しかも、インストール無しで。

以下のサイトからp7zipっていうののいrpmファイルをダウンロードして、目的のLinuxサーバーにアップロードします。

http://pkgs.repoforge.org/p7zip/

今回は64bitのrpmファイルを使用しました。
んで、Linuxサーバーで以下のコマンドを実行。

rpm2cpio [rpmファイル] | cpio -id

こうすると、rpmファイルの内容がカレントディレクトリに展開されます。
ちなみに、中身がどんなファイルか確認するには以下のコマンドを実行。

rpm2cpio [rpmファイル] | cpio --list

今回の場合は、展開のコマンドを実行するとカレントディレクトリにusrフォルダができます。
中身をたどると[カレントディレクトリ]/usr/7zip/bin/7zaっていうシェルがあります。
[カレントディレクトリ]/usr/7zip/bin/execbin(だったかな?(;´∀`))っていうディレクトリにプログラム本体とSOが居ます。
binディレクトリの7zaはexecbin(だったかな?(;´∀`))の実行モジュールを呼んでいます。
呼ぶときに/usr/7zipをフルパスで指定しているので、インストールしていない場合はこのままだと呼び出せません。
execっていうコマンドで呼んでいる/usr...を展開したディレクトリにしてあげて、SOを読み込まないといけないので、以下の一文を実行モジュール呼び出しの前に追加してあげます(これが必要かどうかはわかりません。なくても動くかも。でも動かない可能性の方が高い気がします。指定してあげないとSOのありかがわからないので)。

export LD_LIBRARY_PATH=[展開したディレクトリ]/usr/7zip/execbin(だったかな?(;´∀
`))

要するに、SOが入っているディレクトリを指定してあげます。
これで準備完了。

パスを指定してusr/7zip/bin/7zaを実行してあげれば動きます。
ちなみに今回の用途は7zip形式のファイルの解凍で、以下のコマンドで解凍できました。

[省略]/usr/7zip/bin/7za x [圧縮ファイル名]


という感じ。
今回のミソはrpmファイルをインストールせずに展開する小ワザですね。
結構役に立っています。
今週だけで2回ほど役に立ちました。
今回の7zipと、前回は。。。なんだったかな。。。えぇと、MySQL Client Compat Componentってやつです。
Shared Libraryってのがインストールされている場合はインストールしないでください、って注意書きがあって。
でもインストールされてなさそうだしSOが必要だし。。。なので、rpmファイルを展開して配置したのでした。
その手順については省略します。
ちなみに。
システム全体で使うSOの配置には、任意のディレクトリに保存して、設定ファイルでパスを指定して、ldconfigってコマンドを叩く必要があります。
詳しく知りたい人はコメントください。

今回はこのくらいで。

にゃー。