Installation error on Centos 7

SYSTEM INFORMATION
OS type and version Centos 7
Webmin version Latest
Virtualmin version Latest
Related packages perl

I am trying to install Virtualmin/Webmin on a Centos 7 machine I have. It has worked on other Centos 7 machines.

When I issue the command:
./install.sh -b LEMP

in the virtualmin directory the installation process starts and then I eventually get these errors:

[ERROR] Something went wrong. Exiting.
[ERROR] The last few log entries were:
→ Processing Dependency: perl(Moo) >= 2.002004 for package: perl-Authen-OATH-2.0.1-16.el8.noarch
→ Processing Dependency: perl(:MODULE_COMPAT_5.26.3) for package: perl-Authen-OATH-2.0.1-16.el8.noarch
→ Processing Dependency: perl(Types::Standard) for package: perl-Authen-OATH-2.0.1-16.el8.noarch
→ Finished Dependency Resolution
Error: Package: perl-Authen-OATH-2.0.1-16.el8.noarch (virtualmin-noarch)
Requires: perl(Moo) >= 2.002004
Error: Package: perl-Authen-OATH-2.0.1-16.el8.noarch (virtualmin-noarch)
Requires: perl(:MODULE_COMPAT_5.26.3)
Error: Package: perl-Authen-OATH-2.0.1-16.el8.noarch (virtualmin-noarch)
Requires: perl(Types::Standard)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
Checking and installing system packages updates: [2022-11-15 17:13:00 CST] [ERROR] Failed with error: 1
[2022-11-15 17:13:00 CST] [ERROR] Something went wrong. Exiting.
[2022-11-15 17:13:00 CST] [ERROR] The last few log entries were:

Can someone give me a pointer on what I am doing wrong? This worked before on my other two machines.

Thanks in advance!

We have the same problem in our studio, we are investigating :frowning:

I guess it is caused by this version problem
perl(Moo) >= 2.002004 for package: perl-Authen-OATH-2.0.1-16.el8.noarch

What the heck. That’s not supposed to be deployed yet, but even if it were it should not be a hard dependency. @ilia, do you know what’s going on here? I see you added to yum-groups (too early, we aren’t done with this yet!), but it looks like it’s default rather than mandatory. So, i don’t know what’s going on.

But, also: You should not be installing on a six year old operating system. This will probably not be a problem on Rocky/Alma/RHEL 8 or 9, since those deps exist.

I am glad to hear it isn’t something stupid I had done. What is the next step?

I do plan to migrate my equipment off of Centos to Rocky or Alma but for a variety of reasons I can’t do that quite yet.

I don’t know how to fix it on CentOS 7, yet. I mean, I guess I have to roll back the yum group to get rid of perl-Authen-OATH (needed for 2FA). I’m going to try to figure out an alternative to that…but, nothing is coming to me at the moment.

Installs probably work on CentOS 7 again. (But, I still recommend against such an old distro for a new install.)

Yes, I do … as recently perl-Authen-OATH was pushed to the repos, and yum-groups have always had it (i.e. perl-Authen-OATH) as non-mandatory package, the package manager started to try installing it … but CentOS 7 (which shouldn’t be used for clean installs!) doesn’t have those dependencies (i.e. Moo and Types) so it fails.

The best solution for the time being would be to remove any dependencies inside of perl-Authen-OATH package. It will make it work for all other distros but will also won’t fail on CentOS 7.

But we still have Moo and Types. set as dependency for perl-Authen-OATH – it should be removed, as our yum-groups Defaults will automatically pull Moo and Types if present (i.e. it will work for all other distros). It will install on CentOS 7 too but when trying to enable two-factor auth it won’t work, and Webmin will suggest building Moo and Types first.

Remove the following too, as currently the error on CentOS 7 is still present:

Problem: conflicting requests
  - nothing provides perl(Moo) >= 2.002004 needed by perl-Authen-OATH-2.0.1-16.el8.vm.noarch
  - nothing provides perl(Types::Standard) needed by perl-Authen-OATH-2.0.1-16.el8.vm.noarch

… and then we can unroll this patch.

Also, perl-Authen-OATH-2.0.1-16.el8.vm.noarch.rpm (a release) should be called as perl-Authen-OATH-2.0.1-16.vm.noarch.rpm` as it’s distro neutral.

Also, looking a bit close to RPM specs, there is a better way to deal with dependencies for perl-Authen-OATH package. Specs support alternative dependencies too, so I would suggest adding as a dependencies (instead of removing it completely):

Requires: (perl(Moo) or perl)
Requires: (perl(Types::Standard) or perl)

Also, by looking at the code of perl-Authen-OATH it makes an impression that we can really easily re-write it and remove all of those deps.

But I think it’s just an impression. :slight_smile: The best would be is just to re-package it with proper dependencies and let CentOS 7 users to install Moo and Types::Standard manually, while making it work for all other RHEL 8 and newer distros out of the box.

What would be the commands for installing the missing dependencies?

As I mentioned, for a variety of reasons, I need to use Centos 7 for the time being although I am planning to move to Alma or Rocky before EOL for Centos 7.

You can just exclude perl-Authen-OATH in /etc/yum.repos.d/virtualmin.repo under [virtualmin-noarch] using:

exclude=perl-Authen-OATH

It looks like adding that line does not work as the file virtualmin.repo is replaced by the script. Any other possible workarounds?

Did you try yum clean all, I think Joe removed it from yum-groups? Also, you could manually edit install.sh script and add --exclude=perl-Authen-OATH as a param to the install command.

Or the simplest work around would be is to just prevent any writing to the file by running chattr +i /etc/yum.repos.d/virtualmin.repo command.

Thanks, Ilia.

The yum clean all did not work but the chattr +i on the repo file did allow the installation to complete.

However, I am not able to log into the server through port 10000. Should I open a new thread to address this issue or could these two things be possibly related?

Thanks again for your help!

That’s a terrible solution. Packages should depend on what they need to operate. The only right way to “remove any dependencies” is to make the package not need them.

I don’t see how it wouldn’t. It should no longer be in the yum groups…I’ll have to dig deeper later today.

@Joe, we will install perl(Moo) and perl(Types::Standard) for RHEL 8+. But for older RHEL 7 Webmin will do it (later). There is nothing terrible in doing it, considering we have everything in one repo.

But I just checked and CentOS 7 has rpm version 4.11, and logical operators to support OR is only available in rpm version 4.13+.