View on GitHub

Mock » Feature RHEL chroots

A 'simple' chroot build environment manager for building RPMs.

Build package for RHEL

Previously, when you had to build a package for RHEL you had to use epel-7-x86_64 chroot (or similar). This chroot is made of CentOS plus EPEL. This causes a problem when you want to use real RHEL for some reason. E.g., when new RHEL is out, but CentOS not yet.

To build for RHEL you have to Red Hat subscription. You can use your existing subscription or you can use free of charge subscription.

Mock RHEL configs

Mock provides rhel-<RELEASEVER>-<TARGET_ARCH> configs which use pure RHEL. There are also rhel+epel-<RELEASEVER>-<TARGET_ARCH> configs which use RHEL plus EPEL.

Subscription configuration with Simple Content Access

If you have Simple Content Access enabled, all you need to do is register the machine you are running mock on. The register command will prompt you for your username and password.

$ sudo subscription-manager register

After this the RHEL mock configs should work without further action.

$ mock -r rhel-9-x86_64 --shell

Optionally, you can disable the subscription-manager dnf plugin if you do not need subscription repos directly on your machine.

$ sudo subscription-manager config --rhsm.auto_enable_yum_plugins 0
$ sudo sed -e '/^enabled=/ s/1/0/' -i /etc/dnf/plugins/subscription-manager.conf

Subscription configuration without Simple Content Access

If you do not have Simple Content Access enabled, you will need to both register and attach a subscription to the machine you are running mock on. The register command will prompt you for your username and password.

$ sudo subscription-manager register

Check the available subscriptions for your account, making note of the corresponding pool ID for the subscription you want to use.

$ sudo subscription-manager list --all --available
...
Pool ID:  <THE_POOL_ID>
...

Attach the desired subscription referenced by the pool ID in order to obtain the necessary entitlement keypair.

$ sudo subscription-manager attach --pool <THE_POOL_ID>
...

$ ls /etc/pki/entitlement
<KEY_ID>-key.pem  <KEY_ID>.pem

Now the RHEL mock configs should work.

$ mock -r rhel-9-x86_64 --shell

Optionally, you can disable the subscription-manager dnf plugin if you do not need subscription repos directly on your machine.

$ sudo subscription-manager config --rhsm.auto_enable_yum_plugins 0
$ sudo sed -e '/^enabled=/ s/1/0/' -i /etc/dnf/plugins/subscription-manager.conf

Multiple client keys

If there are multiple client keys, mock takes the first one in glob("/etc/pki/entitlement/<numeric-part>-key.pem") output. But users still generate configure config_opts['redhat_subscription_key_id'] in mock configuration, or on command line --config-opts=redhat_subscription_key_id=<ID>.