2010-09-01 11 views
5

Ich kann den 'iconv'-Edelstein nicht installieren, weil er seltsame Buildfehler aufweist.
Ich habe die 'libiconv' von der Quelle erstellt und die .h und .dylib in das rvm-Include- und lib-Verzeichnis verlinkt. Wenn ich laufenFehler beim Erstellen von iconv gem auf ruby ​​1.9.2

gem install iconv 

Gem Ausgänge seltsame Buildfehler:

Gebäude nativen Erweiterungen. Das könnte eine Weile dauern ...

ERROR: Error installing iconv: 
    ERROR: Failed to build gem native extension. 

/Users/myusername/.rvm/rubies/ruby-1.9.2-rc2/bin/ruby extconf.rb 
checking for iconv() in iconv.h... no 
checking for iconv() in -liconv... yes 
checking for const of iconv() 2nd argument... no 
creating Makefile 

make 
gcc -I. -I/Users/myusername/.rvm/rubies/ruby-1.9.2-rc2/include/ruby-1.9.1/x86_64-darwin10.4.0 -I/Users/myusername/.rvm/rubies/ruby-1.9.2-rc2/include/ruby-1.9.1/ruby/backward -I/Users/myusername/.rvm/rubies/ruby-1.9.2-rc2/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -fno-common -pipe -o iconv.o -c iconv.c 
In file included from iconv.c:21: 
/Users/myusername/.rvm/rubies/ruby-1.9.2-rc2/include/ruby-1.9.1/ruby/backward/st.h:2:2: warning: #warning use "ruby/st.h" instead of bare "st.h" 
iconv.c:22:20: error: intern.h: No such file or directory 
iconv.c: In function ‘map_charset’: 
iconv.c:139: error: ‘struct RHash’ has no member named ‘tbl’ 
iconv.c:139: error: ‘struct RHash’ has no member named ‘tbl’ 
iconv.c:142: error: ‘struct RHash’ has no member named ‘tbl’ 
iconv.c: In function ‘iconv_create’: 
iconv.c:187: error: ‘struct RString’ has no member named ‘len’ 
iconv.c:188: error: ‘struct RString’ has no member named ‘len’ 
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:190: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:192: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:193: error: ‘struct RString’ has no member named ‘len’ 
iconv.c: In function ‘iconv_fail’: 
iconv.c:328: error: ‘struct RString’ has no member named ‘len’ 
iconv.c: In function ‘iconv_fail_retry’: 
iconv.c:352: error: ‘ruby_errinfo’ undeclared (first use in this function) 
iconv.c:352: error: (Each undeclared identifier is reported only once 
iconv.c:352: error: for each function it appears in.) 
iconv.c: In function ‘rb_str_derive’: 
iconv.c:371: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:371: error: ‘struct RString’ has no member named ‘len’ 
iconv.c:373: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:373: error: ‘struct RString’ has no member named ‘len’ 
iconv.c:374: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c: In function ‘iconv_convert’: 
iconv.c:418: error: ‘struct RArray’ has no member named ‘len’ 
iconv.c:418: error: ‘struct RArray’ has no member named ‘ptr’ 
iconv.c:436: error: ‘struct RString’ has no member named ‘len’ 
iconv.c:437: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:455: warning: comparison of unsigned expression >= 0 is always true 
iconv.c:458: warning: comparison between signed and unsigned 
iconv.c:459: warning: comparison between signed and unsigned 
iconv.c:491: warning: implicit conversion shortens 64-bit value into a 32-bit value 
iconv.c:494: warning: implicit conversion shortens 64-bit value into a 32-bit value 
iconv.c:497: error: ‘struct RArray’ has no member named ‘len’ 
iconv.c:498: error: ‘struct RArray’ has no member named ‘ptr’ 
iconv.c:499: error: ‘struct RArray’ has no member named ‘ptr’ 
iconv.c:501: error: ‘struct RString’ has no member named ‘len’ 
iconv.c:502: error: ‘struct RString’ has no member named ‘ptr’ 
iconv.c:514: warning: implicit conversion shortens 64-bit value into a 32-bit value 
iconv.c: In function ‘iconv_s_convert’: 
iconv.c:615: error: ‘struct RString’ has no member named ‘len’ 
make: *** [iconv.o] Error 1 


