What have I forgotten about specifying which Perl should be /opt/local/bin/perl?

Kastus Shchuka macports at tprfct.net
Fri Jan 21 05:21:48 UTC 2022


You got the link /opt/local/bin/perl -> perl5.28 from the default variant of perl5 as you did not specify which variant you wanted.

$ port info perl5
perl5 @5.28.3 (lang)
Sub-ports:            perl5.16, perl5.18, perl5.20, perl5.22, perl5.24,
                      perl5.26, perl5.28, perl5.30, perl5.32, perl5.34
Variants:             perl5_26, [+]perl5_28, perl5_30, perl5_32, perl5_34

Description:          Wrapper port for Perl 5.x
Homepage:             https://www.perl.org/

Library Dependencies: perl5.28
Platforms:            darwin, freebsd, linux
License:              (Artistic-1 or GPL)
Maintainers:          Email: mojca at macports.org, GitHub: mojca
                      Policy: openmaintainer


You need to install perl5 +perl5_34 if you want 5.34.

> On Jan 20, 2022, at 8:12 PM, Gabriel Rosenkoetter <gr at eclipsed.net> wrote:
> 
> Aha!
> 
> I didn't have the perl5 port installed on this system at all, just the several perl5.xx ports. So I did `sudo port install perl5`.
> 
> And that's neat, but:
> 
> [58] (gr at wedge:~)% which perl
> /opt/local/bin/perl
> [59] (gr at wedge:~)% ls -l `!!`
> ls -l `which perl`
> lrwxr-xr-x  1 root  admin  8 Dec  6  2020 /opt/local/bin/perl -> perl5.28
> [60] (gr at wedge:~)%
> 
> And `port select --summary` is still just Python stuff:
> 
> [60] (gr at wedge:~)% port select --summary
> Name     Selected  Options
> ====     ========  =======
> pip      pip37     pip3-apple none
> pip2     none      none
> pip3     none      pip3-apple none
> python   none      python27 python27-apple python37 python38-apple python39 none
> python2  none      python27 python27-apple none
> python3  python37  python37 python38-apple python39 none
> [61] (gr at wedge:~)% sudo port select --list perl
> Warning: Unable to get active selected version: The specified group 'perl' does not exist.
> Error: The 'list' command failed: The specified group 'perl' does not exist.
> [62] (gr at wedge:~)% sudo port select --list perl5
> Warning: Unable to get active selected version: The specified group 'perl5' does not exist.
> Error: The 'list' command failed: The specified group 'perl5' does not exist.
> [63] (gr at wedge:~)% sudo port select --set perl perl5.34
> Selecting 'perl5.34' for 'perl' failed: The specified group 'perl' does not exist.
> [64] (gr at wedge:~)% sudo port select --set perl5 perl5.34
> Selecting 'perl5.34' for 'perl5' failed: The specified group 'perl5' does not exist.
> [65] (gr at wedge:~)%
> 
> Does the Perl port not support version selection this way, or am I still not remembering the right way to do this?
> 
> For example, is the user expected to create their own perl (or perl5) group?
> 
> Shouldn't installing the port at least plug some defaults in for those entries?
> 
> I'm eminently aware that Perl and Python behave differently wrt module support, but shouldn't MacPorts at least try to provide a consistent interface across them?
> 
> I just did this for now:
> 
> [69] (gr at wedge:~)% sudo ln -sf /opt/local/bin/perl5.34 /opt/local/bin/perl
> Password:
> [70] (gr at wedge:~)% which perl
> /opt/local/bin/perl
> [71] (gr at wedge:~)% perl --version
> 
> This is perl 5, version 34, subversion 0 (v5.34.0) built for darwin-thread-multi-2level
> 
> Copyright 1987-2021, Larry Wall
> 
> Perl may be copied only under the terms of either the Artistic License or the
> GNU General Public License, which may be found in the Perl 5 source kit.
> 
> Complete documentation for Perl, including FAQ lists, should be found on
> this system using "man perl" or "perldoc perl".  If you have access to the
> Internet, point your browser at http://www.perl.org/, the Perl Home Page.
> 
> [72] (gr at wedge:~)%
> 
> But I expect that'll bite me in the ass when I upgrade the perl5 port…?
> 
> On 2022-01-20 21:57 EST, Gabriel Rosenkoetter wrote:
>> I just did a `sudo port install perl5.34`, anticipating that doing so would "activate" it (and the build output indicated that step was taken), presumably bumping the /opt/local/bin/perl sym link to the new version and… apparently that was the wrong thing to assume, since that sym link no longer exists on this system?
>> [31] (gr at wedge:~)% which perl
>> /usr/bin/perl
>> [32] (gr at wedge:~)% echo $PATH
>> /Users/gr/bin:/opt/local/bin:/usr/sbin:/sbin:/usr/bin:/bin:/usr/local/bin:/opt/local/sbin:/usr/libexec:/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:/usr/local/MacGPG2/bin [33] (gr at wedge:~)% port installed |egrep '^ *perl5'
>>   perl5.26 @5.26.3_4
>>   perl5.26 @5.26.3_6 (active)
>>   perl5.28 @5.28.3_1
>>   perl5.28 @5.28.3_4 (active)
>>   perl5.34 @5.34.0_2 (active)
>> [34] (gr at wedge:~)% ls /opt/local/bin/perl*
>> /opt/local/bin/perl5.26        /opt/local/bin/perldoc-5.26
>> /opt/local/bin/perl5.26.3    /opt/local/bin/perldoc-5.28
>> /opt/local/bin/perl5.28        /opt/local/bin/perldoc-5.34
>> /opt/local/bin/perl5.28.3    /opt/local/bin/perlivp-5.26
>> /opt/local/bin/perl5.34        /opt/local/bin/perlivp-5.28
>> /opt/local/bin/perl5.34.0    /opt/local/bin/perlivp-5.34
>> /opt/local/bin/perlbug-5.26    /opt/local/bin/perlthanks-5.26
>> /opt/local/bin/perlbug-5.28    /opt/local/bin/perlthanks-5.28
>> /opt/local/bin/perlbug-5.34    /opt/local/bin/perlthanks-5.34
>> [35] (gr at wedge:~)%
>> Should Perl show up in `port --select summary`? The only ports (that I have installed) that I see subscribing to that mechanism are Python:
>> [36] (gr at wedge:~)% port select --summary
>> Name     Selected  Options
>> ====     ========  =======
>> pip      pip37     pip3-apple none
>> pip2     none      none
>> pip3     none      pip3-apple none
>> python   none      python27 python27-apple python37 python38-apple python39 none
>> python2  none      python27 python27-apple none
>> python3  python37  python37 python38-apple python39 none
>> [37] (gr at wedge:~)%
>> I wouldn't expect any of this to change things (and it does not):
>> [41] (gr at wedge:~)% sudo port activate perl5.34
>> --->  Computing dependencies for perl5.34
>> --->  Cleaning perl5.34
>> [42] (gr at wedge:~)% sudo port activate perl
>> Error: port activate failed: Registry error: perl is not installed.
>> [43] (gr at wedge:~)% sudo port install perl
>> Error: Port perl not found
>> [44] (gr at wedge:~)%
>> What am I forgetting here?
>> Has the Perl port never done that, and I've just "always" had an /opt/local/bin/perl sym link I maintained manually? (If so, why'd it get removed by installing a new version?)
> 
> 
> -- 
> Gabriel Rosenkoetter (he/him)
> gr at eclipsed.net



More information about the macports-users mailing list