# What the hell is perl-5.8 is doing in the ports when...



## achix (Mar 28, 2011)

Why are there ports that still depend and still install perl5.8 when, according to /usr/ports/UPDATING:


> 20100715:
> AFFECTS: users of lang/perl*
> AUTHOR: skv@FreeBSD.org
> 
> ...


and more importantly 


> 20100205:
> AFFECTS: users of lang/perl*
> AUTHOR: skv@FreeBSD.org
> 
> ...



So that means that even one year after the official default perl version was bumped to 5.10, there are ports which would happily install perl 5.8 and also change PERL_VERSION=5.8* in /etc/make.conf, and of course break many things like p5-XML-LibXML.

So, in descending degree of probability for total disaster :
a) If a user chooses only source based ports installation then he might or he might not succeed to end up with a working system. (after week(s) of human monitoring)
b) If a user sticks to ports, but chooses the -P option in portupgrade (i.e. still consider binary precompiled packages) he most probably would end up with a broken system.
c) if a use sticks to pkg_add -r (precompiled packages only) he will end up with a totally broken system, and of course with half of his intended packages missing (because they usually are missing in the -RELEASE distribution, like openoffice)


----------



## davidgurvich (Mar 28, 2011)

Which ports downgrade the system perl version?  That would seem to be a clear bug.


----------



## achix (Mar 28, 2011)

Too late I upgraded everything 5.8 related, thing is, I pkg_deinstalled all packages yesterday, did a `# portinstall -P --batch /usr/ports/x11/xorg` (which went fine), then did a `# portinstall -P --batch /usr/ports/x11/gnome2` which ended up with perl5.8 set as default and various ports failing. This is the tail from the script:

```
--->  Skipping 'deskutils/deskbar-applet' because a requisite port 'x11-toolkits/py-gnome2' failed (specify -k to force)
--->  Skipping 'x11/gnome2' because a requisite port 'x11/gnome-applets' failed (specify -k to force)
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! net/avahi-app (configure error)
        ! textproc/p5-XML-LibXML        (pkg_add failed)
        * lang/vala-vapigen
        ! textproc/p5-XML-SAX-Expat     (pkg_add failed)
        * net-im/telepathy-glib
        * net-im/libtelepathy
        * textproc/p5-XML-Simple
        * net-im/telepathy-idle
        ! devel/p5-Module-Build (unknown build error)
        * x11-themes/icon-naming-utils
        * net-im/telepathy-gabble
        * net/avahi-gtk
        * devel/gnome-vfs
        * www/p5-HTML-Tree
        * net-im/telepathy-logger
        * net-im/telepathy-mission-control
        ! multimedia/totem-pl-parser    (configure error)
        * textproc/p5-XML-Twig
        * devel/p5-Net-DBus
        * www/mod_dnssd
        * misc/gnome-icon-theme
        * x11/libgnome
        * www/gtkhtml3
        ! graphics/libgnomecanvas       (configure error)
        * x11/gnome-terminal
        * x11-toolkits/libbonoboui
        * x11-toolkits/libgnomeprintui
        * net/libgweather
        * x11-toolkits/gtksourceview
        * databases/evolution-data-server
        ! devel/libgsf  (configure error)
        * devel/bug-buddy
        * audio/pulseaudio
        * sysutils/system-tools-backends
        * devel/liboobs
        * security/seahorse
        * net-im/folks
        * audio/gnome-media
        * graphics/librsvg2
        * devel/gvfs
        * x11-toolkits/libgnomeui
        * www/evolution-webcal
        * textproc/gnome-spell
        * sysutils/gconf-editor
        * accessibility/gok
        * x11-toolkits/py-gtk2
        * accessibility/dasher
        ! x11/gnome-desktop     (configure error)
        * x11/gnome-screensaver
        * multimedia/cheese
        * mail/evolution
        * graphics/eog
        * x11-toolkits/py-gnome2
        * sysutils/gnome-settings-daemon
        * x11/gnome-panel
        * mail/evolution-exchange
        * sysutils/gnome-power-manager
        * net/vinagre
        * accessibility/mousetweaks
        * net/gnome-netstatus
        * sysutils/gnome-system-monitor
        * x11/gnome-session
        * x11/gdm
        * deskutils/gnome-utils
        * net/vino
        * x11/gnome-applets
        * net/ekiga3
        * mail/evolution-mapi
        * net-im/telepathy-farsight
        * sysutils/gnome-control-center
        * x11-themes/gnome-themes
        * www/epiphany
        * x11-fm/nautilus
        * sysutils/gnome-system-tools
        * www/gnome-user-share
        * sysutils/brasero
        * multimedia/totem
        * audio/sound-juicer
        * archivers/file-roller
        * graphics/evince
        * security/seahorse-plugins
        * x11-toolkits/py-gnome-desktop
        * games/gnome-games
        * deskutils/hamster-applet
        * accessibility/orca
        * deskutils/alacarte
        * deskutils/nautilus-sendto
        * net-im/empathy
        * deskutils/deskbar-applet
        * x11/gnome2
```

