Install AirWave 8.0 on RedHat (RHEL)

By AnandKumar Sukumar posted Nov 10, 2014 07:59 AM


Summary : This article discusses how AirWave 8.0.X versions can be installed on RedHat (RHEL) systems.


Introduction :Installation of AirWave is supported on Red Hat Enterprise Linux 64-bit versions 6.0 and greater.


Environment : AirWave 8.0.X and Red Hat Enterprise Linux 64-bit versions 6.0 and greater. Note: Airwave 8.1and newer does not support installation on RHEL or other operating systems. Only the OS that comes with the ISO or OVA is supported.

Note: At the time of writing these instructions have been used for RHEL versions 6.0->6.5.


Configuration Steps :


Installation of AirWave is supported on a RHEL system that was installed as a "Basic Server." This will ensure the necessary base packages are installed and no conflicts exist.

The three following yum commands below should remove any conflicting packages from a "Basic Server" or "Minimal" installation and also install and update all necessary packages for AirWave installation. Note that you may have package conflicts if you use a customized environment beyond the standard "Basic Server" or "Minimal" installation of RHEL which will require manual resolution.

yum remove lzo2 krb5-workstation qpid* *.i*86


yum install acl aic94xx-firmware apr apr-util attr audit audit-libs authconfig basesystem bash bc bfa-firmware bind-libs bind-utils binutils bridge-utils bzip2 bzip2-libs ca-certificates cairo centos-release checkpolicy chkconfig compat-expat1 compat-libcap1 compat-libtermcap compat-openldap compat-readline5 coreutils coreutils-libs cpio cracklib cracklib-dicts cronie cronie-noanacron crontabs cryptsetup-luks cryptsetup-luks-libs curl cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-lib cyrus-sasl-md5 cyrus-sasl-plain dash db4 db4-utils dbus-glib dbus-libs deltarpm device-mapper device-mapper-event device-mapper-event-libs device-mapper-libs device-mapper-multipath device-mapper-multipath-libs dhclient dhcp-common diffutils dracut dracut-kernel dracut-network e2fsprogs e2fsprogs-libs efibootmgr eject elfutils elfutils-libelf elfutils-libs ethtool expat fcoe-utils file file-libs filesystem findutils fipscheck fipscheck-lib fontconfig freetype gamin gawk gd gdb gdbm glib2 glibc glibc-common glibc-headers gmp gnupg2 gnutls gpgme grep groff grub grubby gzip hdparm hwdata info initscripts iproute iptables iptables-ipv6 iputils iscsi-initiator-utils kbd kbd-misc kernel kernel-firmware kernel-headers keyutils-libs kpartx krb5-libs less libX11 libX11-common libXau libXft libXpm  libXrender libacl libaio libattr libblkid libcap libcap-ng libcgroup libcom_err libconfig libcurl libdrm libedit libevent libffi libgcc libgcrypt libgpg-error libgssglue libhbaapi libhbalinux libidn libjpeg libnih libnl libpcap libpciaccess libpng libproxy libproxy-bin libproxy-python libselinux libselinux-utils libsemanage libsepol libss libssh2 libstdc++ libtasn1 libthai libtirpc libtool-ltdl libudev libusb libuser libutempter libuuid libxcb libxml2 lldpad logrotate lsof lua lvm2 lvm2-libs lzo m4 mailcap mailx make man man-pages man-pages-overrides mdadm mingetty mlocate module-init-tools mysql-libs ncurses ncurses-base ncurses-libs neon net-tools newt newt-python nfs-utils nfs-utils-lib nmap nscd nspr nss nss-pam-ldapd nss-softokn nss-softokn-freebl nss-sysinit nss-tools nss-util ntp ntpdate openldap openssh openssh-clients openssh-server openssl openssl098e pakchois pam pam_ldap pango passwd patch patchutils pciutils-libs pcre perl perl-Archive-Extract perl-Archive-Tar perl-Authen-SASL perl-BSD-Resource perl-Bit-Vector perl-CGI perl-CPAN perl-CPANPLUS perl-Cache-Memcached perl-Carp-Clan perl-Class-MethodMaker perl-Class-Singleton perl-Compress-Raw-Zlib perl-Compress-Zlib perl-Config-General perl-Convert-ASN1 perl-Crypt-OpenSSL-Bignum perl-Crypt-OpenSSL-RSA perl-Crypt-OpenSSL-Random perl-Crypt-PasswdMD5 perl-Crypt-SSLeay perl-DBD-MySQL perl-DBD-SQLite perl-DBI perl-DBIx-Simple perl-Date-Calc perl-Date-Manip perl-DateTime perl-Devel-Symdump perl-Digest-HMAC perl-Digest-SHA perl-Digest-SHA1 perl-Error perl-ExtUtils-CBuilder perl-ExtUtils-Embed perl-ExtUtils-MakeMaker perl-ExtUtils-ParseXS perl-File-Fetch perl-File-Slurp perl-FreezeThaw perl-GSSAPI perl-HTML-Parser perl-HTML-Tagset perl-IO-Compress-Base perl-IO-Compress-Zlib perl-IO-Socket-INET6 perl-IO-Socket-SSL perl-IO-String perl-IO-Zlib perl-IPC-Cmd perl-LDAP perl-List-MoreUtils perl-Locale-Maketext-Simple perl-Log-Message perl-Log-Message-Simple perl-Mail-DKIM perl-MailTools perl-Module-Build perl-Module-CoreList perl-Module-Load perl-Module-Load-Conditional perl-Module-Loaded perl-Module-Pluggable perl-Mozilla-LDAP perl-Net-DNS perl-Net-LibIDN perl-Net-SSLeay perl-Net-Telnet perl-NetAddr-IP perl-Newt perl-Object-Accessor perl-Package-Constants perl-Params-Check perl-Params-Validate perl-Parse-CPAN-Meta perl-Perlilog perl-Pod-Coverage perl-Pod-Escapes perl-Pod-Simple perl-SNMP_Session perl-Socket6 perl-String-CRC32 perl-Term-ProgressBar perl-Term-UI perl-TermReadKey perl-Test-Harness perl-Test-Pod perl-Test-Pod-Coverage perl-Test-Simple perl-Text-Iconv perl-Time-HiRes perl-Time-Piece perl-TimeDate perl-URI perl-XML-Filter-BufferText perl-XML-LibXML perl-XML-NamespaceSupport perl-XML-Parser perl-XML-SAX perl-XML-SAX-Writer perl-YAML-Syck perl-core perl-devel perl-libintl perl-libs perl-libwww-perl perl-libxml-perl perl-parent perl-suidperl perl-version pinentry pixman pkgconfig plymouth plymouth-core-libs plymouth-scripts popt postfix procps psmisc pth pygpgme python python-iniparse python-libs python-pycurl python-urlgrabber ql2100-firmware ql2200-firmware ql23xx-firmware ql2400-firmware ql2500-firmware readline redhat-logos rootfiles rpcbind rpm rpm-build rpm-libs rpm-python rsync rsyslog screen sed setup shadow-utils slang smartmontools sqlite strace subversion sudo system-config-firewall-base sysvinit-tools tar tcp_wrappers-libs tcpdump time tmpwatch traceroute tzdata udev unzip upstart ustr util-linux-ng vconfig vim-minimal vsftpd wget which words xfsprogs xinetd xz xz-libs xz-lzma-compat yajl yp-tools ypbind ypserv yum yum-metadata-parser yum-plugin-downloadonly yum-plugin-fastestmirror yum-plugin-security yum-plugin-verify yum-plugin-versionlock yum-presto zip zlib

