Question

Mise à jour: Consultez cette question complémentaire : Gem Update sous Windows – est-elle cassée ?


Sous Windows, quand je fais ceci :

gem install sqlite3-ruby

J'obtiens l'erreur suivante :

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --platform Win32
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.


Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out

La même chose se produit avec la gemme hpricot.Il me semble que je me souviens très bien de ces gemmes installées sur des gemmes <1.0, mais maintenant je suis sur 1.2.0, les choses ont mal tourné.

J'ai aussi essayé ceci :

gem install sqlite3-ruby --platform Win32

Inutile de préciser que cela ne fonctionne pas non plus (même erreur)

Est-ce que quelqu'un sait ce qui se passe ici et comment résoudre ce problème ?


Mise à jour: Consultez cette question complémentaire : Gem Update sous Windows – est-elle cassée ?

Était-ce utile?

La solution

Comme Nathan le suggère, cela semble être lié au fait que les dernières versions des gems sqlite3-ruby et hpricot ne semblent pas avoir de versions Windows.Voici ce qu'il faut faire face à cette situation (notez que le nom de la gemme est automatiquement ajouté avec un caractère générique, vous pouvez donc simplement taper SQL et obtenez une liste de toutes les gemmes commençant par SQL):

$ gem list --remote --all sqlite

*** REMOTE GEMS ***

sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1)
sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2)
sqlite3-ruby (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0)

Ensuite, vous pouvez choisir la version que vous souhaitez installer :

gem install sqlite3-ruby -v 1.2.3

Pour réussir l'installation de hpricot, j'ai fait ceci :

gem install hpricot -v 0.6

Ce qui est ennuyeux, c'est de faire un gem update essaie de mettre à jour les gemmes vers leurs dernières versions, cassées sous Windows.Lorsque la routine de mise à jour rencontre une erreur, elle vous exclut de tout le processus.Il existe une solution (piratée) à ce problème ici.

Alors, ce problème est-il un bug dans les gemmes ?Gems ne devrait-il pas détecter automatiquement la plateforme et installer la dernière version compatible ?

Autres conseils

J'ai eu le même problème sur Ubuntu, cela a résolu le problème pour moi :

http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.ruby/2008-08/msg00339.html

Est-il possible que la version la plus récente n'ait pas encore été portée sur Win32 ?Étant donné que cette gemme particulière a des liaisons avec le code compilé, elle nécessiterait une gemme spécifique à la plate-forme.Si je force l'installation de la version 1.2.3 plutôt que de la version 1.2.4 actuelle, la version spécifique à la plateforme s'installe, mais lorsque j'autorise gem à essayer d'installer la version actuelle, j'obtiens la version générique 1.2.4 (dans le fichier gems dossier de bibliothèque, il lui manque le suffixe -x86-mswin32 que les autres dossiers sqlite3-ruby ont dans leurs noms.

Peut-être que quelqu'un d'autre pourra expliquer comment gem gère les gemmes spécifiques à la plate-forme.Des gemmes distinctes sont-elles téléchargées pour chaque plate-forme et le logiciel de gemmes sélectionne-t-il celle à extraire ?

d'abord depuis sqlite.org (http://www.sqlite.org/download.html)
télécharger ->
Binaires précompilés : sqlite-dll-win32-x86-3071700.zip
et code source : sqlite-autoconf-3071700.tar.gz
puis extrayez comme :

-include
    --sqlite3.h
    --sqlite3ext.h
-lib
    --shell.c
    --sqlite3.c
    --sqlite3.def
    --sqlite3.dll

dernier joyau d'installation comme :

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include  
 --with-sqlite3-lib=path\to\lib --no-ri --no-rdoc

Bonne chance!

J'ai également rencontré ce problème.Il faut savoir que la différence entre 1.2.3 et 1.2.4 n'est pas significative.Voici les 1.2.4.notes de version:

Nom de la version :1.2.4

Remarques:Cette version met à jour uniquement le fichier C généré pour refléter les modifications de compatibilité apportées au fichier SWIG.Les versions binaires (par exemple, Windows) ne sont pas affectées et n'ont besoin d'aucune mise à jour.En général, vous n'aurez pas besoin de cette mise à jour, sauf si vous utilisez une version de Ruby avant 1.8.6.(source: 1.2.4.notes de version)

J'espère que cela aidera les autres !

J'ai eu le même problème sous Windows et j'ai installé MinGWhttp://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/downloadet le problème a disparu :-)

C:> GEM INSTALLER HPRICOT a installé avec succès HPRICOT-0.8.2-X86-MSWIN32 1 GEM installé Installation de la documentation RI pour HPRICOT-0.8.2-X86-MSWIN32 ...Installation de la documentation RDoc pour hpricot-0.8.2-x86-mswin32...

C:> GEM INSTALLER RUBY-POSTGRES A installé avec succès Ruby-Postgres-0.7.1.2006.04.06-X86-Mswin32 1 GEM installé Installation de la documentation RI pour Ruby-Postgres-0.7.1.2006.04.06-x86-mswin32 ...Installation de la documentation RDoc pour ruby-postgres-0.7.1.2006.04.06-x86-mswin32...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top