Anyways by looking into the script it is easy to find the suspect :

```
[color="Red"]--->  Installing lang/perl5.8 as dependency required by p5-libxml-0.08[/color]
--->  Checking for the latest package of 'lang/perl5.8'
--->  Found a package of 'lang/perl5.8': /usr/ports/packages/All/perl-5.8.9_4.tbz (perl-5.8.9_4)
--->  Installing 'perl-5.8.9_4' from a package
--->  Installing the new version via the package
pkg_add: package 'perl-5.8.9_4' conflicts with perl-5.10.1_3
pkg_add: -f specified; proceeding anyway
Removing stale symlinks from /usr/bin...
    Removing /usr/bin/perl
    Removing /usr/bin/perl5
Done.
Creating various symlinks in /usr/bin...
    Symlinking /usr/local/bin/perl5.8.9 to /usr/bin/perl
    Symlinking /usr/local/bin/perl5.8.9 to /usr/bin/perl5
```

and afterward, the (failing) party begun.


----------



## kpa (Mar 28, 2011)

textproc/p5-libxml builds fine on my machine and uses perl version 5.12.3 as it should since I have PERL_VERSION set to 5.12.3 in /etc/make.conf. Are you somehow mixing built ports that use newer perl5.10 and binary packages that have dependencies to older perl5.8 ?


----------



## achix (Mar 28, 2011)

^^^
Yes this is true, and was implied by the "-P" switch. -P should eventually install some precompiled package sooner or later.


----------



## phoenix (Mar 28, 2011)

-P tells portupgrade to search for pre-built packages first.  Depending on what your *PACKAGESITE* env var is set to, you may be trying to install ancient packages on your system, which includes ancient dependencies.

If you do the same command again, without the -P, I'm willing to bet you won't have a trace of Perl 5.8 on your system.


----------



## achix (Mar 28, 2011)

phoenix said:
			
		

> -P tells portupgrade to search for pre-built packages first.  Depending on what your *PACKAGESITE* env var is set to, you may be trying to install ancient packages on your system, which includes ancient dependencies.
> 
> If you do the same command again, without the -P, I'm willing to bet you won't have a trace of Perl 5.8 on your system.



Do you have anything better/newer than `# setenv PACKAGESITE [url]ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/All/[/url]` to recommend for a 8.2-RELEASE system?


----------



## kpa (Mar 28, 2011)

That's fine for any 8.x system. As far as I know the "stable" part means that the packages are built on 8-STABLE but they should always work on any 8.x release of FreeBSD.


----------



## achix (Mar 28, 2011)

Unfortunately, this proved to not be so fine.


----------



## phoenix (Mar 28, 2011)

achix said:
			
		

> Do you have anything better/newer than `# setenv PACKAGESITE [url]ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/All/[/url]` to recommend for a 8.2-RELEASE system?



If you look at that site, you will see packages for perl-5.8, perl-5.10, and perl-5.12.  That means that there are packages listed there that depend on each of those versions.

You need to make a choice:

Do you want the latest version of perl installed and nothing else?  Then use the ports tree, not binary packages (no -P).
Do you want to use binary packages?  And can you live with all the issues that come along with that, including having multiple, old versions of things installed?

Which is more important:  latest versions or binary packages?


----------



## achix (Mar 29, 2011)

phoenix said:
			
		

> If you look at that site, you will see packages for perl-5.8, perl-5.10, and perl-5.12.  That means that there are packages listed there that depend on each of those versions.


FreeBSD AFAIK does not support package polymorphism like Debian does (for every piece of source, creating a different package for every possible combination of prerequisites/options (p*o packages for p alternative prerequisites and o combinations of options ).
Which means that for every FreeBSD port there is no more than one package in the package repository (PACKAGESITE), which means that some *port* from there *required* perl-5.8, which means that even with ports the same problem would occur, and also means that some port maintainer did not do his/her homework, resulting in a broken system.


----------