yum update dbus libxml2-python


Answer :


To install AirWave on RHEL systems you can use either the .iso or .tar files:

AirWave .iso method:

1. Copy the .iso to the server (eg. /root/AMP-7.7.0-x86_64.iso)
2. Mount the .iso (eg. mount -o loop /root/AMP-7.7.0-x86_64.iso /media)
3. Install the airwave rpm from the iso (eg. rpm -Uvh /media/Packages/airwave-amp-installer*)
4. Unmount the .iso (eg. umount /media)


AirWave .tar method:

1. Copy the .tar file to the server (eg. /root/AMP-7.7.0-x86_64-cvs.tar.gz)
2. Untar the file to /root (eg. tar xzf /root/AMP-7.7.0-x86_64-cvs.tar.gz)
3. Create a link to amp-install (eg. cd /root; ln -s ./svn/mercury/install/amp-install amp-install)

Once either method is complete you may run /root/amp-install to begin installation.

Note: If you are using these instructions for AirWave 7.7.X installation be aware there is a bug resulting from selinux security contexts existing on newly created files even after it is disabled. To avoid this issue please restart your server after disabling selinux. This issue only impacts AirWave 7.7.X versions.

Proceed with the setup instructions until installation is completed.


Verification :


If any failures occurred run "amp_enable" until the command prompt no longer shows a "DISABLED - X" message.

Running the "wd" command will allow watching the AirWave daemons. You should see the httpd daemon start and its resident memory size begin to grow. Within 3-5 minutes other daemons should fork from httpd and at this point the GUI should be accessible and the system should be fully operational.

Running the "amp_version" command will display the database version and running the "root; svn info" command will change to the SVN and display the code version. These version should match and display the version you installed.


Troubleshooting :


If the upgrade fails and the upgrade log shows package conflicts, missing packages, or version issues:

Changing to the CentOS-6 directory and running "make" is a shortcut to verify all package issues are resolved. Attempt to resolve the errors seen and run make again. Once this make runs cleanly the upgrade may be attempted again.

airwave# cd /root/svn/mercury/src/x86_64/rpms/CentOS-6/ && make

If you experience errors relating to kernel-headers requirements:

kernel-headers is actually in that list of rpms, but yum.conf may (likely) have a kernel exclude:

# grep exclude /etc/yum.conf

exclude=kernel* net-snmp*

If you hit the issue, you can edit the exclude list in yum.conf and then rerun the previous yum install command.