Gem files will remain installed in /Users/myusername/.rvm/gems/ruby-1.9.2-rc2/gems/iconv-0.1 for inspection. 
Results logged to /Users/myusername/.rvm/gems/ruby-1.9.2-rc2/gems/iconv-0.1/ext/iconv/gem_make.out 

Wie mache ich es richtig installieren und bauen.

Danke

+3

Ruby 1.9 enthält standardmäßig das Äquivalent zum Juwel iconv. Du solltest den Edelstein nicht brauchen. Die Fehler, insbesondere die Fehler "no member named ...", zeigen an, dass das Gem nicht mit Ruby 1.9 kompatibel ist (viele der Strukturen für die eingebauten Typen wurden, naja, restrukturiert). –

Antwort

1

Ich denke ich habe herausgefunden warum! Sieht so aus, als ob das Iconv-Juwel noch nicht 1.9.x-kompatibel ist, also wird es nicht gebaut.

3

Warum/wie hast du iconv gebaut? Und noch wichtiger, wo hast du es installiert? Weil ich finde, dass Gem das System libiconv finden kann, aber die Header nicht findet, weil sie nicht in den normalen Suchpfaden sind.

Einige Vorschläge:

Der einfachste Weg, wahrscheinlich MacPorts verwenden und installieren ist iconv mit, dass: sudo port install libiconv

Oder wenn Sie wollen/müssen Sie Ihre eigene Version installieren, stellen Sie sicher, dass es in der /usr/local installiert wird Teilbaum (es ist für Software gedacht, die ein Administrator kompiliert hat, was genau du tust). Sie sollten also mit /usr/local/include/iconv.h und /usr/local/lib/libiconv.dylib enden.

1

Ich habe genau das gleiche Problem. Mein frisch installierten OS X 10.6 haben nicht iconv, so dass ich heruntergeladen iconv von http://ftp.gnu.org/gnu/libiconv/ und lief

./configure 
make 
sudo make install 

Installed fein, iconv.h und libiconv.dylib sind, wo sie eigentlich sind sein, aber gem Installation rvm gem install iconv scheitert mit den gleichen Fehlern.

Ich habe nicht genug C-Fu in mir, um das Problem weiter zu interpretieren, aber ich würde vermuten, dass dies das Ergebnis einer Art Versionskonflikt sein könnte? Vielleicht erwartet der Edelstein iconv eine ältere Version von libiconv? Ich würde gerne eine Bestätigung in beide Richtungen damit bekommen, bevor ich mein System mit zufälligen Versionen von iconv betrachte.

8

Für was es wert ist - ich konnte 1.9.2 p136 mit RVM und Verknüpfung zu libiconv ich mit Homebrew installiert bauen. Dies erlaubte mir, das JSON-Juwel ohne Probleme zu benutzen.Ich schrieb einen kurzen Blog-Post über es hier: http://www.v25media.com/blog/read/forcing_ruby_1_9_2_via_rvm_to_use_iconv aber das Wesentliche ist:

$ brew install libiconv 
$ rvm remove 1.9.2 
$ rvm install 1.9.2 --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1 
+2

-1, Sie sollten Ruby nicht nur dafür neu erstellen müssen. – user2398029

+0

@louism nehmen Sie es mit den Ruby Betreuern auf, nicht ich. –

+0

Ich hätte sagen sollen "du musst nicht" ... schau dir die anderen Antworten an. – user2398029

6

In meinem Fall, ich war nur die Installation von iconv für mechanize so konnte ich Skript

Ich betreibe schon libiconv installiert w/brauen

gem install iconv -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1

herp Derp

0

Unter Lion diese beiden Linien arbeiten:

Gebräu installieren libiconv

Gebräu Link libiconv

-1

Versuchen Sie, die iconv rvm Paket zu installieren und dann neu installieren Rubin 1.9.2:

$ rvm pkg install iconv 
$ rvm reinstall 1.9.2 --with-iconv-dir=$rvm_path/usr 
0

Eine Kombination aus den Vorschlägen @DarkDust und @Vee macht es für mich:

sudo port install libiconv 
gem install iconv -- --with-iconv-dir=/opt/local 

Sie können

port contents libiconv 

zu diesem libiconv jetzt unter /opt/local/include/ und /opt/local/include/lib laufen installiert ist. Ich sollte auch erwähnen, dass ich Ruby 1.9.3p286 verwende.

Verwandte Themen