How to create a custom cloned channel from a specific update level on Red Hat Satellite

Solution Verified - Updated -


  • Red Hat Satellite 5.3 and later
  • spacewalk-create-channel
  • spacewalk-clone-by-date


  • How to create a channel from a specific update level of a release?
  • How to download manifest files for each of the point releases? (to update the ./data/ directory)
  • What is the spacewalk-create-channel utility and how to create a clone of the Red Hat channels as per the RHEL update level, for example RHEL 5.2?
  • How to create a base channel linked to a minor release of RHEL (example RHEL 5.3) in order to subscribe systems to it to receive updates only up to that minor release and not the latest updates?
  • How to maintain separately different minor versions of Red Hat Enterprise Linux with RHN Satellite?
  • Can we create a RHEL channel for a specific (lower) version of RHEL?
  • How to create a static custom channel for a specific version of a RHEL release?


  • Use the spacewalk-create-channel utility to create channels corresponding to RHEL update levels.

  • Requirements for the solution below: The spacewalk-create-channel script is part of the spacewalk-remote-utils package and hence this package needs to be installed on RHN Satellite. To install this package, you need to subscribe the Satellite server to the RHN Tools channel. If the system is subscribed, the package can be installed using 'yum install spacewalk-remote-utils'.

# rhn-channel -L -u <user> -p <passwd> | grep -i tools # -L is available on RHEL 6
# rhn-channel -u <user> -p <passwd> -a -c rhn-tools-rhel-x86_64-server-6
# yum install spacewalk-remote-utils
  • Example - create a clone of RHEL 6 GA:
# spacewalk-create-channel -l admin -v 6 -r Server -u GOLD -a x86_64 -d rhel6-gold
You have not specified a source channel, we will try to determine it from inputs
Trying with source channel: rhel-x86_64-server-6
Creating channel, rhel6-gold, with arch x86_64 3431 packages in source file to push.
Pushing 3393 packages, please wait.
Successfully pushed 3393 packages out of 3431
  • Example - create a clone of RHEL 6.1 using the package manifest (-D option):
# spacewalk-create-channel -l admin -D /usr/share/rhn/channel-data/6-u1-server-x86_64 -d rhel6u1
You have not specified a source channel, we will try to determine it from inputs
Trying with source channel: rhel-x86_64-server-6
Creating channel, rhel6u1, with arch x86_64 3480 packages in source file to push.
Pushing 3480 packages, please wait.
Successfully pushed 3480 packages out of 3480
  • The above commands create parent (or base) channels. Systems can then be subscribed to those parent channels to prevent them from receiving any further updates.

  • It is also possible to add child channels to those base channels. Use -e (extras) and -P (parent) options. The -e option will tell the script to look for a manifest file with that name, and -P tells it to put the child channel under that parent channel. The source child channel must exist - import it with satellite-sync if it does not.

# ls /usr/share/rhn/channel-data/6-u1-server-x86_64-Supplementary # list manifest file

# satellite-sync -l # look for that child channel
10:57:51 Retrieving / parsing channel data
10:59:09    p = previously imported/synced channel
10:59:09    . = channel not yet imported/synced
10:59:16       . rhel-x86_64-server-supplementary-6        408 

# satellite-sync -c rhel-x86_64-server-supplementary-6 # import the child channel

# spacewalk-create-channel -l admin -v 6 -u u1 -r Server -a x86_64 -e Supplementary -P rhel6u1 -d rhel6u1-sup
You have not specified a source channel, we will try to determine it from inputs
Trying with source channel: rhel-x86_64-server-supplementary-6
Creating channel, rhel6u1-sup, with arch x86_64 with parent rhel6u1
29 packages in source file to push.
Pushing 21 packages, please wait.
Successfully pushed 21 packages out of 29
  • Another available command line tool (starting in Satellite 5.4.1) is spacewalk-clone-by-date. It operates by copying packages associated with errata, as of a given date. From the man page: "Script to clone software channels and errata up to specific dates ensuring any added packages have their dependencies satisfied. Any destination channels that do not exist will be created. Example :
# spacewalk-clone-by-date -u admin -d 2013-02-20 -l rhel-x86_64-server-6 clone-6-3-full

this will clone 6.3 by cloning all released errata of the RHEL6 x86_64 server channel until the day before the release date of 6.4. For more information with the usage of the script refer to it's manpage : man spacewalk-clone-by-date


The Red Hat Network Tools channel is not bound to a specific minor RHEL release, so we can not create a cloned channel for it using spacewalk-create-channel. Use normal process to clone the Red Hat Network Tools channel.

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.


This errors out for child channels like when using "-e clustering" or "-e cluster-storage". Not sure why.

using this, only packages are put in the channel but no errata.
Updating a subscribed system however still installs the latest packages for the minor version specified so what is the difference between these package updates and errata updates?

How to add errata and avoid that their software packages rely (depend) on packages that are newer than the minor version specified?

how to create a whitelist of packages allowed for updating?

spacewalk-create-channel is an utility to create a channel with exact package set of a specific RHEL update release (Example RHEL 6.3). It doesn't refer the errata but just refers the package list of the specific release and creates a channel with those packages. This utility is generally used when there is need to manage systems to specific rhel release

If one needs to consider errata's for patch management then the utility to create custom channel is spacewalk-clone-by-date which would clone the errata's release till the specific date. But it will then not consider any packages which are not associated with an errata.

It is not recommended to mix usage of spacewalk-clone-by-date and spacewalk-create-clone, since one does a list of pkgs, the other a list of errata. By default all packages which are matching to the conditions provided are considered for addition into the custom channel. If you have certain packages which you want to blacklist then there is such an option available in spacewalk-clone-by-date utility.


How would I create a 6.5 channel which has all the pkgs/errata?
1) spacewalk-clone-by-date -u admin -l rhel-x86_64-server-6 npd-rhel-6.5-x86_64 -d 2013-11-28
This pulls all the packages upto release 6.5 (which includes earlier releases also). So the channel becomes huge 10,000+ pkgs.
2) spacewalk-create-channel -l admin -s localhost -v6 -u U5 -r server -a x86_64 -c rhel-x86_64-server-6 -d rhel-x86_64-server-6.5
This one creates channel with only 6.5 pkges (about 3500+). But it doesn't have other packages which were release later (i mean all other pkgs before the release of update 6.

I need to add security errata to a cloned-by-date channel. I can do this with the Add Red Hat Errata under Manage Software Channels, but the dependencies for the added packages are not added to the channel. How do I get consistent Channel content in this scenario?

Use Clone Errata (rather than Add Errata)... BUT this still does not solve the dependencies :-(

Please Let me know is cloning errata from redhat portal without subscription and free of charge? please guide me for network with 5 redhat systems, what is the open source feature to use errata and package management. what about CentOS, Can they receive update too?

This document appears to be out of date, as it references RHN. I have a Satellite 5 server running on RHEL6.1 and am unable to add the tools channel in order to install the spacewalk-create-channel command (if that even still exists)