
Ich verwende Ruby 1.9.3 auf CentOS 5.3. Ich habe es installiert, indem ich Ruby 1.9.3 zusammen mit libyaml aus dem Quellcode kompiliert habe. Ich verwende rbenv auch zur Versionsverwaltung, daher habe ich die kompilierte Installation in ~/.rbenv/versions/1.9.3-p286 abgelegt, wo rbenv die Versionen von Ruby speichert.
Alles hat prima funktioniert und ich installiere jetzt Gems. Ein bestimmtes Gem lässt sich jedoch noch nicht installieren, was mich vermuten lässt, dass mir möglicherweise eine Abhängigkeit fehlt. Es ist ein internes Gem, also nicht auf RubyGems aufgeführt, aber hier ist die Ausgabe einer Gem-Installation:
Building native extensions. This could take a while...
ERROR: Error installing vmc-helper:
ERROR: Failed to build gem native extension.
/home/fs/.rbenv/versions/1.9.3-p286/bin/ruby extconf.rb
checking for expat.h... no
checking for xmlparse.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Ich bin ein Debian-Typ und habe daher nicht so viel Erfahrung mit Redhat/RPM-Paketen und so weiter. Daher bin ich mir nicht sicher, welche Abhängigkeiten auf meinem System fehlen, um dieses Gem zu installieren.
Kann mir jemand sagen, welche Pakete ich für die oben fehlenden Header-Dateien installieren muss?
Antwort1
Suchen Sie nach den fehlenden Dateien:
checking for expat.h... no
checking for xmlparse.h... no
Suchen Sie nun yum
mit nach dem Paket, das diese Dateien bereitstellt:
yum provides */expat.h
Sie werden hier mehrere Pakete sehen. Das gesuchte Paket enthält, /usr/include/expat.h
da dies das Standard-Include-Verzeichnis ist. Installieren Sie also das angegebene Paket:
yum install expat-devel
Wiederholen Sie den Vorgang für die andere Datei:
yum provides */xmlparse.h
Hier werden Sie scheitern und den Fehler erhalten No matches found
. In diesem Fall müssen Sie entweder den Quellcode des Gems lesen oder den Entwickler kontaktieren, um herauszufinden, welches Paket er/sie für Sie vorgesehen hat. Es sollte in der Dokumentation des Gems als Systemanforderung aufgeführt sein (falls der Entwickler sich die Mühe gemacht hat, eine Dokumentation zu schreiben).