web-dev-qa-db-fra.com

"gem install" et "bundle install" n'installent pas les dépendances gem après la suppression manuelle de gem. Comment informer Rubygems que des gemmes ont été supprimées manuellement?

J'essayais de construire capybara-webkit sur XP. J'ai suivi ceci instruction. Il dit de faire bundle install:

 $ cd Ruby193\capybara-webkit
 $ bundle install

Cette commande a installé de nombreuses gemmes. Malheureusement, je n'ai pas pu construire capybara-webkit, j'ai donc supprimé manuellement toutes les gemmes qu'il avait installées. Après cela, j'ai des problèmes avec gem install et bundle install - ces commandes considèrent les gems supprimés comme installés sur mon ordinateur et ne les installent pas s'il s'agit de dépendances d'autres gemmes que je souhaite installer maintenant.

S'il vous plaît voir un exemple. Je fais bundle install pour capybara-webkit et il dit que toutes les gemmes sont présentes:

C:\RailsInstaller\Ruby1.9.3\lib\Ruby\gems\1.9.1\gems\capybara-webkit>bundle install
Resolving dependencies...
Using rake (0.9.2)
Using addressable (2.3.2)
Using bundler (1.3.5)
Using appraisal (0.4.0)
Using mime-types (1.22)
Using nokogiri (1.5.9)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using xpath (2.0.0)
Using capybara (2.1.0)
Using json (1.8.0)
Using capybara-webkit (1.0.0) from source at .
Using ffi (1.2.0)
Using childprocess (0.3.6)
Using diff-lcs (1.1.2)
Using websocket (1.0.6)
Using libwebsocket (0.1.7.1)
Using subexec (0.0.4)
Using mini_magick (3.2.1)
Using multi_json (1.5.0)
Using rack-protection (1.3.2)
Using rspec-core (2.6.4)
Using rspec-expectations (2.6.0)
Using rspec-mocks (2.6.0)
Using rspec (2.6.0)
Using rubyzip (0.9.9)
Using Selenium-webdriver (2.27.2)
Using tilt (1.3.3)
Using sinatra (1.3.5)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

Mais maintenant, je vérifie ces gemmes avec bundle show et il est dit qu'elles ont toutes été supprimées:

C:\RailsInstaller\Ruby1.9.3\lib\Ruby\gems\1.9.1\gems\capybara-webkit>bundle show sinatra
The gem sinatra has been deleted. It was installed at:
C:/RailsInstaller/Ruby1.9.3/lib/Ruby/gems/1.9.1/gems/sinatra-1.3.5

C:\RailsInstaller\Ruby1.9.3\lib\Ruby\gems\1.9.1\gems\capybara-webkit>bundle show Selenium-webdriver
The gem Selenium-webdriver has been deleted. It was installed at:
C:/RailsInstaller/Ruby1.9.3/lib/Ruby/gems/1.9.1/gems/Selenium-webdriver-2.27.2

C:\RailsInstaller\Ruby1.9.3\lib\Ruby\gems\1.9.1\gems\capybara-webkit>bundle show mini_magick
The gem mini_magick has been deleted. It was installed at:
C:/RailsInstaller/Ruby1.9.3/lib/Ruby/gems/1.9.1/gems/mini_magick-3.2.1

Il semble que Rubygems se souvienne quelque part que des pierres précieuses ont été installées et considère qu'elles sont toujours présentes. Il semble que les gems ne doivent être supprimés que par la commande gem uninstall et non manuellement.

Existe-t-il un moyen d'effacer le cache Rubygems? Comment informer Rubygems que certaines gemmes ont été supprimées manuellement et qu’elles doivent donc les considérer comme désinstallées maintenant?

11
Green

Après avoir supprimé manuellement la gemme, supprimez le fichier gemspec de cette gem présent dans "C:\Ruby187\lib\Ruby\gems\1.8\specifications". Ensuite, essayez d'installer bundle.

22
user3791

Je sais que cette réponse arrive très tard mais, ayant moi-même le même problème, voici ce qui a fonctionné pour moi; pour quiconque peut en avoir besoin.

Si vous souhaitez réinstaller une gemme que vous avez supprimée manuellement, vous devrez supprimer toute référence à celle-ci dans les répertoires de $HOME/.rvm/gems/Ruby-X/, puis exécuter bundle install. Si vous aviez supprimé manuellement toutes vos pierres précieuses, supprimer tout le contenu du répertoire $HOME/.rvm/gems/Ruby-X/ et exécuter bundle les réinstallerait toutes.

4
Muaad

Dans mon cas, j'avais créé un fichier Gemfile dans un répertoire et faisais une installation groupée. Il m'est arrivé de supprimer manuellement une pierre précieuse sous os x, de sorte que je n'ai pas pu l'installer à nouveau. 

 1. liste de pierres précieuses | grep your_gem_name 
 2. désinstaller your_gem_name 
 3. supprimer Gemfile.lock 
 4. installer l’ensemble à partir de mon emplacement Gemfile 
4
AkD

Courir:

bundle install --force

Cela réinstallera toutes les pierres précieuses, mais conservera les versions.

0
hlcs