Foreman 3.19 / Katello 4.21 update fails due to pulpcore-obsolete-packages-1.5.0-2.el9 dependency conflicts

Problem:
Beginning on August 12, 2026, the supported Foreman package update process fails during DNF dependency resolution.

Command:

foreman-maintain packages update

Repository metadata downloads successfully, but DNF cannot resolve the transaction after pulpcore-obsolete-packages-1.5.0-2.el9 is introduced.

The conflicts involve installed Python 3.11 packages and dependencies that pulpcore-obsolete-packages-1.5.0-2.el9 attempts to obsolete.

Examples include:

python3.11-pyparsing
python3.11-packaging
python3.11-attrs
python3.11-async-timeout
python3.11-aiohttp
python3.11-six

The update ultimately fails with:

Failed executing dnf --disableplugin=foreman-protector update, exit status 1

This server had been updating normally using foreman-maintain prior to this repository/package change.

I have NOT attempted to bypass dependency resolution with --skip-broken, --nobest, --allowerasing, or by manually removing any Python/Pulp packages.

After the failed DNF transaction, foreman-maintain completed the foreman-installer/upgrade portion successfully. All Foreman services remain operational and Pulp continues to synchronize and publish repositories successfully.

The currently running Pulpcore services are using Python 3.12, so the apparent problem is the dependency/obsoletes handling of the remaining Python 3.11 package set during the update.

Expected outcome:

foreman-maintain packages update should complete successfully using the supported Foreman/Katello repositories without requiring manual package removal or DNF dependency workarounds.

If an additional migration step is required for the Python 3.11 to Python 3.12/Pulpcore transition, foreman-maintain should perform or document that migration rather than presenting an unsatisfiable DNF transaction.

Foreman and Proxy versions:
[root@prlforeman1 ~]# rpm -q foreman foreman-proxy katello pulpcore-obsolete-packages
foreman-3.19.1-1.el9.noarch
foreman-proxy-3.19.1-1.el9.noarch
katello-4.21.0-1.el9.noarch
pulpcore-obsolete-packages-1.3.0-1.el9.noarch
[root@prlforeman1 ~]#

Foreman and Proxy plugin versions:
Katello: 4.21.0-1.el9

Distribution and version:
Rocky Linux 9.8 (Blue Onyx)

Other relevant data:

[root@prlforeman1 ~]# foreman-maintain packages check-update
Running Check for available package updates

