ファイル復活のツール作成
-srpm に自分の好きなオプションをつけて、独自のrpmを作る-

(Vine 2.1専用)

はじめに。

linuxを使っている人が助手の人に「ファイル消しちゃったんですけどー」と、 泣き付いていた。 僕もいつそうなるかも分からない。 ということで、備えをしておこうと思い立った。

調査

mc(Midnight Commander)というツールに、そのような機能が、 保証はされていないもののついているらしいと、webを漁っていたら 分かった。 僕が使っているlinuxのディストリビューションvineには、 すでにrpmの形式で提供されているのだが、 僕の欲しかったオプションはつけられていなかった。 (さすが、安定指向)

ということで、ソースを持ってきて、自分でオプションをつけてコンパイルし直さ なければならない。


コンパイル

まず、mc-4.5.50-0vl3.src.rpmをとってくる。

一般ユーザーで

% rpm -ivh mc-4.5.50-0vl3.src.rpm
とすると,ホームディレクトリ以下の~/rpm/SOURCES,と~/rpm/SPECSのディレク トリに 内容が解凍される。

その後,SPECS/mc-vl.spec の内容を好みに合わせて書き換える。 僕の場合は、configureオプションを加えたかったので、 その部分を見よう見まねで「--with-ex2undel」オプションを追加した。 「~/rpm/SOURCES」以下にはドキュメントも有ったので、それも参考にすると良い でしょう。コンパイルオプションも、「./configure --help」などとすれば、 見ることもできるし。

あと、他のものと区別がつくように、 コメントの部分とReleaseを書き換えた。

rpmファイルを作るために、

% rpm -bb mc-vl.spec
を実行。 これで本当は完成のはず。

僕の場合、エラーが出た。何故?


理由が分かった!!

コンパイルに必要なライブラリが入っていなかったためのようだ。 「e2fsprogs-devel-1.18-5vl1.i386.rpm」をとりあえず持ってきて、 インストールする。

まだだめ。 「gnome-libs」が必要らしい。 そのためには、「esound-devel」, 「ORBit」が必要で、 「esound-devel」 のためには、「audiofile-devel」が必要ならしい。

とりあえず、全ていれてみた。 もう一度、rpm -bbをしてみる。

できたっ! 少し感動。

完成したやつを、ここに載せておきます。 ちなみに、gmcとは、gnomeのGUIフロントエンドを追加したもの。 mc-4.5.50-0v13k.i386.rpm/ gmc-4.5.50-0v13k.i386.rpm

(注意 Vine-2.1で作成したものです。もしかしたら、他のディストリビューショ ンでは正常に動作しないかも知れません。上の経過を参考にして、ご自分でチャレ ンジしてみてください。ちなみに、vine-2.0にインストールしてみたら、 そこそこ動いていました。もしかしたら大丈夫かも?保証はしませんけど。)


蛇足

その後のインストールの仕方。
rpm -Uvh gmc-4.5.50-0v13k.i386.rpm

ファイル復活の手順

何よりも始めに、消してしまったファイルが存在していたパーティションを全て 書き込み不許可にする。
例えば、消したファイルが/homeにあり、 /homeは/dev/hda3にマウントされていた場合、 /homeをroot権限で書き込み不可にする。 これは、早ければ早いほどよい。 その方法は、

# telint 1     ランレベル1に移行する。
# mount -n -o,remount /home

次に、mcを起動する。

# mc 

「F9」を押し、プルダウンメニューの「コマンド(C)」をひらき、 その中の、「ファイルの復活」を選択する。 検索するデバイス名を聞かれるので、「hda3」と入力する。 このとき、かつてのファイル名は表示されないので、 更新時間を見て推測をし、「F5」を押す。
ファイル名と保存先のディレクトリを聞かれるので、答える。 この時、保存先のディレクトリは別パーティションでなければならない。


参考にしたページ