The first error from the log file is on /bin/dnf -d 0 -e 1 -y install foreman-postgresql claiming the dependency of rubygem-irb-1.0.0-106.module_el8.1.0+249+93480f15.noarch, etc.
This package should be in the app stream repo, are you sure the repo has been cloned properly? You might need to enable some module (probably ruby) to make it available to the host.
I looked at. I built the repository based on what was installed for a valid Foreman 2.1 downloading all the appropriate RPMs. On the original Foreman 2.1 on CentOS 8 is run “rpm -qa | grep -i irb” and I get nothing.
I remind you that I modified the instructions under Method 2 in Installing Foreman in an air-gapped environment for “@AppStream” and “@BaseOS”.
Why does the new installation require it when the original installation didn’t?
Looks like you have some packages installed that are not needed and cause dependency conflicts:
[ERROR 2020-08-02T15:15:50 main] Problem: problem with installed package rubygem-irb-1.0.0-106.module_el8.1.0+249+93480f15.noarch
[ERROR 2020-08-02T15:15:50 main] - package rubygem-irb-1.0.0-106.module_el8.1.0+249+93480f15.noarch requires ruby(rubygems) >= 3.0.3, but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - package rubygems-3.0.3-106.module_el8.1.0+249+93480f15.noarch requires rubygem(psych) >= 3.1.0, but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - rubygem-psych-3.1.0-106.module_el8.1.0+249+93480f15.i686 has inferior architecture
[ERROR 2020-08-02T15:15:50 main] - package rubygem-psych-3.1.0-106.module_el8.1.0+249+93480f15.x86_64 requires libruby.so.2.6()(64bit), but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - cannot install both ruby-libs-2.5.5-105.module_el8.1.0+214+9be47fd7.x86_64 and ruby-libs-2.6.3-106.module_el8.1.0+249+93480f15.x86_64
[ERROR 2020-08-02T15:15:50 main] - cannot install both ruby-libs-2.6.3-106.module_el8.1.0+249+93480f15.x86_64 and ruby-libs-2.5.5-105.module_el8.1.0+214+9be47fd7.x86_64
[ERROR 2020-08-02T15:15:50 main] - package rubygem-bcrypt-3.1.12-3.el8.x86_64 requires libruby.so.2.5()(64bit), but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - package foreman-2.1.0-1.el8.noarch requires rubygem(bcrypt) >= 3.1, but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - package foreman-2.1.0-1.el8.noarch requires rubygem(bcrypt) < 4.0, but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - package foreman-postgresql-2.1.0-1.el8.noarch requires foreman = 2.1.0-1.el8, but none of the providers can be installed
[ERROR 2020-08-02T15:15:50 main] - conflicting requests
I would suggest unistalling rubygem-irb and trying again. Additionally, EPEL is not required for Foreman on CentOS 8, there might be some more conflict caused by it (we know of one conflict with rubygem-net-ssh that is in the release notes, but there may be others that only show up with certain setups)
when you run “yum list installed” it should be noted that the output is formatted by default. For RPMs with very long names, the version and repository name (e.g @AppStream) will appear on the line following the RPMs name. Therefore using “yum list installed | grep @AppStream” might miss RPM file names and therefore not download the whole repository.
This is the same on CentOS 7 as well.
Is there a way to get “yum list installed” not to format the output so that all the details for a repository are on a single line? This formatting breaks basic Linux/Unix principles.
Looks like i was wrong here- Foreman on EL8 builds against ruby 2.5, which is the default still in EL8.
It would appear for some reason there are ruby 2.6 libraries available on the system, which conflict with the libraries required by foreman.
Is this a fresh EL8 machine?
Is it possible the ruby 2.6 module has been enabled? Can you share the output of dnf module list --enabled? and rpm -qa |grep ruby-?
Attached.
But I think that there is some other inherent issue with the process of creating an offline repository for CentOS 8. It seems that copying the installed RPMs seems to be an issue to begin with.rpm-qa_grep_ruby-.output.gz (184 Bytes) dnf_module_list–enabled.output.gz (700 Bytes)
The output of the rpm -qa seems to be an empty archive?
In any case, the conflict indicates some mismatch between different ruby versions being installed on the machine. I’m not sure where it came from, but the rubygem-irb you have installed is conflicting with Foreman as it requires (through a dependency chain) ruby-libs-2.6.3.
I would suggest to try uninstalling ruby-libs-2.6.3 and all the packages that depend on it, followed by rerunning the installer. As previously mentioned, you may also want to disable the EPEL repo as it is not required for Foreman and includes at least one conflicting package, possibly more.
With regards to the repo sync itself, considering that disconnected installs are not a supported and tested setup, I’m afraid that ensuring properly synced repos are available is left as an exercise to the user.