インストールしているアプリケーションのdiffをとる
そろそろ、環境をきれいにしようかなと思ったので、てきとーに書いた。
使いかた
- 1回実行
- 現在インストールしているアプリの名前が入ったファイルが生成される
- (デフォルトでは「orignal_apls.list」
- orignal_apls.listと今回のスクリプトを別の環境に持っていく
- もう一度実行
- 比較結果が表示される。
使用した結果*1
===new enviroment only=== #新しく追加したアプリ gom ipython libgnome-desktop-2 libnautilus-extension1 libtotem-plparser1 totem-gstreamer totem-mozilla wmctrl ===orig enviroment only=== #もう消してしまったアプリ uim-el xbindkeys-config
コード
#!/usr/bin/ruby $orig="orignal_apls.list" module Apl_list_maker module_function def use_dpkg result=[] `dpkg -l`.each_line do |line| result << $1 if line =~ /^ii\s+(.+?)\s/ end result end def make_orig_apllist filename=nil filename = filename || $orig puts "making #{filename}(orignal apl-list)" File.open(filename, "w") do |wf| wf.puts use_dpkg end end end class Comparer include Apl_list_maker def initialize orig=nil @orig_list = File.read(orig || $orig).split("\n") @present_list = use_dpkg end def intersection @intersection ||= @orig_list & @present_list end def present_only_apls @present_list - self.intersection end def orig_only_apls @orig_list - self.intersection end def outputs puts "===new enviroment only===" puts present_only_apls puts "===orig enviroment only===" puts orig_only_apls end end def runnable? file (File.exist? file)? true : false end #################Main################### orig=ARGV[0] || $orig if runnable? orig comparer = Comparer.new(orig) comparer.outputs else Apl_list_maker.make_orig_apllist(orig) puts "change enviroment and try-again." end
*1:それぞれの環境で出力結果は変わります><