29 votes

Dois-je désinstaller manuellement toutes les gemmes dépendantes ?

J'ai essayé de désinstaller datamapper en utilisant la commande gem uninstall dm-core .

Mais il semble que tout un tas de gemmes dépendantes doivent également être désinstallées.

C:\>gem uninstall dm-core

You have requested to uninstall the gem:
        dm-core-0.9.11
dm-migrations-0.9.11 depends on [dm-core (= 0.9.11)]
dm-cli-0.9.11 depends on [dm-core (= 0.9.11)]
dm-serializer-0.9.11 depends on [dm-core (= 0.9.11)]
dm-timestamps-0.9.11 depends on [dm-core (= 0.9.11)]
dm-aggregates-0.9.11 depends on [dm-core (= 0.9.11)]
dm-types-0.9.11 depends on [dm-core (= 0.9.11)]
dm-is-tree-0.9.11 depends on [dm-core (= 0.9.11)]
dm-observer-0.9.11 depends on [dm-core (= 0.9.11)]
dm-validations-0.9.11 depends on [dm-core (= 0.9.11)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]  n
ERROR:  While executing gem ... (Gem::DependencyRemovalException)
    Uninstallation aborted due to dependent gem(s)

J'ai essayé de trouver de la documentation sur "gem uninstall" mais il ne semble pas y avoir de moyen de désinstaller les dépendances automatiquement :

C:\>gem help uninstall
Usage: gem uninstall GEMNAME [GEMNAME ...] [options]

  Options:
    -a, --[no-]all                   Uninstall all matching versions
    -I, --[no-]ignore-dependencies   Ignore dependency requirements while
                                     uninstalling
    -x, --[no-]executables           Uninstall applicable executables with
out
                                     confirmation
    -i, --install-dir DIR            Directory to uninstall gem from
    -n, --bindir DIR                 Directory to remove binaries from
        --[no-]user-install          Uninstall from user's home directory
                                     in addition to GEM_HOME.
    -v, --version VERSION            Specify version of gem to uninstall
        --platform PLATFORM          Specify the platform of gem to uninst
all

  Common Options:
    -h, --help                       Get help on this command
    -V, --[no-]verbose               Set the verbose level of output
    -q, --quiet                      Silence commands
        --config-file FILE           Use this config file instead of defau
lt
        --backtrace                  Show stack backtrace on errors
        --debug                      Turn on Ruby debugging

  Arguments:
    GEMNAME       name of gem to uninstall

  Summary:
    Uninstall gems from the local repository

  Defaults:
    --version '>= 0' --no-force --install-dir C:/Ruby18/lib/ruby/gems/1.8
    --user-install

C:\>

Est-ce que j'ai manqué quelque chose ?

24voto

Bruno Tavares Points 191

gem list | cut -d" " -f1 | xargs gem uninstall -aIx supprime toutes les gemmes rubis installées !

11voto

Jonathan R. Wallace Points 503

Pour autant que je sache, vous avez raison, il n'y a pas de moyen simple intégré à la commande gem pour faire cela.

Cependant, vous pouvez consulter gem-prune qui peut vous aider à nettoyer votre dépôt de gemmes après avoir supprimé dm-core.

http://github.com/ddollar/gem-prune/tree/master

5voto

MattDiPasquale Points 23842

J'ai fini par faire un simple outil en ligne de commande pour désinstaller les dépendances de gem de manière récursive .

J'ai également déposé un problème rubygems pour gem désinstalle les dépendances de manière récursive .


Ce problème rubygems a été fermé et ne sera pas pris en compte jusqu'à ce que quelqu'un fournisse un patch incluant des tests.

4voto

Rob D Points 21
for gem in `gem list --no-version`; do
  gem uninstall -aIx $gem
done

C'est ce qui marche le mieux pour moi, je ne sais pas pourquoi mais

gem list | cut -d" " -f1 | xargs gem uninstall -aIx

ne fonctionne pas sur mon système car il se plaint toujours...

ERROR:  While executing gem ... (Gem::InstallError)
    cannot uninstall, check `gem list -d some-gem-here`

3voto

Le problème lors de l'exécution de ce genre de désinstallation est qu'ils descendent la liste des gemmes dans l'ordre, donc si une gomme est désinstallable, vous finissez par être bloqué. Exécutez le programme ci-dessous plusieurs fois et il devrait supprimer toutes les gemmes pour lesquelles il est autorisé.

gem list | cut -d" " -f1 | sort -R | xargs -n1 gem uninstall -aIx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X