Check for available package updates:
Updating Subscription Management repositories.
Last metadata expiration check: 1:09:20 ago on Wed Aug 12 10:17:49 2026.
ansible-lint.noarch 6.22.2-2.el9 pulpcore
createrepo_c-libs.x86_64 1.2.1-3.el9 pulpcore
kernel.x86_64 5.14.0-687.38.1.el9_8 baseos
kernel-core.x86_64 5.14.0-687.38.1.el9_8 baseos
kernel-headers.x86_64 5.14.0-687.38.1.el9_8 appstream
kernel-modules.x86_64 5.14.0-687.38.1.el9_8 baseos
kernel-modules-core.x86_64 5.14.0-687.38.1.el9_8 baseos
kernel-tools.x86_64 5.14.0-687.38.1.el9_8 baseos
kernel-tools-libs.x86_64 5.14.0-687.38.1.el9_8 baseos
libarchive.x86_64 3.5.3-11.el9_8 baseos
libcomps.x86_64 0.1.23-2.el9 pulpcore
postgresql.x86_64 13.23-5.el9_8 appstream
postgresql-contrib.x86_64 13.23-5.el9_8 appstream
postgresql-private-libs.x86_64 13.23-5.el9_8 appstream
postgresql-server.x86_64 13.23-5.el9_8 appstream
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
pulpcore-selinux.x86_64 2.2.0-2.el9 pulpcore
python3-libcomps.x86_64 0.1.23-2.el9 pulpcore
python3.12-aiodns.noarch 3.6.1-2.el9 pulpcore
python3.12-aiofiles.noarch 25.1.0-2.el9 pulpcore
python3.12-aiohappyeyeballs.noarch 2.7.1-2.el9 pulpcore
python3.12-aiohttp.x86_64 3.14.3-1.el9 pulpcore
python3.12-aiohttp-socks.noarch 0.10.1-2.el9 pulpcore
python3.12-aiohttp-xmlrpc.noarch 1.5.0-8.el9 pulpcore
python3.12-aiosignal.noarch 1.4.0-2.el9 pulpcore
python3.12-annotated-types.noarch 0.8.0-1.el9 pulpcore
python3.12-ansible-builder.noarch 3.0.0-4.el9 pulpcore
python3.12-asgiref.noarch 3.12.1-1.el9 pulpcore
python3.12-async-lru.noarch 2.0.5-2.el9 pulpcore
python3.12-asyncio-throttle.noarch 1.0.2-9.el9 pulpcore
python3.12-attrs.noarch 23.2.0-1.el9 pulpcore
python3.12-backoff.noarch 2.2.1-7.el9 pulpcore
python3.12-bandersnatch.noarch 6.6.0-2.el9 pulpcore
python3.12-beautifulsoup4.noarch 4.15.0-3.el9 pulpcore
python3.12-bindep.noarch 2.14.0-2.el9 pulpcore
python3.12-bracex.noarch 3.0.1-1.el9 pulpcore
python3.12-brotli.x86_64 1.2.0-2.el9 pulpcore
python3.12-certifi.noarch 2026.7.22-1.el9 pulpcore
python3.12-cffi.x86_64 2.1.1-1.el9 pulpcore
python3.12-chardet.noarch 5.2.0-2.el9 pulpcore
python3.12-charset-normalizer.noarch 3.4.9-2.el9 pulpcore
python3.12-click.noarch 8.3.3-2.el9 pulpcore
python3.12-createrepo_c.x86_64 1.2.1-3.el9 pulpcore
python3.12-cryptography.x86_64 46.0.7-2.el9 pulpcore
python3.12-dateutil.noarch 2.8.2-9.el9 pulpcore
python3.12-debian.noarch 0.1.49-3.el9 pulpcore
python3.12-defusedxml.noarch 0.7.1-9.el9 pulpcore
python3.12-deprecated.noarch 1.2.18-3.el9 pulpcore
python3.12-diff-match-patch.noarch 20241021-3.el9 pulpcore
python3.12-distro.noarch 1.7.0-9.el9 pulpcore
python3.12-django.noarch 4.2.30-2.el9 pulpcore
python3.12-django-filter.noarch 25.1-2.el9 pulpcore
python3.12-django-guid.noarch 3.5.2-2.el9 pulpcore
python3.12-django-import-export.noarch 4.4.1-2.el9 pulpcore
python3.12-django-lifecycle.noarch 1.2.7-2.el9 pulpcore
python3.12-django-readonly-field.noarch 1.1.2-7.el9 pulpcore
python3.12-djangorestframework.noarch 3.16.1-2.el9 pulpcore
python3.12-djangorestframework-queryfields.noarch 1.1.0-4.el9 pulpcore
python3.12-dnspython.noarch 2.8.0-2.el9 pulpcore
python3.12-docutils.noarch 0.23-2.el9 pulpcore
python3.12-drf-access-policy.noarch 1.5.0-4.el9 pulpcore
python3.12-drf-nested-routers.noarch 0.95.0-2.el9 pulpcore
python3.12-drf-spectacular.noarch 0.29.0-2.el9 pulpcore
python3.12-dynaconf.noarch 3.2.13-2.el9 pulpcore
python3.12-email-validator.noarch 2.3.0-2.el9 pulpcore
python3.12-et-xmlfile.noarch 2.0.0-2.el9 pulpcore
python3.12-filelock.noarch 3.32.2-1.el9 pulpcore
python3.12-flake8.noarch 6.1.0-5.el9 pulpcore
python3.12-frozenlist.noarch 1.8.0-2.el9 pulpcore
python3.12-galaxy-importer.noarch 0.4.41-1.el9 pulpcore
python3.12-gitdb.noarch 4.0.12-3.el9 pulpcore
python3.12-gitpython.noarch 3.1.59-1.el9 pulpcore
python3.12-gnupg.noarch 0.5.6-2.el9 pulpcore
python3.12-googleapis-common-protos.noarch 1.75.1-1.el9 pulpcore
python3.12-grpcio.x86_64 1.70.0-3.el9 pulpcore
python3.12-gunicorn.noarch 25.1.0-2.el9 pulpcore
python3.12-humanfriendly.noarch 10.0-10.el9 pulpcore
python3.12-id.noarch 1.6.1-2.el9 pulpcore
python3.12-idna.noarch 3.18-2.el9 pulpcore
python3.12-importlib-metadata.noarch 6.0.1-8.el9 pulpcore
python3.12-importlib-resources.noarch 6.4.5-4.el9 pulpcore
python3.12-inflection.noarch 0.5.1-9.el9 pulpcore
python3.12-iniparse.noarch 0.5-3.el9 pulpcore
python3.12-jinja2.noarch 3.1.6-2.el9 pulpcore
python3.12-jq.x86_64 1.11.0-2.el9 pulpcore
python3.12-json_stream.noarch 2.4.1-2.el9 pulpcore
python3.12-json_stream_rs_tokenizer.x86_64 0.5.3-1.el9 pulpcore
python3.12-jsonschema.noarch 4.10.3-7.el9 pulpcore
python3.12-libcomps.x86_64 0.1.23-2.el9 pulpcore
python3.12-mailbits.noarch 0.2.1-3.el9 pulpcore
python3.12-markdown.noarch 3.8.2-2.el9 pulpcore
python3.12-markdown-it-py.noarch 2.2.0-2.el9 pulpcore
python3.12-markuppy.noarch 1.18-2.el9 pulpcore
python3.12-markupsafe.x86_64 3.0.3-2.el9 pulpcore
python3.12-mccabe.noarch 0.7.0-6.el9 pulpcore
python3.12-mdurl.noarch 0.1.2-3.el9 pulpcore
python3.12-multidict.x86_64 6.7.1-2.el9 pulpcore
python3.12-nh3.x86_64 0.3.6-2.el9 pulpcore
python3.12-odfpy.noarch 1.4.1-12.el9 pulpcore
python3.12-openpyxl.noarch 3.1.5-3.el9 pulpcore
python3.12-opentelemetry_api.noarch 1.40.0-3.el9 pulpcore
python3.12-opentelemetry_exporter_otlp_proto_common.noarch 1.40.0-2.el9 pulpcore
python3.12-opentelemetry_exporter_otlp_proto_http.noarch 1.40.0-2.el9 pulpcore
python3.12-opentelemetry_proto.noarch 1.40.0-2.el9 pulpcore
python3.12-opentelemetry_sdk.noarch 1.40.0-2.el9 pulpcore
python3.12-opentelemetry_semantic_conventions.noarch 0.61b0-2.el9 pulpcore
python3.12-packaging.noarch 26.2-2.el9 pulpcore
python3.12-parsley.noarch 1.3-8.el9 pulpcore
python3.12-pbr.noarch 7.0.3-2.el9 pulpcore
python3.12-pexpect.noarch 4.9.0-3.el9 pulpcore
python3.12-pillow.x86_64 12.3.0-2.el9 pulpcore
python3.12-pkginfo.noarch 1.12.1.2-4.el9 pulpcore
python3.12-platformdirs.noarch 4.11.2-1.el9 pulpcore
python3.12-productmd.noarch 1.33-9.el9 pulpcore
python3.12-propcache.x86_64 0.5.2-2.el9 pulpcore
python3.12-protobuf.x86_64 6.33.6-2.el9 pulpcore
python3.12-psycopg.noarch 3.2.13-2.el9 pulpcore
python3.12-psycopg_c.x86_64 3.2.13-2.el9 pulpcore
python3.12-ptyprocess.noarch 0.7.0-7.el9 pulpcore
python3.12-pulp-ansible.noarch 1:0.29.9-1.el9 pulpcore
python3.12-pulp-cli.noarch 0.39.1-3.el9 pulpcore
python3.12-pulp-container.noarch 2.27.11-1.el9 pulpcore
python3.12-pulp-deb.noarch 3.8.2-2.el9 pulpcore
python3.12-pulp-glue.noarch 0.39.1-3.el9 pulpcore
python3.12-pulp-python.noarch 3.27.6-1.el9 pulpcore
python3.12-pulp-rpm.noarch 3.35.3-3.el9 pulpcore
python3.12-pulpcore.noarch 3.105.15-1.el9 pulpcore
python3.12-pyOpenSSL.noarch 26.2.0-2.el9 pulpcore
python3.12-pyasn1.noarch 0.6.4-1.el9 pulpcore
python3.12-pycodestyle.noarch 2.11.1-4.el9 pulpcore
python3.12-pycparser.noarch 3.0-2.el9 pulpcore
python3.12-pydantic.noarch 2.13.4-2.el9 pulpcore
python3.12-pydantic+email.noarch 2.13.4-2.el9 pulpcore
python3.12-pydantic-core.x86_64 2.46.4-3.el9 pulpcore
python3.12-pyflakes.noarch 3.1.0-3.el9 pulpcore
python3.12-pygments.x86_64 2.20.0-2.el9 pulpcore
python3.12-pygtrie.noarch 2.5.0-7.el9 pulpcore
python3.12-pyjwt.noarch 2.13.0-2.el9 pulpcore
python3.12-pyjwt+crypto.noarch 2.13.0-2.el9 pulpcore
python3.12-pyparsing.noarch 3.3.2-2.el9 pulpcore
python3.12-pypi-attestations.noarch 0.0.28-2.el9 pulpcore
python3.12-pypi-simple.noarch 1.8.0-2.el9 pulpcore
python3.12-pyrsistent.x86_64 0.18.1-8.el9 pulpcore
python3.12-pysequoia.x86_64 0.1.34-2.el9 pulpcore
python3.12-pytz.noarch 2022.2.1-8.el9 pulpcore
python3.12-pyyaml.x86_64 6.0.3-2.el9 pulpcore
python3.12-redis.noarch 7.1.1-2.el9 pulpcore
python3.12-requests.noarch 2.33.1-2.el9 pulpcore
python3.12-requirements-parser.noarch 0.2.0-9.el9 pulpcore
python3.12-rfc3161-client.x86_64 1.0.6-2.el9 pulpcore
python3.12-rfc3986.noarch 2.0.0-2.el9 pulpcore
python3.12-rfc8785.noarch 0.1.4-2.el9 pulpcore
python3.12-rhsm.x86_64 1.19.2-9.el9 pulpcore
python3.12-rich.noarch 15.0.0-2.el9 pulpcore
python3.12-ruamel-yaml.noarch 0.18.15-2.el9 pulpcore
python3.12-ruamel-yaml-clib.x86_64 0.2.14-2.el9 pulpcore
python3.12-schema.noarch 0.7.8-2.el9 pulpcore
python3.12-securesystemslib.noarch 1.4.0-2.el9 pulpcore
python3.12-semantic-version.noarch 2.10.0-7.el9 pulpcore
python3.12-sigstore.noarch 4.5.0-1.el9 pulpcore
python3.12-sigstore-models.noarch 0.0.6-2.el9 pulpcore
python3.12-sigstore-rekor-types.noarch 0.0.18-2.el9 pulpcore
python3.12-six.noarch 1.17.0-3.el9 pulpcore
python3.12-smmap.noarch 5.0.3-2.el9 pulpcore
python3.12-socks.noarch 2.8.2-3.el9 pulpcore
python3.12-socks+asyncio.noarch 2.8.2-3.el9 pulpcore
python3.12-solv.x86_64 0.7.28-3.el9 pulpcore
python3.12-soupsieve.noarch 2.9.2-1.el9 pulpcore
python3.12-sqlparse.noarch 0.5.5-2.el9 pulpcore
python3.12-tablib.noarch 3.10.0-1.el9 pulpcore
python3.12-tomli_w.noarch 1.2.0-3.el9 pulpcore
python3.12-tuf.noarch 7.0.0-2.el9 pulpcore
python3.12-typing-extensions.noarch 4.16.0-2.el9 pulpcore
python3.12-typing-inspection.noarch 0.4.3-1.el9 pulpcore
python3.12-uritemplate.noarch 4.2.0-2.el9 pulpcore
python3.12-url-normalize.noarch 2.2.1-2.el9 pulpcore
python3.12-urllib3.noarch 2.7.0-2.el9 pulpcore
python3.12-urlman.noarch 2.0.1-7.el9 pulpcore
python3.12-uuid6.noarch 2025.0.1-2.el9 pulpcore
python3.12-wcmatch.noarch 11.0-1.el9 pulpcore
python3.12-whitenoise.noarch 6.12.0-2.el9 pulpcore
python3.12-wrapt.x86_64 1.17.3-2.el9 pulpcore
python3.12-yarl.noarch 1.23.0-2.el9 pulpcore
python3.12-zipp.noarch 4.1.0-3.el9 pulpcore
Obsoleting Packages
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-aiodns.noarch 3.2.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-aiofiles.noarch 24.1.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-aiohappyeyeballs.noarch 2.4.3-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-aiohttp.x86_64 3.10.8-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-aiohttp-xmlrpc.noarch 1.5.0-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-aiosignal.noarch 1.3.1-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-asgiref.noarch 3.8.1-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-async-lru.noarch 2.0.4-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-async-timeout.noarch 4.0.3-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-asyncio-throttle.noarch 1.0.2-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-attrs.noarch 22.2.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-backoff.noarch 2.2.1-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-bleach.noarch 3.3.1-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-bleach-allowlist.noarch 1.0.3-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-brotli.x86_64 1.0.9-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-certifi.noarch 2022.12.7-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-cffi.x86_64 1.17.1-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-charset-normalizer.noarch 3.4.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-click.noarch 8.1.7-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-click-shell.noarch 2.1-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-cryptography.x86_64 42.0.8-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-dateutil.noarch 2.8.2-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-defusedxml.noarch 0.7.1-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-deprecated.noarch 1.2.14-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-diff-match-patch.noarch 20241021-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-et-xmlfile.noarch 1.1.0-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-frozenlist.x86_64 1.5.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-gitdb.noarch 4.0.11-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-gitpython.noarch 3.1.43-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-gnupg.noarch 0.5.3-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-googleapis-common-protos.noarch 1.65.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-grpcio.x86_64 1.67.1-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-idna.noarch 3.10-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-importlib-metadata.noarch 6.0.1-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-importlib-resources.noarch 6.4.5-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-inflection.noarch 0.5.1-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-jinja2.noarch 3.1.4-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-jq.x86_64 1.8.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-json_stream.noarch 2.3.2-4.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-json_stream_rs_tokenizer.x86_64 0.4.26-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-lxml.x86_64 5.3.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-markuppy.noarch 1.14-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-mccabe.noarch 0.7.0-4.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-multidict.x86_64 6.1.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-odfpy.noarch 1.4.1-10.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-openpyxl.noarch 3.1.5-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-parsley.noarch 1.3-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pillow.x86_64 10.3.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-productmd.noarch 1.33-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-protobuf.x86_64 4.25.5-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-psycopg.noarch 3.2.3-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-psycopg_c.x86_64 3.2.3-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pyOpenSSL.noarch 24.2.1-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pycares.x86_64 4.4.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pycparser.noarch 2.22-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pyflakes.noarch 3.1.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pygtrie.noarch 2.5.0-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pyjwt.noarch 2.8.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pyparsing.noarch 3.1.4-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pyrsistent.x86_64 0.18.1-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pytz.noarch 2022.2.1-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-pyyaml.x86_64 6.0.2-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-redis.noarch 5.0.8-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-requests.noarch 2.32.3-2.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-requirements-parser.noarch 0.2.0-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-rhsm.x86_64 1.19.2-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-schema.noarch 0.7.7-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-semantic-version.noarch 2.10.0-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-six.noarch 1.16.0-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-smmap.noarch 5.0.1-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-solv.x86_64 0.7.28-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-tablib.noarch 3.5.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-toml.noarch 0.10.2-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-tomli_w.noarch 1.0.0-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-typing-extensions.noarch 4.12.2-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-uritemplate.noarch 4.1.1-6.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-url-normalize.noarch 1.4.3-8.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-urllib3.noarch 2.2.3-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-urlman.noarch 2.0.1-5.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-uuid6.noarch 2024.7.10-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-whitenoise.noarch 6.7.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-wrapt.x86_64 1.16.0-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-xlrd.noarch 2.0.1-9.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-xlwt.noarch 1.3.0-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-yarl.x86_64 1.13.1-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.11-zipp.noarch 3.20.2-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-async-timeout.noarch 4.0.3-2.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-bleach.noarch 3.3.1-7.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-bleach-allowlist.noarch 1.0.3-8.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-enrich.noarch 1.2.6-11.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-tenacity.noarch 7.0.0-8.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-webencodings.noarch 0.5.1-8.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-xlrd.noarch 2.0.2-1.el9 @pulpcore
pulpcore-obsolete-packages.noarch 1.5.0-2.el9 pulpcore
python3.12-xlwt.noarch 1.3.0-8.el9 @pulpcore
[OK]

