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.