03 Aug 2017
FreeBSD: Perl aktualisieren
Ab und zu kommt man in die Verlegenheit, bei einem FreeBSD-System das Perl aktualisieren zu müssen. Das ist nicht ganz so trivial, deshalb wirds hier gesondert beschrieben.
Solch eine Meldung beim Portupgrade kann einem zum Update der Perl-Version zwingen:
[...]
** Port marked as IGNORE: textproc/p5-XML-SAX:
Invalid perl5 version 5.20
[...]
Als erstes setzen wir mal den Perl-Origin auf 5.22, von 5.20
root@amroth:/usr/ports # pkg set -o lang/perl5.20:lang/perl5.22
Change origin from lang/perl5.20 to lang/perl5.22 for perl5-5.20.3_16? [y/N]: y
root@amroth:/usr/ports # portupgrade -o lang/perl5.22 -f lang/perl5.20\*
[Reading data from pkg(8) ... - 390 packages found - done]
Schlußendlich aktualisieren wir alles, was mit Perl zu tun hat:
root@amroth:/usr/ports # portupgrade -rf perl\*
Während des Upgrades kommt u. A. so ein Bildschirm, den wir bestötigen:
+-------------------------- perl5.22-5.22.4 -----------------------------+
| +--------------------------------------------------------------------+ |
| |+[ ] DEBUG Build with debugging support | |
| |+[ ] GDBM GDBM_File extension | |
| |+[x] MULTIPLICITY Use multiplicity | |
| |+[x] PERL_64BITINT Use 64 bit integers (on i386) | |
| |+[x] PTHREAD Build with -lpthread | |
| |+[ ] SITECUSTOMIZE Run-time customization of @INC | |
| |------------------------- Exclusive OPTIONS ------------------------| |
| |+(*) THREADS Build threaded perl | |
| |+( ) PERL_MALLOC Use Perl malloc | |
| +--------------------------------------------------------------------+ |
+------------------------------------------------------------------------+
| < OK > <Cancel> |
+------------------------------------------------------------------------+
Sicherheitshalber kontrollieren wir noch die EInstellung von DEFAULT_VERSIONS in make.conf:
DEFAULT_VERSIONS+=perl5=5.22
Manchmal kann auch ein Grund, der nicht sofort ersichtlich ist, das upgrade verhindern:
- Fehler 1: es funktioniert trotzdem nicht
Lösung:
I’ve found a leftover file in /usr/local/etc: perl5_version Have no idea which program put it there, but it screwed up everything. Deleting it fixed the issue.
- Fehler 2:
===> Configuring for p5-Locale-gettext-1.07Encode.c: loadable library and perl binaries are mismatched (got handshake key 0xd200080, needed 0xdf00080)
Lösung:
cd /usr/local/lib/perl5/site_perl/mach
rm -rf 5.20
rm -rf 5.22
cd 5.24
rm -rf *
Jetzt Module neu kompilieren.