ライブラリに加えた変更を、簡単に元に戻す方法

概要

ソフトウェア開発をしていると、システムにインストールされているライブラリを変更したいときがあります(スクリプト言語を使っている場合はとくに)。たとえば、挙動を確かめるためにprint文を加える、といった場合です。しかし、システムのライブラリを変更したあと、またすべてを元に戻せるか、という心配があります。この記事では、その心配を解消する方法について述べます。

方法

次の方法でライブラリを変更します。

1. 元のファイルを.origという拡張子をつけて保存します。

$ sudo cp foo foo.orig

2. ライブラリを変更し、目的を達成します。

3. 以下のRubyスクリプトorig.rbを実行します。

# ruby

require "fileutils"
require "find"

now = Time.now.strftime("%Y%m%d%H%M%S")

Find.find(ARGV[0]) do |path|
  next if /\A(.*)\.orig\Z/ !~ path

  FileUtils.mv($1, "#{$1}.#{now}")
  FileUtils.mv(path, $1)
end

# vim: tabstop=2 shiftwidth=2 expandtab

実行する際、ディレクトリを指定します。

$ sudo ruby orig.rb /path/to/dir

上のスクリプトは、指定されたディレクトリの下にあるファイルについて、

  1. 現在のファイルを、日時をつけた名前に変更する。
  2. .origファイルを、元のファイル名に戻す。

とします。

非常に簡単なスクリプトですが、これがあるおかげで、システムのライブラリを躊躇なく変更できます。

上のスクリプトは、http://nekomimists.ddo.jp/~tom/tools/orig.rbからダウンロードできます。