Comment puis-je mettre à jour Perl sur Windows sans perdre les modules?
Au travail je suis à l'aide de Perl 5.8.0 sur Windows.
Quand j'ai mis Perl, je suis allé à CPAN, téléchargé toutes les sources, a fait quelques changements (dans l' .Fichier MAK? à l'appui des fils, ou des choses comme ça), et n'a nmake /nmake test /nmake installer. Puis, peu à peu, j'ai téléchargé les différents modules du CPAN et fait de la nmake danse.
Donc, j'aimerais mettre à niveau vers une version plus récente, mais la nouvelle ne doit pas casser les scripts existants. Notamment, un tas de "l'utilisation" des modules que j'ai installé doit être installé dans la nouvelle version.
Quel est le plus fiable (et plus simple) pour mettre à jour ma version actuelle, en s'assurant que tout ce que j'ai fait avec les nmake danse avec sera encore là après la mise à jour?
Je suggère de "Comment faire la mise à jour de Perl sur Windows sans perdre les modules". J'ai commencé à donner ma réponse, alors rendu compte qu'il n'a pas l'ajustement, car ma réponse est UNIX seulement, et vous oblige à réinstaller tous vos modules (qui je pense va être une exigence de toute façon).
Merci pour le titre de suggestions. J'ai modifié pour refléter vos suggestions.
OriginalL'auteur piCookie | 2008-09-22
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont noté, à commencer par l'installation de la nouvelle perl dans un endroit séparé. J'ai plusieurs perls installé, chacun, entièrement distinct de tous les autres.
Pour ce faire, vous aurez à configurer et compiler les sources vous-même. Lorsque vous exécutez
configure
, vous aurez l'occasion de préciser le programme d'installation. J'ai donné des instructions détaillées pour cela, dans une "Compilation de Mes Propres Perl" dans le Printemps de 2008 de L'Examen Perl. Il y a aussi un Article dans Efficace de Programmation Perl qui vous montre comment le faire.Maintenant, retournez à votre distribution d'origine et exécuter
cpan -a
pour créer un autobundle fichier. C'est un Pod document qui dresse la liste de tous les trucs supplémentaires que vous avez installé, et le CPAN.h comprend comment l'utiliser pour tout réinstaller.À installer dans le nouveau perl, utiliser perl chemin pour démarrer le CPAN.pm et installer le autobundle fichier que vous avez créé. CPAN.h vous obtenez le droit de chemins d'installation de perl configuration.
Montre la sortie pour s'assurer que les choses vont bien. Ce processus ne s'installe pas les mêmes versions des modules, mais les versions les plus récentes.
Comme pour Strawberry Perl, il y a un "portable" version, vous pouvez l'installer quelque part, en plus de l'emplacement par défaut. De cette façon, vous pourriez avoir le nouveau perl sur un support amovible. Vous pouvez tester n'importe où vous le souhaitez sans perturber le local d'installation. Je ne pense pas que ce soit tout à fait prêt pour une utilisation générale. Le Berrybrew outil peut vous aider à gérer cela.
Bonne chance 🙂
OriginalL'auteur brian d foy
Je voudrais sérieusement envisager de regarder à l'aide de Strawberry Perl.
OriginalL'auteur Andy Lester
Vous pouvez installer une deuxième version de Perl dans un emplacement différent. Vous aurez à ré-installer tout non-modules de base dans la nouvelle version. En général, les différentes versions de Perl ne sont pas compatible binaire, ce qui pourrait être un problème si vous avez un programme spécifique de bibliothèques qui utilisent XS composants. Pure Perl modules ne devraient pas être affectées.
OriginalL'auteur Michael Carman
Si vous restez à l'intérieur de l'5.8 piste, installés tous les modules qui contiennent XS (binaire) des extensions continuera à travailler, comme la compatibilité binaire est garantie au sein de la même 5.8 de la série. Si vous avez déménagé à 5.10 alors que vous auriez à recompiler les modules qui contiennent XS composants.
Tout ce que vous devez faire est de s'assurer que les nouveaux construire des listes de la précédente répertoires inclure dans son @INC tableau (qui est utilisé pour la recherche de modules).
Par les sons de celui-ci, je pense que vous êtes sur Windows, dans ce cas le courant de @INC chemins peuvent être visualisés avec
Assurez-vous de cibler votre nouvelle version en Perl dans un autre répertoire. Il se fera un plaisir de coexister
avec la version précédente, ce qui vous permettra de choisir l'installation Perl est utilisé; c'est juste une question de l'obtention de votre CHEMIN d'accès de l'ordre de tri. Dès qu'un interpréteur perl est lancé, il sait où chercher pour le reste de ses modules.
Strawberry Perl est sans doute la plus belle de distribution sur Windows ces jours pour rouler vos propres.
OriginalL'auteur dland
Je pense que la réponse à cela implique la virtualisation d'un certain type:
Le raisonnement derrière cela est qu'il y a probablement toutes sortes de subtils les dépendances et les hypothèses que vous n'avez pas pensé. Bien que peu probable, la dernière version d'un module particulier (peut-être même un module de base, même si c'est encore plus improbable) pourrait avoir une subtile différence par rapport à celui que vous utilisez. Sauf si vous avez de manière exhaustive traversé l'ensemble de votre base de code, il y a très probablement un module particulier qui est nécessaire seulement dans certaines circonstances.
Vous pouvez essayer de repérer ce par la construction d'une liste de tous vos scripts - une liste que vous devez avoir, de toute façon, à force de tout votre code étant sous contrôle de version (vous sont utilisation du contrôle de version, par exemple Subversion, oui?) - et d'itération à travers elle, l'exécution de
perl -c
sur chaque script. par exemple,ce script. Ce genre de test automatisé est inestimable: vous pouvez la définir en cours d'exécution, aller loin pour un café ou autre, et revenir pour vérifier si tout a fonctionné. Les premières fois que vous aurez probablement à trouver un obscur module que vous l'auriez oublié, ce qui est bien: le point de l'ensemble de l'automatisation, c'est qu'en vous n'avez pas à faire le drudge-travail de vérification de chaque script.OriginalL'auteur Sam Kington
Quand je l'ai fait j'ai installé la plus récente dans un répertoire distinct. Il ya un peu de risque de créer une confusion exécution de deux versions, mais il aide vraiment vous assurer que tout fonctionne d'abord, et fournit un moyen rapide de revenir à l'ancienne dans un pincement. J'ai aussi configurer Apache pour exécuter deux services distincts, de sorte que je pouvais singe autour avec les versions plus récentes de Perl dans un service sans toucher à la production de l'un sur l'ancien Perl.
Il est sans doute beaucoup plus sage, avec le recul, afin de l'installer sur un autre ordinateur, et de faire vos tests. Enregistrement de toute modification de la configuration que vous devez faire.
Pas sûr de construire vous-même—je l'ai toujours utilisé préemballés binaires pour Windows.
Je ne suis pas sûr de comprendre exactement ce que vous demandez. Avez-vous une liste des modifications apportées à l'5.8 makefile? Ou la question est de savoir comment obtenir une telle liste? Êtes-vous en posant également la question de savoir comment trouver les paquets au-dessus de l'installation de base que vous avez obtenus depuis CPAN? Êtes-vous également se demander comment vérifier que vos modifications ne cassera pas ces paquets si vous les obtenez à partir de CPAN nouveau?
Les modifications apportées à l'5.8 makefile sont sans importance. Je suis de plus en plus demandant comment trouver les paquets au-dessus de l'installation de base que j'ai obtenus. J'ai beaucoup de scripts qui disent "utiliser xxx" où xxx est téléchargé et construit en. Ils ont tous besoin de continuer à travailler.
Cela peut être un peu boiteux, mais vous pouvez utiliser TextPad "Rechercher dans les Fichiers" ou équivalent à la recherche de tous vos scripts pour "^utiliser ".
OriginalL'auteur Kev
Pourquoi n'utilisez-vous pas ActivePerl et ses "ppm" outil pour (ré)installer les modules?
vous pouvez obtenir la liste des modules installés à l'aide de "ppm liste de site". "ppm zone de liste" pour obtenir une liste de domaines. "ppm zone de synchronisation site" mise à jour du ppm base de données avec des paquets qui ont été installés à pas à l'aide de ppm.
OriginalL'auteur Alexander Farber