[root@prlforeman1 ~]# rpm -q foreman foreman-proxy katello pulpcore-obsolete-packages
foreman-3.19.1-1.el9.noarch
foreman-proxy-3.19.1-1.el9.noarch
katello-4.21.0-1.el9.noarch
pulpcore-obsolete-packages-1.3.0-1.el9.noarch
[root@prlforeman1 ~]# cat /etc/os-release
NAME=“Rocky Linux”
VERSION=“9.8 (Blue Onyx)”
RELEASE_TYPE=“stable”
ID=“rocky”
ID_LIKE=“rhel centos fedora”
VERSION_ID=“9.8”
PLATFORM_ID=“platform:el9”
PRETTY_NAME=“Rocky Linux 9.8 (Blue Onyx)”
ANSI_COLOR=“0;32”
LOGO=“fedora-logo-icon”
CPE_NAME=“cpe:/o:rocky:rocky:9::baseos”
HOME_URL=“https://rockylinux.org/
VENDOR_NAME=“RESF”
VENDOR_URL=“https://resf.org/
BUG_REPORT_URL=“https://bugs.rockylinux.org/
SUPPORT_END=“2032-05-31”
ROCKY_SUPPORT_PRODUCT=“Rocky-Linux-9”
ROCKY_SUPPORT_PRODUCT_VERSION=“9.8”
REDHAT_SUPPORT_PRODUCT=“Rocky Linux”
REDHAT_SUPPORT_PRODUCT_VERSION=“9.8”
[root@prlforeman1 ~]# foreman-maintain packages update
Running update packages in unlocked session

