レンタルサーバー上で7zの実行ファイルを生成 特殊形式圧縮ファイルを解凍・圧縮


スポンサーリンク

はじめに

RAR形式のファイルをレンタルサーバー上で解凍する必要があったため、様々な圧縮形式に対応している「7z」を使えるようにしました。

7zは、7z、ZIP、RAR、LZH、ISO、TAR、DMG、MSIなど、多種多様な圧縮形式に対応しているため、RAR以外を解凍したいという方も参考にしていただけると幸いです。

場合によってはunrarコマンド等を使用することでRARを解凍できますが、私が使用している「スターサーバー」と「Xrea」には備わっていなかったため、自前で7zをコンパイルしました。

この記事では、Linuxサーバーについて解説します。
SSHを使用できることが望ましいですが、PHPのexec関数を使用できるだけでも構いません。

7zのソースファイルを取得

7zipの公式サイトから、ソースファイル群をダウンロードしてきます。
p7zip for Linux(Posix) (x86バイナリ&ソースコード)のダウンロード
と書いてある場所の下のリンクから、ファイルをダウンロードしてください。

ファイルの編集

ダウンロード後、いくつかのファイルに修正を加えます。
/usr/local
という記述が入っているファイルがありますので、それらを適切に修正する必要があります。

p7zip_16.02の場合、install.sh、makefile.commonの2ファイルにありました。
これを、「あなたが自由にファイル作成できるディレクトリ」に変更します。
例えば、ドキュメントルート、ホームディレクトリ等がそれにあたります。/usr/local を、ファイルを自由に作成できるディレクトリに書き換えます。

私の場合、スターサーバー、Xreaを使用しているので、前者では/home/ユーザー名/ よりも下、後者では/virtual/ユーザー名/ よりも下が、自由にいじることができるディレクトリとなっています。
私はファイルをきれいにまとめたかったので、スターサーバーにて/home/ユーザー名/7zc というディレクトリを作成して、このディレクトリを指定しました。

なぜこのような修正を行うかと言うと、レンタルサーバーでは一般にsudoを許可されておらず、/usr/local などのディレクトリは編集不可となっているからです。修正前の状態では、編集できないディレクトリを編集しようとし、エラーとなります。以上の修正を加えることで、編集不可のディレクトリを避けてmakeすることができるということです。

/usr/localという記述が入っているファイルの見つけ方…Visual Studio Codeでソースファイル群のフォルダを開き、Ctrl + Shift + F を押すことで、フォルダ内の全てのファイルを一括で文字列検索することができます。ここで紹介しているバージョンについては記事の通りに行えば十分ですが、新しいバージョンを使用する場合はこの方法をご使用ください。

ファイルのアップロード

ソースファイル群の修正が完了したので、アップロードを行います。私の場合、/home/ユーザー名/7z というディレクトリを作成し、その中にFTPでファイルをコピーしました。

アップロードした全てのファイルを実行可能とすると、次のステップで確実に動作します。例えば、全てのファイルのパーミッションを再帰的に777に変更します。

SSHまたはPHPによる擬似Shellを利用

SSHを使用できるレンタルサーバーの場合(Xreaなど)、そちらを使用してください。

SSHを使用できないレンタルサーバーの場合(スターサーバーなど)、PHPのexec関数を使用した、疑似Shellを使用します。若干不便な部分はありますが、十分動作します。

総合サービス様のコマンド実行ツールを使用させていただきます。
ダウンロードして、gs-cmd.phpファイルをサーバーに設置します。ブラウザから見える場所に設置しましょう。安全のため3日でツールが無効化されるため、注意してください。
gs-cmd.phpにアクセスすると、

このようなフォームが現れます。これがSSHの代わりとなります。ただ、cdコマンドの効力が持続しないため、毎回
cd /home/ユーザー名/7z ; 何らかのコマンド
というようにカレントディレクトリを指定する必要があります。

スポンサーリンク

Makeの実行

SSHまたは疑似Shellの準備が整ったので、Makeを行っていきます。
私はmakefileを/home/ユーザー名/7z/makefile に設置しているため、以下のコマンドでmakeを行います。
cd /home/ユーザー名/7z/ ; make 7z
これでエラーが出ないことを確認した後、
cd /home/ユーザー名/7z/ ; make install
を実行すると、/home/ユーザー名/7zc/bin 内に、7zの実行ファイルが生成されます。
エラーが発生した場合、パーミッションが正しく「実行可能」となっているか確認してください。

生成された7z実行ファイルを実際に実行してみます。私の場合、
/home/ユーザー名/7zc/bin/7z
というコマンドにより、7zの実行ファイルが起動します。
7zの使用法の説明が出力されれば、正常にバイナリファイルが構築されています。

また、
/home/ユーザー名/7zc/bin/7z e hogehoge.rar
というコマンドで、RARファイルを正常に解凍できました。

最後までご覧いただきありがとうございました。

レンタルサーバーでMakeするのは、慣れないとエラーの対処法がわからず、難しく感じてしまいます。1つずつエラー文を読み、1つずつ調べることで強くなれると思います。

last

フォローする