# sed -e 's/exclude=kernel\*/exclude=kernel/' -i /etc/yum.conf

If there is an error specifying that system has not rebooted since last kernel update:

This is occurring because more than 1 kernel package is installed. Run "uname -a" to view the kernel version. Then run "rpm -qa | grep kernel" and identify which kernel packages may be removed.

kernel-2.6.32-431.3.1.el6.x86_64 <-- Kernel packae
kernel-2.6.32-358.11.1.el6.x86_64 <-- Kernel package
kernel-2.6.32-279.el6.x86_64 <-- Kernel package

Use "rpm -e kernel-2.6.32-279.el6.x86_64" to uninstall the last package above as an example. Ensure only the currently in use kernel is installed.

If you experience an error that root is not allowed to sudo:

This error is caused by limitations in the /etc/sudoers.

If you experience errors due to insufficient disk space in a partition:

This can be caused by a custom partitioning of the filesystem. AirWave expects that / will be allocated all space and other directories such as /usr, /var, /opt, /etc, and /tmp will not be defined as a separate partition with a smaller available size.

You may be able to extend a volume if using LVM and resize the partitions.

Extending the / partition to be 10GB:

airwave# lvextend -L10G /dev/mapper/vgroot-lvroot
  Extending logical volume lvroot to 10.00 GiB
  Logical volume lvroot successfully resized

Resizing the filesystem to use the extended partition space:

airwave# resize2fs /dev/mapper/vgroot-lvroot
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vgroot-lvroot is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vgroot-lvroot to 2621440 (4k) blocks.
The filesystem on /dev/mapper/vgroot-lvroot is now 2621440 blocks long.



Aug 09, 2019 08:46 AM

Hi, i would like to install AMP- on Centos 6.10 but the installer i stopping on creating the DB


ERROR: relation "visualrf.user_preference" does not exist
ZEILE 1: SELECT EXISTS(select 1 from visualrf.user_preference where u...
^: SELECT EXISTS(select 1 from visualrf.user_preference where user_name=? and field_name=?) (admin,use_metric_units) at /usr/local/airwave/lib/perl/Mercury/UpdateDB/ line 13
Mercury::UpdateDB::1510872837::action('Mercury::UpdateDB::1510872837') called at /usr/local/airwave/lib/perl/Mercury/UpdateDB/ line 31
Mercury::UpdateDB::Base::__ANON__() called at /usr/local/airwave/lib/perl/Mercury/Utility/ line 937
Mercury::Utility::ChangeDB::__ANON__() called at /usr/local/airwave/lib/perl/Mercury/Utility/ line 787
Mercury::Utility::ChangeDB::modify_database('CODE(0x164bb6d0)', 'CODE(0x1652b960)') called at /usr/local/airwave/lib/perl/Mercury/Utility/ line 941
Mercury::Utility::ChangeDB::_schema_change('add use_metric_units per user', 'CODE(0x162103c0)') called at /usr/local/airwave/lib/perl/Mercury/Utility/ line 879
Mercury::Utility::ChangeDB::__ANON__() called at /usr/local/airwave/lib/perl/Mercury/DB/ line 666
eval {...} called at /usr/local/airwave/lib/perl/Mercury/DB/ line 653

Jun 16, 2017 07:47 PM

Hi all,


Another way the change the em1 by eth0 is run the next commands as root:


  • rpm -qa | grep biosdevname
  • biosdevname-0.7.2-1.el6.x86_64
  •  rpm -e --nodeps biosdevname-0.7.2-1.el6.x86_64
  • cp /etc/sysconfig/network-scripts/ifcfg-em1 /etc/sysconfig/network-scripts/ifcfg-em1.bkp
  • mv /etc/sysconfig/network-scripts/ifcfg-em1 /etc/sysconfig/network-scripts/ifcfg-eth0
  • nano /etc/sysconfig/network-scripts/ifcfg-eth0 (replace any reference to em1 with eth0).
  • reboot

This workwed for RHEL 6.9.

Aug 17, 2015 05:07 PM

Ethernet issue:


The newer Dell hardware has an ethernet interface naming change - the new interface comes up as "em1" instead of "eth0".  All the AirWave scripts reference "eth0". There is a method to rever to the old names, specifically a "biosdevname=0" option which is placed on the kernel line in the /etc/grub.conf file. It is also something which could be added to the kickstart config file bootloader line.


But why am I as a user paying rather large support fees spending my time figuring this out, especially as I don't have access to the sources to really do anything about it ?


Where are the developers ?



Aug 17, 2015 04:59 PM

Attempted to use this article with CentOS 6.7, which includes UEFI boot, and support for the new Dell server hardware.


AirWave install fails with icompatibilities, as it is trying to install older modules (ie. httpd) than already in the OS. There seems to be no way to remove the incompatible lines - for example the newer httpd exists to patch security holes, so going backwards seems the wrong thing to do.


Why has Aruba / AirWave not ported this product to a newer version of CentOS - as of August 2015, CentOS is available with 6.7 and 7.0.  Yet AirWave continues to ship with 6.2 which is quite old and lacking much of the newer hardware support.