• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

mytop-1.7 env: /usr/local/bin/perl5.24.2: No such file or directory

lifeboy

New Member

Thanks: 1
Messages: 6

#1
I want to install mytop with mariadb102-server / client, but pkg insists on installing mysql56... :-( So I'm trying to built mytop from ports. (/usr/ports/databases/mytop)

Code:
# make install clean
===>   mytop-1.7 depends on package: perl5>=5.24<5.25 - found
===>  Configuring for mytop-1.7
env: /usr/local/bin/perl5.24.2: No such file or directory
*** Error code 127
However:
Code:
# pkg search perl5-*
perl5-5.24.1_1                 Practical Extraction and Report Language
perl5-devel-5.27.1.72          Practical Extraction and Report Language
perl5.22-5.22.3_1              Practical Extraction and Report Language
perl5.26-5.26.0                Practical Extraction and Report Language
There is no perl5.24.2 ?? Anyway, 5.24.1 satisfies perl5>=5.24<5.25

How to I fix this please?
 

tobik@

Daemon
Developer

Thanks: 1,327
Messages: 1,908

#2
How to I fix this please?
You are apparently using quarterly packages and are using a non-matching ports tree branch in combination with it. A recipe for disaster. Either switch your system to latest packages or switch to the 2017Q3 ports tree branch to match the ports framework with the packages you have installed.
 

lifeboy

New Member

Thanks: 1
Messages: 6

#3
I'm not sure I follow... this is a clean installation on which I simply did "portsnap auto"... So whatever I'm using is default on FreeBSD 11.0 then? How to I change that?
Code:
11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017
Should I create the file /usr/local/etc/pkg/repos/FreeBSD.conf
Code:
FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest"
}
and then do pkg upgrade -f ?
 

tobik@

Daemon
Developer

Thanks: 1,327
Messages: 1,908

#4
this is a clean installation on which I simply did "portsnap auto"...
Yes, all FreeBSD releases since 10.2 are using quarterly packages by default. portsnap(8) downloads a snapshot of the HEAD branch of the ports tree.

Should I create the file /usr/local/etc/pkg/repos/FreeBSD.conf
Yes, if you want to use the latest packages. The alternative would be to checkout the 2017Q3 branch of the ports tree with e.g. svnlite co https://svn.freebsd.org/ports/branches/2017Q3 /usr/ports (delete or move the existing /usr/ports out of the way first).
 

lifeboy

New Member

Thanks: 1
Messages: 6

#5
After adding the /usr/local/etc/pkg/repos/FreeBSD.conf and upgrading the packages, mytop is now busy compiling. Thanks for the headsup!
 

scotia

Member

Thanks: 2
Messages: 39

#6
You are apparently using quarterly packages and are using a non-matching ports tree branch in combination with it. A recipe for disaster. Either switch your system to latest packages or switch to the 2017Q3 ports tree branch to match the ports framework with the packages you have installed.
tobik@ shouldn't this just work regardless of the revision of the ports tree? In lifeboy's case (and the one I am also experiencing right now), the dependency is met. My case is:
Code:
p5-XML-Parser-2.44 depends on package: perl5>=5.24<5.25 - found
There is no functional impediment to the installing package running. Great, keep building.

But of course I get
Code:
env: /usr/local/bin/perl5.24.3: No such file or directory
and the build stops. If I were to symlink my PERL binary to the expected binary, the port will install and run just fine. Surely the build failing here is a bug. The port's dependencies are met but the system won't install it (and while it's at it break the POLA).

Where is the code that points to the specific PERL version? Not in the port itself - it doesn't care (so long as it's perl5>=5.24<5.25). If I were to raise a PR do you reckon it be considered or laughed out of town?

Thanks,
Scott
 

SirDice

Administrator
Staff member
Administrator
Moderator

Thanks: 6,099
Messages: 26,992

#7
Where is the code that points to the specific PERL version? Not in the port itself
Perl is set as part of the framework to allow you to switch to different versions, see /usr/ports/Mk/bsd.default-versions.mk. But changing the default versions only works when you build from ports. Packages have pre-set defaults, options and dependencies that cannot be changed once a package is created.
 

scotia

Member

Thanks: 2
Messages: 39

#8
Thanks SirDice. Would setting
Code:
DEFAULT_VERSIONS+=  perl5=5.24.2
help any?

Still, my point remains: from a novice's perspective the port finds a valid version of PERL and then immediately bails, which is confusing. Either I'm on my own thinking this is a bug, or it is a bug (and is possibly hard to fix).
 

SirDice

Administrator
Staff member
Administrator
Moderator

Thanks: 6,099
Messages: 26,992

#9
No, that's a version it doesn't understand. Besides that, the default is already set to 5.24.

