J'utilise le système de ports sur FreeBSD. Quelle est la manière la plus simple de mettre à jour Perl en utilisant les ports? Actuellement, je désinstalle tout Perl et ses dépendances. Je pense qu'il devrait exister une manière plus pratique de mettre à jour Perl et toutes ses dépendances. Quelle serait cette manière?
Réponses
Trop de publicités?Voici la manière la plus manuelle de le faire.
perl-after-upgrade est censé faire l'affaire pour la plupart des fichiers (à l'exception des binaires comme irssi), cependant, je trouve que cela ne fonctionne plus aussi bien, donc je fais tout à la main.
Avant de mettre à jour perl, je fermais tout ce qui en dépend, car ces choses risquent de se casser pendant le processus de mise à jour. Pour moi, cela signifie généralement d'arrêter SpamAssassin, ce qui implique en fait d'éteindre postfix pendant les quelques minutes que cela me prend.
Je ferais aussi une liste des dépendances actuelles de perl - pkg info -r perl
, au cas où vous auriez à revenir à une mise à jour manuelle de tout.
Tout d'abord, construisez et installez la version de perl. Tous vos modules perl seront cassés car ils sont toujours installés dans l'ancien répertoire perl. Utilisez portmaster ou portupgrade pour forcer la reconstruction de tous les modules perl : portmaster p5-
fait l'affaire pour moi.
Ensuite, cherchez les binaires qui ont des dépendances sur perl qui sont cassées - j'utilise libchk pour cela. Exécutez-le et cherchez les binaires ayant des références non résolues à libperl.so. Utilisez pkg which
pour savoir quel port a installé ce binaire, si ce n'est pas évident à partir du nom, puis reconstruisez ce port en utilisant portmaster ou portupgrade.
Vous pouvez probablement commencer à remettre en service vos services basés sur perl, comme SpamAssassin.
Ensuite, je parcours le répertoire /usr/local/lib/perl5, et je vérifie si des fichiers y sont encore alors qu'ils ne devraient plus être là. Utilisez à nouveau pkg which
pour savoir d'où ils viennent, mettez à jour ces ports, répétez jusqu'à ce que le répertoire soit vide ou que chaque fichier soit revendiqué.
portmaster -r perl-
serait la manière la moins chère et la plus facile de le faire, mais cela passerait probablement des heures à reconstruire des choses qui n'ont pas besoin d'être reconstruites. Cette méthode est probablement beaucoup plus rapide, mais elle demande beaucoup plus de travail et nécessite un peu plus de bidouillage.