Perl 5.20 breaks /usr/bin/perl
Xavier
xavier at groumpf.org
Sat Aug 15 19:51:49 UTC 2015
Hi,
Wondering why nobody does report it yet.
I noticed a couple weeks ago, an confirmed today on another computer, that :
portupgrade -o lang/perl5.20 lang/perl5.18
removes the symlink in /usr/bin, and doesn't recreate it, thus broking
all perl scripts and programs.
In fact, this line :
/bin/ln -sf "${PKG_PREFIX}/bin/perl${PERL_VERSION}" "/usr/bin/${binary}"
in function do_create_links() thas was in
lang/perl5.18/files/use.perl.in is missing in 5.20 port. All links
handling has been removed from use.perl.in, and the knob in make config too.
[root at aragorn perl5.20]# diff files/use.perl.in
../perl5.18/files/use.perl.in
3c3
< # $FreeBSD: head/lang/perl5.20/files/use.perl.in 384051 2015-04-15
13:46:34Z mat $
---
> # $FreeBSD: head/lang/perl5.18/files/use.perl.in 373771 2014-12-02
16:27:00Z mat $
4a5
> LINK_USRBIN="%%LINK_USRBIN%%"
7a9,42
> special_link_list="perl perl5"
>
> do_remove_links()
> {
> for binary in ${special_link_list} ; do
> if [ -L "/usr/bin/${binary}" ] ; then
> /bin/rm -f "/usr/bin/${binary}"
> fi
> done
> bins=`/bin/ls /usr/bin/*perl*5.* ${PKG_PREFIX}/bin/*perl*5.*
2>/dev/null`
> for binary in ${bins} ; do
> if [ -L "${binary}" ] ; then
> echo "use.perl: Removing ${binary} installed by
an older perl port"
> /bin/rm -f "${binary}"
> fi
> done
> }
>
> do_create_links()
> {
> for binary in ${special_link_list} ; do
> if [ -f "/usr/bin/${binary}" ] ; then
> echo "use.perl: Backing up /usr/bin/${binary}
as /usr/bin/${binary}.freebsd"
> /bin/mv -f "/usr/bin/${binary}"
"/usr/bin/${binary}.freebsd"
> fi
> if [ -e "/usr/bin/${binary}" ] ; then
> echo "use.perl: /usr/bin/${binary} is still
there, which should not happen"
> elif [ -e "${PKG_PREFIX}/bin/perl${PERL_VERSION}" ] ; then
> /bin/ln -sf
"${PKG_PREFIX}/bin/perl${PERL_VERSION}" "/usr/bin/${binary}"
> else
> echo "use.perl:
${PKG_PREFIX}/bin/perl${PERL_VERSION} is not there, a symlink won't do
any good"
> fi
> done
> }
36,37c71,78
< do_cleanup_manpath
< do_spam_manpath
---
> if [ ${LINK_USRBIN} = yes ] ; then
> do_remove_links
> do_create_links
> fi
> if [ "${OSVERSION}" -lt 900022 ] ; then
> do_cleanup_manpath
> do_spam_manpath
> fi
39c80,81
< do_cleanup_manpath
---
> [ ${LINK_USRBIN} = yes ] && do_remove_links
> [ "${OSVERSION}" -lt 900022 ] && do_cleanup_manpath
Regards,
Xav
--
Xavier HUMBERT - Unix/Win/MacOSX Sysadmin/Network Engineer
More information about the freebsd-ports
mailing list