Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.6.0.3
RPM Installation

Overview

Customer applications and other open source software can be installed and maintained on ICOS using the RPM Package Management System. By default, RPM is not installed. In order to use RPM you must first bootstrap the RPM framework so that the rpm binary is available. You must then install the other RPMs using the rpm command.

The RPM system and subsequent packages are installed into /mnt/fastpath/usr. This location is persistent across reboots and across upgrades of the ICOS system. Note that /mnt/fastpath/usr/bin is on the default search path for binaries.

Refer to NFS Client Support for how to install RPMs in an NFS partition.

Broadcom Linux RPMs

The Broadcom Linux RPMs are based on the source RPMs from the CentOS 6.2 release. These source RPMs have been cross compiled for use on ICOS and then repackaged. For example, sed-4.2.1-7.el6.src.rpm from CentOS is cross compiled and repackaged as sed-4.2.1-7.1.el6.brl_3.8.e500_v2.rpm. The ".1" portion of "4.2.1-7.1" indicates the Broadcom package revision, "brl_3.8" indicates the Broadcom tool chain version and "e500_v2" indicates the processor family.

Bootstrapping RPM

This is the process of installing RPM and its dependencies without actually using RPM, but doing so in a way that creates the initial RPM database. The RPMs are delivered as a compressed tar ball in the rpms.<toolchain>.<cpu>-<version>.tar.bz2 file. Uncompress and extract this file on your host Linux machine. It will create a folder named rpms.<toolchain>.<cpu>-<version>. Step into that folder and step into the output directory. Inside will be a bootstrap-rpm.<toolchain>.<cpu>.sh file. This is the file that needs to be copied and installed on the switch, as shown below.

It is recommended that wget is used to fetch the bootstrap-rpm file since the file is large and tftp may time out.

  (ICOS Routing) #linuxsh
  # cd /tmp
  # wget http://<http-server>/bootstrap-rpm.brl_3.8.e500_v2.1.0.1.7.sh
  or tftp -g -r bootstrap-rpm.brl_3.8.e500_v2.1.0.1.7.sh <tftp-server>
  # chmod +x ./bootstrap-rpm.brl_3.8.e500_v2.1.0.1.7.sh
  # ./bootstrap-rpm.brl_3.8.e500_v2.1.0.1.7.sh
  Installing RPM bootstrap files (this can take 10-15 minutes): mnt/
  mnt/fastpath/
  <snip>
  Sync'ing filesystem: done
  Creating links: done
  Creating RPM database: done
  RPM bootstrap successfully installed
  # rm ./bootstrap-rpm.brl_3.8.e500_v2.1.0.1.7.sh
  # rpm -qa
  brcm-misc-1-4.ppc
  xz-libs-4.999.9-0.3.beta.20091007git.1.el6.ppc
  file-5.04-11.1.el6.ppc
  libacl-2.2.49-6.1.el6.ppc
  nspr-4.8.4-4.1.el6.ppc
  nss-softokn-freebl-3.12.6-1.1.1.el6.ppc
  sed-4.2.1-7.1.el6.ppc
  nss-sysinit-3.12.6-2.1.el6.ppc
  db4-4.7.25-16.1.el6.ppc
  libcap-2.16-5.5.1.el6.ppc
  rpm-libs-4.8.0-19.1.el6.ppc
  initial-1-4.ppc
  zlib-1.2.3-27.1.el6.ppc
  file-libs-5.04-11.1.el6.ppc
  libattr-2.4.44-7.1.el6.ppc
  sqlite-3.6.20-1.1.el6.ppc
  nss-util-3.12.6-1.1.el6.ppc
  nss-softokn-3.12.6-1.1.1.el6.ppc
  nss-3.12.6-2.1.el6.ppc
  popt-1.13-7.1.el6.ppc
  db4-utils-4.7.25-16.1.el6.ppc
  rpm-4.8.0-19.1.el6.ppc
  # exit
  (ICOS Routing) #

RPM Package Installation

Once the RPM system has been installed onto ICOS, rpm can then be used as normal to install additional packages. A number of RPMs are provided in the rpms.<toolchain>.<cpu>-<version>.tgz file. Once extracted, see the rpms.<toolchain>.<cpu>-<version>/output/RPMS directory for binaries and rpms.<toolchain>.<cpu>-<version>/output/SRPMS for source code.

For installing further RPMs you can use the rpm-install.sh utility script that is shipped with the RPMs. It is automatically installed as part of the bootstrap RPM tar ball. Use the -h option to display the commands available. For example, you could install all RPMs required for Python, or all RPMS required for the Chef client, or just all available RPMs. The script also takes parameters for the TFTP/HTTP path and TFTP/HTTP server IP address. It is recommended that you run this script from the /mnt/fastpath directory.

For example, to install Puppet from the HTTP server at 10.27.9.99 where the RPMs are installed in /var/www/html/repo/brl/3.8:

  (ICOS Routing) #linuxsh
  # cd /mnt/fastpath
  # rpm-install.sh -http puppet repo/brl/3.8 10.27.9.99
  # ......
  # rpm -q puppet
  puppet-3.1.1-1.1.el6.noarch
  # which puppet
  /bin/puppet
  # exit
  (ICOS Routing) #

Other packages can be installed in a similar fashion. See rpm-install.sh -h for further information.

RPM Upgrade Instructions

If RPMs are already installed on the switch and a new set of RPMs have to be installed, please follow the steps below:

  1. From linuxsh, rm -rf /mnt/fastpath/usr
  2. From linuxsh, sync
  3. Re-install the RPMs starting with the bootstrap file.
  (ICOS Routing) #linuxsh
  # rm -rf /mnt/fastpath/usr
  # 
  # sync
  # 
  # exit
  (ICOS Routing) #