2008-11-29
■ [Ubuntu][ruby]rubyをソースからインストール→アンインストール

勉強のためにapt-getではなくソースからrubyをインストールしようと試みた。
% 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
ふむふむ。
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
の順番なのね。これを入れ替えるのはまずそうだし、フルパス打てばいいんだけど面倒なので/usr/local/bin以下のrubyをアンインストールすることにする。
調べてみた。
調査の結果、ソースからインストールしたアプリをアンインストールするのは面倒な作業だということが分かりました。
make unintallが使えない=ほとんどの場合は、Makefileの中身を見るorログを確認してインストールしたファイルを手動で消去する。あるいはこういうツールを使うのでもいいらしい。
make uninstallってほとんどないですよね。だからCheckInstall - devworks
あ、けどこれ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
その他参考情報
■ [Ubuntu][fstab]/etc/fatabで他PCのドライブをマウントするとき、IDとpasswordを外部ファイル化する。

/etc/fstabで起動時に別PCのドライブを自動的にマウントさせにいくことが可能です。
$ ls -al /etc/ | grep fstab -rw-r--r-- 1 root root 597 2008-11-26 23:29 fstab //192.168.1.101/D /home/user01/D cifs username=user01,password=PASS01,codepage=cp932,iocharset=utf8,defaults 0 0
とはいえ/etc/fstabはユーザーにも読み取り権限がありパスワードが丸見えなので、クレデンシャルオプションを使用して別ファイルにパスワードを記録します。
//192.168.1.101/D /home/user01/D cifs credentials=/etc/smbpasswd,codepage=cp932,iocharset=utf8,defaults 0 0 $ cat /etc/smbpasswd username=user01 password=PASS01
んで外部ファイルのアクセス権限を操作し、rootしか読めないようにする。
$ sudo chown root:root /etc/smbpasswd $ sudo chmod 0600 /etc/smbpasswd $ ls -l /etc/smbpasswd -rw------- 1 root root 35 2008-11-29 21:55 /etc/smbpasswd