質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

2回答

7877閲覧

rubyスクリプト実行時に発生した”cannot load such file -- iconv (LoadError)”の解決方法について

teketeke

総合スコア46

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/11/16 08:20

お世話になっています。

CentOS 6.7 上で、以下のサイトにあるrubyスクリプト(aws_health_check.rb)を実行させ、
Zabbixで監視をさせてみたかったのですが、
feedtoolsをインストールしても、以下のエラーになり、スクリプトが実行できません。
このエラーの解決するにはどうしたらよいのでしょうか。

調べたところ、iconvはruby2.0から廃止されたらしかったので、
ruby1.9.3をインストールした環境を作りましたが、別のエラーで実行できませんでした。

http://d.hatena.ne.jp/ike-dai/20130119/1358566620

・手動実行時エラー内容(ruby2.0)
~~~

./aws_health_check.rb

The Iconv library does not appear to be installed properly. FeedTools cannot function properly without it.
Unexpected LoadError, it is likely that you don't have one of the libraries installed correctly.
/usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require': cannot load such file -- iconv (LoadError) from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in require'
from /usr/local/lib/ruby/gems/2.2.0/gems/feedtools-0.2.29/lib/feed_tools.rb:104:in <top (required)>' from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in require'
from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in rescue in require' from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in require'
from ./aws_health_check.rb:4:in `<main>'
~~~

・zabbix実行時エラー内容(ruby2.0)
~~~

sudo -u zabbix ./aws_health_check.rb

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require': no such file to load -- feed_tools (LoadError) from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in require'
from ./aws_health_check.rb:4
~~~

・手動実行時エラー内容(ruby1.9.3)
~~~

./aws_health_check.rb

/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require': iconv will be deprecated in the future, use String#encode instead. /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require': /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/uri_helper.rb:43: invalid multibyte char (US-ASCII) (SyntaxError)
/usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/uri_helper.rb:43: invalid multibyte char (US-ASCII)
/usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/uri_helper.rb:43: syntax error, unexpected $end, expecting ')'
if IDN::Idna.toASCII('http://www.詹姆斯.com/') ==
^
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require' from /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/retrieval_helper.rb:25:in <top (required)>'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require'
from /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/feed.rb:27:in <top (required)>' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in require' from /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools.rb:170:in <top (required)>'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in require' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in rescue in require'
from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
~~~

ruby2.0 の環境は以下の通りです。
※ruby1.9.3 の環境は今確認できてません。

cat /etc/redhat-release

CentOS release 6.7 (Final)

ruby -v

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

find / -name feed_tools

/usr/local/lib/ruby/gems/2.2.0/doc/feedtools-0.2.29/ri/lib/feed_tools
/usr/local/lib/ruby/gems/2.2.0/gems/feedtools-0.2.29/lib/feed_tools

gem -v

2.4.5.1

gem list

*** LOCAL GEMS ***
activemodel (4.2.4)
activerecord (4.2.4)
activesupport (4.2.4)
arel (6.0.3)
bigdecimal (1.2.6)
builder (3.2.2)
feedtools (0.2.29)
i18n (0.7.0)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
test-unit (3.0.8)
thread_safe (0.3.5)
tzinfo (1.2.2)
uuidtools (2.1.5)

※rubyとfeed_toolsのインストールを以下の手順で実施したのですが、手順がおかしかったのでしょうか。

・ruby確認

yum list installed | grep ruby

※表示なし

・必要パッケージのインストール

yum -y install gcc zlib-devel openssl-devel sqlite sqlite-devel mysql-devel readline-devel libffi-devel

・ソースコードのダウンロード

cd /usr/local/src

wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2. …

tar zxvf ruby-2.2.3.tar.gz

cd ruby-2.2.3

./configure

make

make install

・rubyバージョン確認

ruby -v

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

・シンボリックリンク作成

ln -s /usr/local/bin/ruby /usr/bin/ruby

・feedtoolsインストール

yum install rubygems

yum install ruby-devel

gem install feedtools

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。
私も同Rubyを実行しようとして同じ事象で足踏みしています。
もし解決方法が見つかっていましたら教えてください。

投稿2016/01/19 08:31

zo8no

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zo8no

2016/01/20 00:41

状況と情報、ありがとうございます。 頂いたサイトを参考に、こちらも方向転換してみます。 改めてありがとうございました。
guest

0

おそらくは、magic comment(Ruby 1.9まではUS-ASCII以外の場合必須、Ruby 2.0以降はUTF-8以外の場合必須)の書き忘れだと思います。

スクリプトの1行目に、# coding:utf-8 というコメントを書き足してみてください。

投稿2015/11/16 08:38

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teketeke

2015/11/17 12:28

回答いただきありがとうございます。 ruby2.0でスクリプトの頭を以下に変更し試しましたが、内容は変わりませんでした。 ruby1.9は今触れないので、明日試してみます。 ~~~ # coding: utf-8 require 'rubygems' require 'feed_tools' ~~~ □実行 # ruby aws_health_check.rb The Iconv library does not appear to be installed properly. FeedTools cannot function properly without it. Unexpected LoadError, it is likely that you don't have one of the libraries installed correctly. /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- iconv (LoadError) from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /usr/local/lib/ruby/gems/2.2.0/gems/feedtools-0.2.29/lib/feed_tools.rb:104:in `<top (required)>' from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `require' from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `rescue in require' from /usr/local/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in `require' from aws_health_check.rb:3:in `<main>'
teketeke

2015/11/18 04:23

ruby1.9環境でも試してみましたが、内容は変わりませんでした。 ~~~ [root@test001 externalscripts]# head aws_health_check.rb # coding: utf-8 require 'rubygems' require 'feed_tools' HOST = ARGV[0] ~~~ □実行 # ruby aws_health_check.rb /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead. /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/uri_helper.rb:43: invalid multibyte char (US-ASCII) (SyntaxError) /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/uri_helper.rb:43: invalid multibyte char (US-ASCII) /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/uri_helper.rb:43: syntax error, unexpected $end, expecting ')' if IDN::Idna.toASCII('http://www.詹姆斯.com/') == ^ from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/helpers/retrieval_helper.rb:25:in `<top (required)>' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools/feed.rb:27:in `<top (required)>' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/feedtools-0.2.29/lib/feed_tools.rb:170:in `<top (required)>' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `require' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require' from /usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require' from aws_health_check.rb:3:in `<main>'
maisumakun

2015/11/18 04:59

このfeed_tools側にmagic commentがないので、このままではRuby 1.9では動きません。そして、GitHub(https://github.com/cradle/feedtools/blob/master/CHANGELOG)を見ても、2008年で開発が止まっているようです。 とりあえずgem内のファイルに書けば動くかもしれませんが、Ruby 1.9で動かせばすぐ気づくレベルの問題が放置されていることを考えると、別なgemに乗り換えるのが正解かもしれません。
teketeke

2015/12/10 08:34

回答頂きありがとうございます。 時間を見つけていろいろ試してみたのですが、いまだに動かず,,, ※そもそも私がrubyとかgemとか良くわかってないのですが, ちょっと別の方法を考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問