Confirm update all is intentional:
WARNING: No specific packages to update were provided
so we are going to update all available packages. We
recommend using the update command to update to a minor
version and/or operating system using ‘foreman-maintain update’.
To upgrade to the next Katello version use ‘foreman-maintain upgrade’.
Do you want to proceed with update of everything regardless of
the recommendations?, [y(yes), q(quit)] y
[OK]

Confirm installer run is allowed:
WARNING: This script runs foreman-installer after the dnf execution
to ensure the Katello is in a consistent state.
As a result some of your services may be restarted.
Do you want to proceed?, [y(yes), q(quit)] y
[OK]

Unlock packages: [OK]

Update package(s) : Updating Subscription Management repositories.
Cache was expired
56 files removed
Updating Subscription Management repositories.
Foreman 3.19 3.4 MB/s | 2.2 MB 00:00
Foreman plugins 3.19 7.2 MB/s | 1.9 MB 00:00
Katello 4.21 884 kB/s | 202 kB 00:00
Candlepin: an open source entitlement managemen 167 kB/s | 32 kB 00:00
pulpcore: Fetch, Upload, Organize, and Distribu 2.0 MB/s | 489 kB 00:00
Puppet 8 Repository el 9 - x86_64 4.2 MB/s | 3.7 MB 00:00
Rocky Linux 9 - BaseOS 15 MB/s | 20 MB 00:01
Rocky Linux 9 - AppStream 9.4 MB/s | 19 MB 00:02
Rocky Linux 9 - Extras 32 kB/s | 17 kB 00:00
Error:
Problem 1: package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-pyparsing < 3.1.4-2 provided by python3.11-pyparsing-3.1.4-1.el9.noarch from @System

  • package python3.11-packaging-24.1-1.el9.noarch from @System requires python3.11-pyparsing >= 2.0.2, but none of the providers can be installed
  • cannot install the best update candidate for package pulpcore-obsolete-packages-1.3.0-1.el9.noarch
  • problem with installed package python3.11-packaging-24.1-1.el9.noarch
    Problem 2: package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-attrs < 22.2.0-2 provided by python3.11-attrs-22.2.0-1.el9.noarch from @System
  • package python3.11-mailbits-0.2.1-1.el9.noarch from @System requires python3.11-attrs >= 18.1, but none of the providers can be installed
  • package python3.11-mailbits-0.2.1-1.el9.noarch from @System requires python3.11dist(attrs) >= 18.1, but none of the providers can be installed
  • cannot install the best update candidate for package python3.11-aiodns-3.2.0-1.el9.noarch
  • problem with installed package python3.11-mailbits-0.2.1-1.el9.noarch
    Problem 3: package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-async-timeout < 4.0.3-2 provided by python3.11-async-timeout-4.0.3-1.el9.noarch from @System
  • package python3.11-socks-2.5.3-1.el9.noarch from @System requires python3.11-async-timeout >= 3.0.1, but none of the providers can be installed
  • cannot install the best update candidate for package python3.11-aiofiles-24.1.0-1.el9.noarch
  • problem with installed package python3.11-socks-2.5.3-1.el9.noarch
    Problem 4: package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-aiohttp < 3.10.11-2 provided by python3.11-aiohttp-3.10.8-1.el9.x86_64 from @System
  • package python3.11-aiohttp-socks-0.8.4-1.el9.noarch from @System requires python3.11-aiohttp >= 2.3.2, but none of the providers can be installed
  • cannot install the best update candidate for package python3.11-aiohappyeyeballs-2.4.3-1.el9.noarch
  • problem with installed package python3.11-aiohttp-socks-0.8.4-1.el9.noarch
    Problem 5: package python3.11-mailbits-0.2.1-1.el9.noarch from @System requires python3.11-attrs >= 18.1, but none of the providers can be installed
  • package python3.11-mailbits-0.2.1-1.el9.noarch from @System requires python3.11dist(attrs) >= 18.1, but none of the providers can be installed
  • package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-attrs < 22.2.0-2 provided by python3.11-attrs-22.2.0-1.el9.noarch from @System
  • package python3.11-pypi-simple-0.10.0-1.el9.noarch from @System requires (python3.11dist(mailbits) >= 0.2 with python3.11dist(mailbits) < 1), but none of the providers can be installed
  • package python3.11-pypi-simple-0.10.0-1.el9.noarch from @System requires python3.11-mailbits >= 0.2, but none of the providers can be installed
  • cannot install the best update candidate for package python3.11-aiohttp-3.10.8-1.el9.x86_64
  • problem with installed package python3.11-pypi-simple-0.10.0-1.el9.noarch
    Problem 6: package python3.11-iniparse-0.4-40.el9.noarch from @System requires python3.11-six, but none of the providers can be installed
  • package python3.11-iniparse-0.4-40.el9.noarch from @System requires python3.11dist(six), but none of the providers can be installed
  • package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-six < 1.17.0-2 provided by python3.11-six-1.16.0-6.el9.noarch from @System
  • package pulpcore-obsolete-packages-1.5.0-2.el9.noarch from pulpcore obsoletes python3.11-six < 1.17.0-2 provided by python3.11-six-1.16.0-1.el9.noarch from appstream
  • cannot install the best update candidate for package python3.11-aiohttp-xmlrpc-1.5.0-6.el9.noarch
  • problem with installed package python3.11-iniparse-0.4-40.el9.noarch
    (try to add ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages)
    [WARNING]
    Failed executing dnf --disableplugin=foreman-protector update, exit status 1

