今日も元気にテクニカル

技術情報書きたいけど本ブログに書きたくないからこんな名前になりました。

rubyをソースからインストール→アンインストール

勉強のためにapt-getではなくソースからrubyをインストールしようと試みた。

Ruby Install Guide::UNIX全般

% wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.6-p114.tar.gz
% tar -xvzf ruby-1.8.6-*.tar.gz
% cd ruby-1.8.6-*
% ./configure
% make
% su
# make install
# exit
% make clean

これでrubyが/usr/local/bin以下にインストールされた。続いてrubygemsのインストールも同じようにソースから。んで、取り合えずgem install rakeしようと思ったらエラーが…。

$ gem install rake
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- zlib (LoadError)
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/package.rb:10
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/format.rb:9
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:11
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:3
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:4
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:140:in `load_and_instantiate'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:65:in `[]'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:118:in `find_command'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:104:in `process_args'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:75:in `run'
	from /usr/local/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:39:in `run'
	from /usr/local/bin/gem:24

zlibが入ってないからだなぁとかいろいろ試したんだがどうにも復旧せず、諦めてapt-getでrubyとrubygemをインストールすることにした。

その後、同じようにgem install rakeとすると同じエラーが…(汗 どうやら/usr/local/binの方を優先して読みにいっているようです。

$ which -a ruby
/usr/local/bin/ruby
/usr/bin/ruby
$ which -a gem
/usr/local/bin/gem
/usr/bin/gem
$ set | grep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

ふむふむ。

  1. /usr/local/sbin
  2. /usr/local/bin
  3. /usr/sbin
  4. /usr/bin
  5. /sbin
  6. /bin
  7. /usr/games

の順番なのね。これを入れ替えるのはまずそうだし、フルパス打てばいいんだけど面倒なので/usr/local/bin以下のrubyをアンインストールすることにする。

調べてみた。

調査の結果、ソースからインストールしたアプリをアンインストールするのは面倒な作業だということが分かりました。

make unintallが使えない=ほとんどの場合は、Makefileの中身を見るorログを確認してインストールしたファイルを手動で消去する。あるいはこういうツールを使うのでもいいらしい。

make uninstallってほとんどないですよね。だからCheckInstall - devworks
CheckInstall Homepage

あ、けどこれCheckInstallで導入したやつしかアンインストールできないんだよね(汗 もう面倒なので/usr/local/bin以下のファイル全消去することにします。

$ ls -al
合計 2044
drwxr-xr-x  2 root root    4096 2008-11-27 01:45 .
drwxr-xr-x 10 root root    4096 2008-10-30 07:53 ..
-rwxr-xr-x  1 root root    3882 2008-11-27 01:36 erb
-rwxr-xr-x  1 root root     788 2008-11-27 01:45 gem
-rwxr-xr-x  1 root root     379 2008-11-27 01:36 irb
-rwxr-xr-x  1 root root    1543 2008-11-27 01:36 rdoc
-rwxr-xr-x  1 root root    1491 2008-11-27 01:36 ri
-rwxr-xr-x  1 root root 2055069 2008-11-27 01:36 ruby
-rwxr-xr-x  1 root root     153 2008-11-27 01:36 testrb
$ sudo rm -rf *
$ ls -al
合計 8
drwxr-xr-x  2 root root 4096 2008-11-29 18:57 .
drwxr-xr-x 10 root root 4096 2008-10-30 07:53 ..

きれいさっぱりw