Code:
# Possible values: 5.22, 5.24, 5.26, devel
PERL5_DEFAULT?=         5.24
 

scotia

Member

Thanks: 2
Messages: 39

#12
Code:
# pkg info -x perl
perl5-5.24.2
which completely satisfies
Code:
p5-XML-Parser-2.44 depends on package: perl5>=5.24<5.25 - found
 

SirDice

Administrator
Staff member
Administrator
Moderator

Thanks: 6,099
Messages: 26,992

#13
One of the hardlinks might be broken, what does ls -li /usr/local/bin/perl* /usr/bin/perl* output?

It should output something like this:
Code:
# ls -li /usr/local/bin/perl* /usr/bin/perl*
1205087 -rwxr-xr-x  3 root  wheel   7704 Oct  8 17:55 /usr/local/bin/perl
1205087 -rwxr-xr-x  3 root  wheel   7704 Oct  8 17:55 /usr/local/bin/perl5
1205087 -rwxr-xr-x  3 root  wheel   7704 Oct  8 17:55 /usr/local/bin/perl5.24.3
1205088 -rwxr-xr-x  2 root  wheel  45405 Oct  8 17:54 /usr/local/bin/perlbug
1205089 -rwxr-xr-x  1 root  wheel    274 Oct  8 17:54 /usr/local/bin/perldoc
1205090 -rwxr-xr-x  1 root  wheel  10829 Oct  8 17:54 /usr/local/bin/perlivp
1205088 -rwxr-xr-x  2 root  wheel  45405 Oct  8 17:54 /usr/local/bin/perlthanks
Note that perl, perl5 and perl5.24.3 all point to the same inode, so these are hardlinked.
 

scotia

Member

Thanks: 2
Messages: 39

#14
All of the perls are the name inode:

Code:
# ls -li /usr/local/bin/perl* /usr/bin/perl*
 66957 lrwxr-xr-x  1 root  wheel     19 Aug 16 11:23 /usr/bin/perl -> /usr/local/bin/perl
125710 -rwxr-xr-x  3 root  wheel   6316 Aug 12 18:42 /usr/local/bin/perl
125710 -rwxr-xr-x  3 root  wheel   6316 Aug 12 18:42 /usr/local/bin/perl5
125710 -rwxr-xr-x  3 root  wheel   6316 Aug 12 18:42 /usr/local/bin/perl5.24.2
125711 -rwxr-xr-x  2 root  wheel  45406 Aug 12 18:36 /usr/local/bin/perlbug
125712 -rwxr-xr-x  1 root  wheel    274 Aug 12 18:36 /usr/local/bin/perldoc
125713 -rwxr-xr-x  1 root  wheel  10829 Aug 12 18:36 /usr/local/bin/perlivp
125711 -rwxr-xr-x  2 root  wheel  45406 Aug 12 18:36 /usr/local/bin/perlthanks
 

scotia

Member

Thanks: 2
Messages: 39

#17
xmassacre , SirDice

Guys, the gist of this (recently hijacked, by me) thread is the fact that the ports system breaks the POLA by first saying:
Code:
p5-XML-Parser-2.44 depends on package: perl5>=5.24<5.25 - found
then immediately saying:
Code:
env: /usr/local/bin/perl5.24.3: No such file or directory
Do you not also find this to be an odd pair of messages? I'll paraphase what PORTS is saying:
Code:
This port requires a certain version of PERL, which I have found.
I cannot find the version of PERL this port requires.
xmassacre: I'm reluctant to say "updating ports fixed the problem" because it has wallpapered over the problem.
SirDice: That symlink definitely should exist on some of my systems. I've read ports/UPDATING but neither the env nor the using-yet-another-hardcoded-perl-shebang solution suits my needs (sometimes).
 

tobik@

Daemon
Developer

Thanks: 1,327
Messages: 1,908

#18
If you think so then why don't you file a bug? There is no point in arguing about it here on the forums. Let the Perl maintainers take a look at it. They know that part of the ports framework the best.
the ports system breaks the POLA
POLA means something different to everbody and I think you can make your case without mentioning POLA. It's not clear if the ports framework isn't trying to prevent a bigger POLA violation than what you're seeing by refusing to install a bunch of broken ports.

Perl 5.24.2 is pretty old by now, is marked vulnerable, and if you haven't updated your system since September then you'll likely run into more trouble sooner or later if you use an updated ports tree.
 

scotia

Member

Thanks: 2
Messages: 39

#19
Will do tobik@. I'll see what happens.

While I agree that POLA is in the eye of the interpreter, i find the self-contradiction in the ports messages astonishing. Insofar as the user has no clear next step.

I'm mildly surprised that no-one else feels that those messages are confusing to a user. But that's my problem.

Scott
 
Top