I’m going to take a look.

@jpasqualetto created Update list of python3.11 packages to be obsoleted by jpasqualetto · Pull Request #2862 · theforeman/pulpcore-packaging · GitHub 2 weeks ago we did not merged due to all rebuild that we did for EL10 packages. I’ll have one build ready later today to fix this.

Thank you for looking into this and working on a fix. Your work is appreciated.

Can you try to run one:

foreman-maintain packages install https://yum.theforeman.org/pulpcore/nightly/el9/x86_64/pulpcore-obsolete-packages-1.5.0-4.el9.noarch.rpm

Based on your logs it should clear the old python3.11 packages.

Confirmed — the fix works.

I installed the updated pulpcore-obsolete-packages-1.5.0-4.el9.noarch.rpm from the nightly repository using the command you provided:


foreman-maintain packages install https://yum.theforeman.org/pulpcore/nightly/el9/x86_64/pulpcore-obsolete-packages-1.5.0-4.el9.noarch.rpm

This time DNF successfully resolved the dependencies and the package transaction completed:


Dependencies resolved.
...
Transaction check succeeded.
Transaction test succeeded.
...
Complete!
[OK]

foreman-installer then ran successfully and completed without errors.

After that, I ran my normal full update:


foreman-maintain packages update

This was a fairly substantial update (356 package operations, including the Pulpcore/Python 3.12 stack and a new Rocky Linux kernel), and the entire update completed successfully. foreman-installer also completed successfully afterward:


