Hatena::Groupmylinux

今日も元気にlinux

2008-11-29

[][]rubyをソースからインストールアンインストール 21:04 rubyをソースからインストール→アンインストール - 今日も元気にlinux を含むブックマーク はてなブックマーク - rubyをソースからインストール→アンインストール - 今日も元気にlinux rubyをソースからインストール→アンインストール - 今日も元気にlinux のブックマークコメント

勉強のために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

その他参考情報

Jewel-mmo開発日記

no title

[][]/etc/fatabで他PCのドライブをマウントするとき、IDとpasswordを外部ファイル化する。 00:05 /etc/fatabで他PCのドライブをマウントするとき、IDとpasswordを外部ファイル化する。 - 今日も元気にlinux を含むブックマーク はてなブックマーク - /etc/fatabで他PCのドライブをマウントするとき、IDとpasswordを外部ファイル化する。 - 今日も元気にlinux /etc/fatabで他PCのドライブをマウントするとき、IDとpasswordを外部ファイル化する。 - 今日も元気にlinux のブックマークコメント

/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

参考文献

Electronic Genome - /etc/fstabのユーザ名とパスワードを外部ファイル化する

ChietherChiether2012/08/09 17:29さて、make installからのアンインストール。 今更ながらのコメントですが。
私の環境(1.8.7, 1.9.3)での確認ですが .installed.list というファイルができているはずです。