Spacewalk is the upstream-project for Redhat Satellite. It’s a tool which is mainly used to list, deploy and manage packages and updates to Fedora, CentOS, SLE and even Debian installations. Currently, there is no official documentation on how to run Spacewalk on a el7 based installation like CentOS 7. The installation is not a straightforward as one might think but it is possible.
Spacewalk 2.3
Since the release of Spacewalk 2.3, it is now officially supported on CentOS 7. You can follow my post about this here: Install and use Spacewalk 2.3 on CentOS 7
Challenge accepted
At the time of writing, there was no official documentation on how to install Spacewalk on an el 7 based system. A repository on spacewalkproject.org which had el7 in the name seems to be present but it some missing dependencies and has some other issues.
The explained “solution” or workaround to install Spacewalk is not something you would want to do on a production system since we are using packages outside our package manager, change supplied files. Updates could and will break them.
Preparation
Spacewalk requires a lot of packages that are not in the official repositories so the first step is to add all necessary sources for those packages:
EPEL:
Latest release can be found here
Installation:
[jensd@spacewalk ~]$ sudo yum install http://epel.mirror.nucleus.be/7/x86_64/e/epel-release-7-1.noarch.rpm ... Complete!
jpackage:
Installation:
cat | sudo tee /etc/yum.repos.d/jpackage-generic.repo << EOF [jpackage-generic] name=JPackage generic #baseurl=http://mirrors.dotsrc.org/pub/jpackage/5.0/generic/free/ mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0 enabled=1 gpgcheck=1 gpgkey=http://www.jpackage.org/jpackage.asc EOF
Spacewalk repo:
Installation:
[jensd@spacewalk ~]$ sudo yum install http://yum.spacewalkproject.org/2.2/RHEL/7/x86_64/spacewalk-repo-2.2-1.el7.noarch.rpm ... Complete!
According to the el6-documentation, this should be enough to complete the installation of package spacewalk-postgresql (which contains all necessary dependencies) but as you can see, we still have some issues:
[jensd@spacewalk ~]$ sudo yum install spacewalk-postgresql ... --> Finished Dependency Resolution Error: Package: spacewalk-base-2.2.30-1.el7.noarch (spacewalk) Requires: perl(Mail::RFC822::Address) Error: Package: spacewalk-sniglets-2.2.30-1.el7.noarch (spacewalk) Requires: perl(Mail::RFC822::Address) Error: Package: spacewalk-postgresql-2.2.2-1.el7.noarch (spacewalk) Requires: spacewalk-java-postgresql Error: Package: spacewalk-setup-2.2.13-1.el7.noarch (spacewalk) Requires: perl(Mail::RFC822::Address) Error: Package: spacewalk-setup-jabberd-2.0.1-1.el7.noarch (spacewalk) Requires: jabberd Error: Package: SatConfig-general-1.216.31-1.el7.noarch (spacewalk) Requires: perl(Net::IPv4Addr) Error: Package: spacewalk-common-2.2.2-1.el7.noarch (spacewalk) Requires: spacewalk-java Error: Package: spacewalk-common-2.2.2-1.el7.noarch (spacewalk) Requires: spacewalk-taskomatic You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
What the above is saying, is that we are missing some dependencies that couldn’t be found in the configured repositories. For some of them, we’ll have to find an RPM outside our repositories.
List of packages that are missing:
- perl(Mail::RFC822::Address)
- perl(Net::IPv4Addr)
- jabberd
- spacewalk-java
- spacewalk-java-postgresql
- spacewalk-taskomatic
Since RHEL 7 and CentOS 7 are based on Fedora fc17 and fc18, our biggest chance is to use packages from one of those releases.
Under here is the solution which I found for each of those packages. Again, this is not a recommended way to install Spacewalk to use in production but I works in case you want tot give it a go.
perl(Mail::RFC822::Address)
I found a compatible package (from FC18) here
Mirror: http://jensd.be/download/perl-Mail-RFC822-Address-0.3-12.fc18.noarch.rpm
Installation:
[jensd@spacewalk ~]$ sudo yum install http://jensd.be/download/perl-Mail-RFC822-Address-0.3-12.fc18.noarch.rpm ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: perl-Mail-RFC822-Address noarch 0.3-12.fc18 /perl-Mail-RFC822-Address-0.3-12.fc18.noarch 9.9 k Installing for dependencies: perl x86_64 4:5.16.3-283.el7 base 8.0 M perl-Carp noarch 1.26-244.el7 base 19 k perl-Encode x86_64 2.51-7.el7 base 1.5 M perl-Exporter noarch 5.68-3.el7 base 28 k perl-File-Path noarch 2.09-2.el7 base 26 k perl-File-Temp noarch 0.23.01-3.el7 base 56 k perl-Filter x86_64 1.49-3.el7 base 76 k perl-Getopt-Long noarch 2.40-2.el7 base 56 k perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k perl-PathTools x86_64 3.40-5.el7 base 82 k perl-Pod-Escapes noarch 1:1.04-283.el7 base 49 k perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k perl-Pod-Usage noarch 1.63-3.el7 base 27 k perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k perl-Socket x86_64 2.010-3.el7 base 49 k perl-Storable x86_64 2.45-3.el7 base 77 k perl-Text-ParseWords noarch 3.29-4.el7 base 14 k perl-Time-Local noarch 1.2300-2.el7 base 24 k perl-constant noarch 1.27-2.el7 base 19 k perl-libs x86_64 4:5.16.3-283.el7 base 686 k perl-macros x86_64 4:5.16.3-283.el7 base 42 k perl-parent noarch 1:0.225-244.el7 base 12 k perl-podlators noarch 2.5.1-3.el7 base 112 k perl-threads x86_64 1.87-4.el7 base 49 k perl-threads-shared x86_64 1.43-6.el7 base 39 k Transaction Summary ============================================================================================= Install 1 Package (+26 Dependent packages) Total size: 11 M Total download size: 11 M Installed size: 36 M Is this ok [y/d/N]: y Downloading packages: ... Complete!
perl(Net::IPv4Addr)
I found a compatible package (from FC18) here
Mirror: http://jensd.be/download/perl-Net-IPv4Addr-0.10-14.fc18.noarch.rpm
Installation:
[jensd@spacewalk ~]$ sudo yum install http://jensd.be/download/perl-Net-IPv4Addr-0.10-14.fc18.noarch.rpm ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: perl-Net-IPv4Addr noarch 0.10-14.fc18 /perl-Net-IPv4Addr-0.10-14.fc18.noarch 20 k Transaction Summary ============================================================================================= Install 1 Package Total size: 20 k Installed size: 20 k Is this ok [y/d/N]: y Downloading packages: ... Complete!
jabberd
I found a compatible package (from FC17) here
It has a dependency for udns which I found (from FC18) here
Mirror:
http://jensd.be/download/jabberd-2.2.14-4.fc17.x86_64.rpm
http://jensd.be/download/udns-0.2-1.fc18.x86_64.rpm
Installation:
[jensd@spacewalk ~]$ sudo yum install http://jensd.be/download/udns-0.2-1.fc18.x86_64.rpm ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: udns x86_64 0.2-1.fc18 /udns-0.2-1.fc18.x86_64 146 k Transaction Summary ============================================================================================= Install 1 Package Total size: 146 k Installed size: 146 k Is this ok [y/d/N]: y Downloading packages: ... Complete! [jensd@spacewalk ~]$ sudo yum install http://jensd.be/download/jabberd-2.2.14-4.fc17.x86_64.rpm ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: jabberd x86_64 2.2.14-4.fc17 /jabberd-2.2.14-4.fc17.x86_64 1.8 M Installing for dependencies: libdb4 x86_64 4.8.30-13.el7 epel 607 k libgsasl x86_64 1.8.0-2.el7 epel 127 k libntlm x86_64 1.3-6.el7 base 44 k libyaml x86_64 0.1.4-10.el7 base 55 k mailcap noarch 2.1.41-2.el7 base 31 k mariadb-libs x86_64 1:5.5.37-1.el7_0 updates 752 k perl-Authen-PAM x86_64 0.16-16.el7 epel 34 k perl-BerkeleyDB x86_64 0.51-4.el7 epel 148 k perl-Business-ISBN noarch 2.06-2.el7 base 25 k perl-Business-ISBN-Data noarch 20120719.001-2.el7 base 24 k perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k perl-Data-Dumper x86_64 2.145-3.el7 base 47 k perl-Digest noarch 1.17-245.el7 base 23 k perl-Digest-MD5 x86_64 2.52-3.el7 base 30 k perl-Encode-Locale noarch 1.03-5.el7 base 16 k perl-File-Listing noarch 6.04-7.el7 base 13 k perl-HTML-Parser x86_64 3.71-4.el7 base 115 k perl-HTML-Tagset noarch 3.20-15.el7 base 18 k perl-HTTP-Cookies noarch 6.01-5.el7 base 26 k perl-HTTP-Daemon noarch 6.01-5.el7 base 20 k perl-HTTP-Date noarch 6.02-8.el7 base 14 k perl-HTTP-Message noarch 6.06-6.el7 base 82 k perl-HTTP-Negotiate noarch 6.01-5.el7 base 17 k perl-IO-Compress noarch 2.061-2.el7 base 260 k perl-IO-HTML noarch 1.00-2.el7 base 23 k perl-IO-Socket-IP noarch 0.21-4.el7 base 35 k perl-IO-Socket-SSL noarch 1.94-3.el7 base 113 k perl-LWP-MediaTypes noarch 6.02-2.el7 base 24 k perl-Net-HTTP noarch 6.06-2.el7 base 29 k perl-Net-LibIDN x86_64 0.12-15.el7 base 28 k perl-Net-SSLeay x86_64 1.55-3.el7 base 285 k perl-TimeDate noarch 1:2.30-2.el7 base 52 k perl-URI noarch 1.60-9.el7 base 106 k perl-WWW-RobotRules noarch 6.02-5.el7 base 18 k perl-XML-NamespaceSupport noarch 1.11-10.el7 base 18 k perl-XML-Parser x86_64 2.41-10.el7 base 223 k perl-XML-SAX noarch 0.99-9.el7 base 63 k perl-XML-SAX-Base noarch 1.08-7.el7 base 32 k perl-XML-Simple noarch 2.20-5.el7 base 74 k perl-libwww-perl noarch 6.05-2.el7 base 205 k postgresql-libs x86_64 9.2.7-1.el7 base 229 k ruby x86_64 2.0.0.353-20.el7 base 66 k ruby-irb noarch 2.0.0.353-20.el7 base 87 k ruby-libs x86_64 2.0.0.353-20.el7 base 2.8 M rubygem-bigdecimal x86_64 1.2.0-20.el7 base 78 k rubygem-io-console x86_64 0.4.2-20.el7 base 49 k rubygem-json x86_64 1.7.7-20.el7 base 74 k rubygem-psych x86_64 2.0.0-20.el7 base 76 k rubygem-rdoc noarch 4.0.0-20.el7 base 317 k rubygems noarch 2.0.14-20.el7 base 211 k Transaction Summary ============================================================================================= Install 1 Package (+51 Dependent packages) Total size: 9.6 M Total download size: 7.8 M Installed size: 27 M Is this ok [y/d/N]: y Downloading packages: ... Complete!
spacewalk-java, spacewalk-java-postgresql & spacewalk-taskomatic
Appaerently, the above listed spacewalk packages do not exist (yet) in the el7 repository of Spacewalk but they do exist in the nightly build. By enabling the spacewalk-nightly.repo, we can use those packages:
[jensd@spacewalk ~]$ sudo sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/spacewalk-nightly.repo
When trying to run the installation now, one dependency is still missing…
[jensd@spacewalk ~]$ sudo yum install spacewalk-postgresql ... --> Finished Dependency Resolution Error: Package: spacewalk-java-2.3.27-1.el7.noarch (spacewalk-nightly) Requires: dojo You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
Dojo
I found a compatible package (from FC18) here
Mirror:
http://jensd.be/download/dojo-1.8.3-1.fc18.noarch.rpm
Installation:
[jensd@spacewalk ~]$ sudo yum install http://jensd.be/download/dojo-1.8.3-1.fc18.noarch.rpm ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: dojo noarch 1.8.3-1.fc18 /dojo-1.8.3-1.fc18.noarch 29 M Installing for dependencies: apr x86_64 1.4.8-3.el7 base 103 k apr-util x86_64 1.5.2-6.el7 base 92 k httpd x86_64 2.4.6-18.el7.centos updates 2.7 M httpd-tools x86_64 2.4.6-18.el7.centos updates 77 k Transaction Summary ============================================================================================= Install 1 Package (+4 Dependent packages) Total size: 32 M Total download size: 2.9 M Installed size: 39 M Is this ok [y/d/N]: y Downloading packages: ... Complete!
Installation
Finally, we can install spacewalk-postgresql without issues:
[jensd@spacewalk ~]$ sudo yum install spacewalk-postgresql ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: spacewalk-postgresql noarch 2.2.2-1.el7 spacewalk 6.2 k Installing for dependencies: ... Transaction Summary ============================================================================================= Install 1 Package (+414 Dependent packages) Upgrade ( 7 Dependent packages) Total download size: 198 M Is this ok [y/d/N]: y Downloading packages: ... Complete!
Postgresql database
After the installation, we first need to install and prepare our Postgresql-database for Spacewalk:
Installation:
[jensd@spacewalk ~]$ sudo yum install spacewalk-setup-postgresql ... ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: spacewalk-setup-postgresql noarch 2.2.2-1.el7 spacewalk 15 k Installing for dependencies: postgresql-pltcl x86_64 9.2.7-1.el7 base 57 k postgresql-server x86_64 9.2.7-1.el7 base 3.8 M tcl x86_64 1:8.5.13-4.el7 base 1.9 M Transaction Summary ============================================================================================= Install 1 Package (+3 Dependent packages) Total download size: 5.7 M Installed size: 21 M Is this ok [y/d/N]: y Downloading packages: ... Complete!
After the installation, the database needs to be initialized:
[jensd@spacewalk ~]$ sudo /usr/bin/postgresql-setup initdb Initializing database ... OK
Now that the Postgresql is ready to use, we need to determine what names we’ll use for our database and user.
In the example, I’m using spacewalk_db and spacewalk_user (you need to choose something…)
Once the database is initialized, we need to make sure that access to the database is permitted. Edit the file /var/lib/pgsql/data/pg_hba.conf and make sure those are the only lines in the file (or add lines to the top of the file).
/var/lib/pgsql/data/pg_hba.conf
local spacewalk_db spacewalk_user md5 host spacewalk_db spacewalk_user 127.0.0.1/8 md5 local spacewalk_db postgres ident local all all peer host all all 127.0.0.1/32 ident
At this time, we can start Postgresql and create the database for spacewalk and a user.
[jensd@spacewalk ~]$ sudo systemctl start postgresql [jensd@spacewalk ~]$ sudo su postgres bash-4.2$ cd ~ bash-4.2$ createdb -E UTF8 spacewalk_db bash-4.2$ createlang plpgsql spacewalk_db createlang: language "plpgsql" is already installed in database "spacewalk_db" bash-4.2$ createlang pltclu spacewalk_db bash-4.2$ createuser -P -sDR spacewalk_user Enter password for new role: Enter it again:
Some more fixes
Before finishing the Spacewalk installation, we need to adjust two files in order to make things work on CentOS 7:
Replace line 6 in file /etc/sysconfig/rhn/postgres/main.sql
\i /usr/share/pgsql/contrib/dblink.sql
becomes:
create extension dblink;
Or execute the following command:
[jensd@spacewalk ~]$ sudo sed -i '6s/.*/create extension dblink;/' /etc/sysconfig/rhn/postgres/main.sql
Change the following in file /etc/httpd/conf.d/zz-spacewalk-www.conf (from line 113):
<IfVersion >= 2.4> PerlConfigRequire PXT/Apache24Config.pm </IfVersion>
becomes:
<IfVersion >= 2.4> #PerlConfigRequire PXT/Apache24Config.pm <AuthzProviderAlias user acl> PerlAuthenHandler PXT::ApacheAuth </AuthzProviderAlias> </IfVersion>
Finishing the installation
Finally, if all goes well, we can finalize our Spacewalk installation by running the spacewalk-setup command:
[jensd@spacewalk ~]$ sudo spacewalk-setup --disconnected --external-postgresql * Setting up SELinux.. ** Database: Setting up database connection for PostgreSQL backend. Could not connect to the database. Your connection information may be incorrect. Error: DBI connect('dbname=rhnschema','rhnuser',...) failed: FATAL: Peer authentication failed for user "rhnuser" at /usr/share/perl5/vendor_perl/Spacewalk/Setup.pm line 1642. Hostname (leave empty for local)? Database? spacewalk_db Username? spacewalk_user Password? ** Database: Populating database. *** Progress: #################################### * Setting up users and groups. ** GPG: Initializing GPG and importing key. ** GPG: Creating /root/.gnupg directory You must enter an email address. Admin Email Address? jensd@jensd.be * Performing initial configuration. * Activating Spacewalk. ** Loading Spacewalk Certificate. ** Verifying certificate locally. ** Activating Spacewalk. * Enabling Monitoring. * Configuring apache SSL virtual host. Should setup configure apache's default ssl server for you (saves original ssl.conf) [Y]? y ** /etc/httpd/conf.d/ssl.conf has been backed up to ssl.conf-swsave * Configuring tomcat. * Configuring jabberd. * Creating SSL certificates. CA certificate password? Re-enter CA certificate password? Organization? none Organization Unit [spacewalk]? Email Address [jensd@jensd.be]? City? somewhere State? somewhere Country code (Examples: "US", "JP", "IN", or type "?" to see a list)? BE ** SSL: Generating CA certificate. ** SSL: Deploying CA certificate. ** SSL: Generating server certificate. ** SSL: Storing SSL certificates. * Deploying configuration files. * Update configuration in database. * Setting up Cobbler.. Processing /etc/cobbler/modules.conf ‘/etc/cobbler/modules.conf’ -> ‘/etc/cobbler/modules.conf-swsave’ Processing /etc/cobbler/settings ‘/etc/cobbler/settings’ -> ‘/etc/cobbler/settings-swsave’ Cobbler requires tftp and xinetd services be turned on for PXE provisioning functionality. Enable these services [Y]? n * Restarting services. Installation complete. Visit https://spacewalk to create the Spacewalk administrator account.
In the above commands, pay attention that your enter the correct information regarding database-name, user and password.
Firewall
Before we are able to connect to our newly configured Spacewalk-server, we need to make sure that the firewall doesn’t block access:
[jensd@spacewalk ~]$ sudo firewall-cmd –add-service=https –permanent
success
[jensd@spacewalk ~]$ sudo firewall-cmd –add-service=http –permanent
success
[jensd@spacewalk ~]$ sudo systemctl restart firewalld
Spacewalk basic setup
Finally, our spacewalk server is up and running. All that’s left to do is use your browser and navigate to the IP or hosntame of your server.
The first time, you will get the possibility to create a new spacewalk user and log in with it:
It took me some time to figure this out and the methods used are not always 100% according to best practices (the least you could say). It was more of a challenge to prove that it does work :)
For more information about how to use Spacewalk, I might spend some time later. For now, you can find it here: https://fedorahosted.org/spacewalk/wiki/UserDocs#CoreGuides
Today I noticed that with EPEL now being stable for CentOS 7 it is possible to install the nightly SpaceWalk packages without your workaround.
Thanks for the info!
I’ll try to redo the installation in next coming days and will keep you posted.
Hi!
I installed Spacewalk on my CentOS 7 server and could create my admin account. After that I rebooted to make snapshot of VM. Now my serveris is back online, but login page will not open. I get cert error and after that ” The website cannot display the page” HTTP 500 error.
What could be the problem?
Never mind, after rebooting once more Spacewalk poage opened :)
Hmm unfortunaly i get a error when running
spacewalk-setup –disconnected –external-postgresql
[root@spacewalk log]# spacewalk-setup –disconnected –external-postgresql
* Setting up SELinux..
** Database: Setting up database connection for PostgreSQL backend.
Could not connect to the database. Your connection information may be incorrect. Error: DBI connect(‘dbname=rhnschema’,’rhnuser’,…) failed: FATAL: Peer authentication failed for user “rhnuser” at /usr/share/perl5/vendor_perl/Spacewalk/Setup.pm line 1642.
Hostname (leave empty for local)?
Database? spacewalk_db
Username? spacewalk_user
Password?
** Database: Populating database.
*** Progress: #
Could not populate database.
any ideas? :)
ok never mind
create extension dblink; was the problem, when i removed is the setup completed.
I just determined that once I added the added the spacewalk nightly repo, I did not have to manually install any of the dependencies. They are now available without the need to manually install any of the packages you make available for download. Thanks for the info on the nightly, though. That one did hold me up.
Hi Jens,
If you use the jpackage repository ( http://www.jpackage.org/jpackage50.repo ) then you don’t have to install the packages manually. All java deps are there.
At the time of writing, the packages weren’t there. As you can see, I did use jpackage.
Thanks for the info, I should take some time to check my post and update it with the latest information.
Thanks for your post.
I tried to install it with Wiki but some informations (errors) are missing. With your post, all works fine !
Thanks man! I spend so much time bugfixing the wiki. And your work saved me a LOT of further work.
: AH00526: Syntax error on line 70 of /etc/httpd/conf.d/zz-spacewalk-www.conf:
: Invalid command ‘PerlAuthenHandler’, perhaps misspelled or defined by a module not included in the server configuration
httpd.service: main process exited, code=exited, status=1/FAILURE
kill: cannot find process “”
httpd.service: control process exited, code=exited status=1
Failed to start The Apache HTTP Server.
If i have this l=ine,
the apache wont work..
3
114
115
116
117
118
= 2.4>
#PerlConfigRequire PXT/Apache24Config.pm
PerlAuthenHandler PXT::ApacheAuth
Great documentation!!!!!
I build brand new server with Cent-OS 7 minimal install and then followed your instructions.
Warning at Step: spacewalk-setup –disconnected –external-postgresql
It said;
* Restarting services.
Tomcat failed to start properly or the installer ran out of tries. Please check /var/log/tomcat*/catalina.out for errors.
The tomcat error shows only following message
cat /var/log/tomcat*/catalina.out
tomcat-7.0.54 RPM installed
When tried to start Apache, got the error
systemctl status httpd.service
httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: failed (Result: exit-code) since Thu 2015-05-14 21:34:10 EDT; 6s ago
Process: 44560 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 44558 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 44558 (code=exited, status=1/FAILURE)
httpd[44558]: AH00526: Syntax error on line 69 of /etc/httpd/conf.d/zz-spacewalk-www.conf:
httpd[44558]: Invalid command ‘PerlModule’, perhaps misspelled or defined by a module not included in the ser…guration
httpd.service: main process exited, code=exited, status=1/FAILURE
kill[44560]: kill: cannot find process “”
httpd.service: control process exited, code=exited status=1
systemd[1]: Failed to start The Apache HTTP Server.
systemd[1]: Unit httpd.service entered failed state.
Any suggestion? Thank You.
I would suggest you to look for my newer post about Spacewalk 2.3 since that version is supported on CentOS 7 and you don’t need to ugly hacks anymore to get things working. You can find the post here: http://jensd.be/?p=566