Success!
* Foreman is running at https://prlforeman1.norwood-cs.com
* Foreman Proxy is running at https://prlforeman1.norwood-cs.com:9090
...
[OK]

I then rebooted the server to load the new kernel. After the reboot, I performed a final health check:


# foreman-maintain service status --brief
...
All services are running                                            [OK]

And hammer status reports everything healthy:


Version:           3.19.1
API Version:       v2
Database:
    Status:          ok

Smart Proxies:
    prlforeman1.norwood-cs.com
    Status:          ok

candlepin:
    Status:          ok

candlepin_auth:
    Status:          ok

katello_events:
    Status:          ok
    message:         0 Processed, 0 Failed

pulp3:
    Status:          ok

pulp3_content:
    Status:          ok

foreman_tasks:
    Status:          ok

Foreman 3.19.1 / Katello 4.21.0 is now fully patched, rebooted, and operating normally.

Thank you very much for jumping on this so quickly, identifying the missing packaging change, building the corrected package, and giving me the opportunity to test it. I honestly expected I might have to wait several days for a downstream fix, so having a test build available the same afternoon was greatly appreciated.

I was happy to test the fix against a real Foreman/Katello installation, and I can confirm that pulpcore-obsolete-packages-1.5.0-4.el9 resolved the dependency problem I originally reported and allowed the complete update to finish successfully.

Thanks again for the quick turnaround!