web-dev-qa-db-fra.com

Mes forfaits cabale sont FUBAR; comment puis-je les purger et recommencer?

J'ai oublié d'activer la création de bibliothèques pour le profilage dans mon ~/.cabal/config avant d'installer un paquet de packages sur une nouvelle machine et maintenant un --reinstall world pour essayer de régler la situation a tout cassé (naturellement).

Je pense que c'est une meilleure utilisation de mon temps pour tout purger. Comment dois-je procéder correctement?

63
jberryman

Cabal ne garde pas trace de ce qu'il est installé, il utilise simplement le mécanisme de bibliothèque de ghc (ou celui d'un autre compilateur si vous n'utilisez pas ghc), vous pouvez donc utiliser rm -r ~/.ghc pour supprimer toutes les bibliothèques installées localement.

Si plusieurs ghc sont installés et que vous souhaitez uniquement supprimer les bibliothèques pour un ghc spécifique, supprimez le sous-répertoire correspondant au ghc que vous souhaitez supprimer.
Par exemple, je pourrais supprimer tout ce que j'ai installé pour ghc-7.6.0 avec rm -r ~/.ghc/x86_64-linux-7.6.0.20120810
Vous pouvez également l'utiliser pour préserver votre ghci_history si vous le souhaitez.

ll ~/.ghc/
total 24
-rw-r--r-- 1 johnl johnl 2300 Aug 21 11:47 ghci_history
drwxr-xr-x 3 johnl johnl 4096 Jun 17 19:09 x86_64-linux-6.12.3
drwxr-xr-x 3 johnl johnl 4096 May 17 08:17 x86_64-linux-7.2.1
drwxr-xr-x 3 johnl johnl 4096 May 16 17:34 x86_64-linux-7.4.1
drwxr-xr-x 3 johnl johnl 4096 Jun 15 08:21 x86_64-linux-7.4.2
drwxrwxr-x 3 johnl johnl 4096 Aug 15 12:37 x86_64-linux-7.6.0.20120810

Éditer: ~/.cabal/world est une liste de packages installés avec des contraintes de version spécifiées par l'utilisateur. Donc, dans la plupart des cas, cela comprendrait par exemple mtl -any. Si vous avez installé des packages avec des versions spécifiques, par exemple en émettant cabal install mtl-2.1.1, il enregistrera cette version. Vous devriez être en mesure de supprimer le fichier mondial et de recommencer, ou si vous l'examinez et que les dépendances sont acceptables, vous pouvez essayer d'exécuter simplement cabal install world. Ou vous pouvez l'ignorer et ne pas utiliser le support mondial de la cabale (c'est ce que je fais).

59
John L

Ce ghc-pkg-reset Le script Shell nettoie ~/.ghc/et ~/.cabal /, un peu plus sélectivement. (Et le script ghc-pkg-clean qui l'accompagne peut aider à récupérer après une installation de package confuse, évitant peut-être une réinitialisation.) Je les trouve utiles.

18
Simon Michael