web-dev-qa-db-ja.com

Rubyでgemをインストールできない:「UTF-8の無効なバイトシーケンス」

マウンテンライオンを使用しています。 Ruby最初にRVMで、次にrbenvでインストールしました。which Rubyで最新のものを実行していることを確認できます。これは、1つを正しく指します。 rbenvでインストールされます。

gem gemはインストールされません。常に同じエラーがスローされます(常に同じファイルにあるとは限りませんが、splitで同じエラーが発生します:

Users/Macbook/.rvm/rubies/Ruby-1.9.3-p448/lib/Ruby/1.9.1/mkmf.rb:1357:in `split': invalid byte sequence in UTF-8 (ArgumentError)
    from /Users/Macbook/.rvm/rubies/Ruby-1.9.3-p448/lib/Ruby/1.9.1/mkmf.rb:1357:in `find_executable0'
    from /Users/Macbook/.rvm/rubies/Ruby-1.9.3-p448/lib/Ruby/1.9.1/mkmf.rb:1564:in `pkg_config'
    from extconf.rb:15:in `<main>'

運が悪かったので、.profileでこれらのエクスポートを設定しようとしました。

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

また、bashをbrewで更新し、chshでアクティブ化しました。 iTerm2もUTF-8エンコーディングで正しく構成されています。

私は今他に何をすべきか分かりません。 XCode4.6.3を使用しています。

2
Cristian

この問題は、PATHenvironment変数(.bash_profile.profile.bashrc)の設定に関連するすべてのファイルをクリーンアップしてから、rvmagainをインストールすることで解決されました。 。 echo $PATHを実行すると、バンドラーによるPATHの処理が中断された奇妙な文字が明らかになりました。

0
Cristian

64ビットのCygwin、Ruby 2.0.0およびgem2.4.1があり、同じ問題が発生していました。gem install ...gem update、すべてが "エラー:gemの実行中に...(ArgumentError)UTF-8 "で無効なバイトシーケンス。

また、すべてのロケールを「en_US.UTF-8」に設定しました。

LANGを空の文字列または「C.BINARY」に設定すると役立つはずだとどこかで読んだことがありますが、そうではありませんでした。助けて。しかし、実験を始めるのは良いヒントでした。

最後に、LANGLC_ALLの両方を空の文字列に設定することで解決しました。他のすべてのロケール環境変数(LC_CTYPEなど)は自動的にに設定されましたそれによる「C.UTF-8」、LANGLC_ALLは空のままでした。

これで、gemがついに機能します。

同じ理由があったと思います。ドットファイルを「クリーンアップ」すると、おそらくロケールの値が変更されます。