Initial Configuration

Since we used a JeOS image to build our Pi, we don't have a lot of "standard" software installed. To be usable as a cluster head node, we need to install some standard software packages and get a few other things set up. We'll start by doing all these steps by hand so we can see the steps involved and make sure we're not missing an important piece somewhere, but all these steps should be wrapped into some kind of Configuration Management (CM) script so we can do it all automatically next time. I'll talk more about CM once we get the initial cluster set up.

For starters, let's change the root password. Choose a new password that's easy to remember, but not trivial to guess. You can change the root password with the passwd command like this:

localhost:~ # passwd
New password: 
Retype new password: 
passwd: password updated successfully
localhost:~ #

Personally, I also like to clear the Message of the Day (/etc/motd) and the banner that gets displayed when someone connects to your system (/etc/issue). This isn't necessary, and you can skip this step if you want. You can clear these files by copying /dev/null to the files like this:

localhost:~ # cp /dev/null /etc/motd
localhost:~ # cp /dev/null /etc/issue

Also, note that our host name is localhost. Let's change that to something a little more descriptive so we recognize our system when we log in. Since this is going to be a cluster of Pis, we'll name the head node baker. On SuSE based systems, the name of the server is configured in /etc/hostname. We can set it by echoing the name and directing the output into /etc/hostname. We can change the host name without rebooting, but we'll reboot in this case, just to make sure everything comes up correctly again. We should also set a static IP address, and add the hostname and IP to /etc/hosts. You can set the IP address through the openSUSE administrative tool, YaST, or manually edit /etc/sysconfig/network/ifcfg-eth0 and enter the values there. Don't forget to set the default route! For /etc/hosts, just add a line with the IP address followed by the hostname. Follow the example for localhost, and you should be fine.

localhost:~ # echo baker > /etc/hostname
localhost:~ # reboot
Connection to 192.168.0.114 closed by remote host.

After a minute or so, the system should come back up with a host name of baker.

We also need to add some common software that isn't part of the minimal JeOS image. One of the nice additions in openSUSE is a command called cnf for "command not found." If you need access to a particular command, but you're not sure which package it's in, the cnf command will tell you which package to install. Let's start by installing this package, which is called command-not-found. openSUSE uses a command called zypper to manage software, so we can install cnf like this:

baker:~ # zypper install command-not-found
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 7 NEW packages are going to be installed:
  command-not-found libzstd1 python python2-rpm python-solv python-xml scout

7 new packages to install.
Overall download size: 1.3 MiB. Already cached: 0 B. After the operation,
additional 5.2 MiB will be used.
Continue? [y/n/...? shows all options] (y): 
Retrieving package python2-rpm-4.14.1-lp150.9.3.1.aarch64
                                           (1/7),  56.1 KiB (315.1 KiB unpacked)
Retrieving: python2-rpm-4.14.1-lp150.9.3.1.aarch64.rpm ...................[done]
Retrieving package libzstd1-1.3.4-lp150.1.2.aarch64
                                           (2/7), 192.1 KiB (534.0 KiB unpacked)
Retrieving: libzstd1-1.3.4-lp150.1.2.aarch64.rpm .........................[done]
Retrieving package python-2.7.14-lp150.5.2.aarch64
                                           (3/7), 322.6 KiB (  1.7 MiB unpacked)
Retrieving: python-2.7.14-lp150.5.2.aarch64.rpm ..........................[done]
Retrieving package python-xml-2.7.14-lp150.5.3.aarch64
                                           (4/7), 203.4 KiB (934.5 KiB unpacked)
Retrieving: python-xml-2.7.14-lp150.5.3.aarch64.rpm ......................[done]
Retrieving package python-solv-0.6.35-lp150.2.3.1.aarch64
                                           (5/7), 438.0 KiB (  1.4 MiB unpacked)
Retrieving: python-solv-0.6.35-lp150.2.3.1.aarch64.rpm .......[done (1.0 KiB/s)]
Retrieving package scout-0.1.1+20180103.0595254-lp150.1.2.noarch
                                           (6/7),  79.5 KiB (239.6 KiB unpacked)
Retrieving: scout-0.1.1+20180103.0595254-lp150.1.2.noarch.rpm [done (1.0 KiB/s)]
Retrieving package command-not-found-0.1.1+20180103.0595254-lp150.1.2.noarch
                                           (7/7),  41.3 KiB (105.0 KiB unpacked)
Retrieving: command-not-found-0.1.1+20180103.0595254-lp150.1.2.noarch.rpm [done]
Checking for file conflicts: .............................................[done]
(1/7) Installing: python2-rpm-4.14.1-lp150.9.3.1.aarch64 .................[done]
(2/7) Installing: libzstd1-1.3.4-lp150.1.2.aarch64 .......................[done]
(3/7) Installing: python-2.7.14-lp150.5.2.aarch64 ........................[done]
(4/7) Installing: python-xml-2.7.14-lp150.5.3.aarch64 ....................[done]
(5/7) Installing: python-solv-0.6.35-lp150.2.3.1.aarch64 .................[done]
(6/7) Installing: scout-0.1.1+20180103.0595254-lp150.1.2.noarch ..........[done]
(7/7) Installing: command-not-found-0.1.1+20180103.0595254-lp150.1.2.noarc[done]
baker:~ #

As you can see from the output, the cnf command depends on a few other packages, but the package resolver used by zypper figures out which packages are required and installs all of them. Also note that our hostname has changed to baker as we set it above.

We'll be building a lot of our own software as we build the cluster, so we'll at least need a C compiler and the make command. We'll probably need automake at some point as well, so we can add it to the mix.

baker:~ # zypper install gcc gcc-c++ make autoconf
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Update output
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 21 NEW packages are going to be installed:
  autoconf binutils cpp cpp7 gcc gcc7 glibc-devel libasan4 libatomic1 libisl15
  libitm1 liblsan0 libmpc3 libmpfr6 libtsan0 libubsan0 linux-glibc-devel m4 make
  make-lang site-config

The following recommended package was automatically selected:
  make-lang

21 new packages to install.
Overall download size: 32.4 MiB. Already cached: 0 B. After the operation,
additional 131.1 MiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package binutils-2.29.1-lp150.4.4.aarch64
                                          (1/21),   5.2 MiB ( 35.7 MiB unpacked)
Retrieving: binutils-2.29.1-lp150.4.4.aarch64.rpm ............[done (1.8 MiB/s)]
Retrieving package libasan4-7.3.1+r258812-lp150.2.6.aarch64
                                          (2/21), 332.8 KiB (  1.4 MiB unpacked)
Retrieving: libasan4-7.3.1+r258812-lp150.2.6.aarch64.rpm .....[done (1.0 KiB/s)]
Retrieving package libatomic1-7.3.1+r258812-lp150.2.6.aarch64
                                          (3/21),  23.6 KiB ( 66.0 KiB unpacked)
Retrieving: libatomic1-7.3.1+r258812-lp150.2.6.aarch64.rpm ...............[done]
Retrieving package libisl15-0.18-lp150.1.4.aarch64
                                          (4/21), 524.4 KiB (  1.8 MiB unpacked)
Retrieving: libisl15-0.18-lp150.1.4.aarch64.rpm ..........................[done]
Retrieving package libitm1-7.3.1+r258812-lp150.2.6.aarch64
                                          (5/21),  40.8 KiB (130.5 KiB unpacked)
Retrieving: libitm1-7.3.1+r258812-lp150.2.6.aarch64.rpm ......[done (2.4 KiB/s)]
Retrieving package liblsan0-7.3.1+r258812-lp150.2.6.aarch64
                                          (6/21), 130.6 KiB (333.1 KiB unpacked)
Retrieving: liblsan0-7.3.1+r258812-lp150.2.6.aarch64.rpm .................[done]
Retrieving package libmpfr6-4.0.1-lp150.1.5.aarch64
                                          (7/21), 195.3 KiB (516.7 KiB unpacked)
Retrieving: libmpfr6-4.0.1-lp150.1.5.aarch64.rpm .........................[done]
Retrieving package libtsan0-7.3.1+r258812-lp150.2.6.aarch64
                                          (8/21), 264.0 KiB (909.4 KiB unpacked)
Retrieving: libtsan0-7.3.1+r258812-lp150.2.6.aarch64.rpm .....[done (1.0 KiB/s)]
Retrieving package libubsan0-7.3.1+r258812-lp150.2.6.aarch64
                                          (9/21), 125.3 KiB (333.2 KiB unpacked)
Retrieving: libubsan0-7.3.1+r258812-lp150.2.6.aarch64.rpm ................[done]
Retrieving package linux-glibc-devel-4.15-lp150.1.4.noarch
                                         (10/21),   1.3 MiB (  5.7 MiB unpacked)
Retrieving: linux-glibc-devel-4.15-lp150.1.4.noarch.rpm ......[done (1.5 MiB/s)]
Retrieving package m4-1.4.18-lp150.2.3.aarch64
                                         (11/21), 199.7 KiB (377.6 KiB unpacked)
Retrieving: m4-1.4.18-lp150.2.3.aarch64.rpm ................[done (447.0 KiB/s)]
Retrieving package make-4.2.1-lp150.5.3.aarch64
                                         (12/21), 274.8 KiB (430.4 KiB unpacked)
Retrieving: make-4.2.1-lp150.5.3.aarch64.rpm .............................[done]
Retrieving package site-config-0.2-lp150.1.2.aarch64
                                         (13/21),  16.5 KiB ( 21.4 KiB unpacked)
Retrieving: site-config-0.2-lp150.1.2.aarch64.rpm ............[done (3.9 KiB/s)]
Retrieving package libmpc3-1.1.0-lp150.1.5.aarch64
                                         (14/21),  50.4 KiB (131.5 KiB unpacked)
Retrieving: libmpc3-1.1.0-lp150.1.5.aarch64.rpm ..........................[done]
Retrieving package autoconf-2.69-lp150.1.4.noarch
                                         (15/21), 711.1 KiB (  2.2 MiB unpacked)
Retrieving: autoconf-2.69-lp150.1.4.noarch.rpm ...........................[done]
Retrieving package make-lang-4.2.1-lp150.5.3.noarch
                                         (16/21), 163.4 KiB (886.1 KiB unpacked)
Retrieving: make-lang-4.2.1-lp150.5.3.noarch.rpm .........................[done]
Retrieving package cpp7-7.3.1+r258812-lp150.2.6.aarch64
                                         (17/21),   6.4 MiB ( 16.4 MiB unpacked)
Retrieving: cpp7-7.3.1+r258812-lp150.2.6.aarch64.rpm .........[done (1.8 MiB/s)]
Retrieving package cpp-7-lp150.1.5.aarch64
                                         (18/21),  10.9 KiB (   82   B unpacked)
Retrieving: cpp-7-lp150.1.5.aarch64.rpm ..................................[done]
Retrieving package glibc-devel-2.26-lp150.11.6.4.aarch64
                                         (19/21), 794.3 KiB (  2.9 MiB unpacked)
Retrieving: glibc-devel-2.26-lp150.11.6.4.aarch64.rpm .......[done (29.0 KiB/s)]
Retrieving package gcc7-7.3.1+r258812-lp150.2.6.aarch64
                                         (20/21),  15.7 MiB ( 61.0 MiB unpacked)
Retrieving: gcc7-7.3.1+r258812-lp150.2.6.aarch64.rpm .........[done (2.2 MiB/s)]
Retrieving package gcc-7-lp150.1.5.aarch64
                                         (21/21),  11.9 KiB (    0   B unpacked)
Retrieving: gcc-7-lp150.1.5.aarch64.rpm ..................................[done]
Checking for file conflicts: .............................................[done]
( 1/21) Installing: binutils-2.29.1-lp150.4.4.aarch64 ....................[done]
Additional rpm output:
update-alternatives: using /usr/bin/ld.bfd to provide /usr/bin/ld (ld) in auto mode

( 2/21) Installing: libasan4-7.3.1+r258812-lp150.2.6.aarch64 .............[done]
( 3/21) Installing: libatomic1-7.3.1+r258812-lp150.2.6.aarch64 ...........[done]
( 4/21) Installing: libisl15-0.18-lp150.1.4.aarch64 ......................[done]
( 5/21) Installing: libitm1-7.3.1+r258812-lp150.2.6.aarch64 ..............[done]
( 6/21) Installing: liblsan0-7.3.1+r258812-lp150.2.6.aarch64 .............[done]
( 7/21) Installing: libmpfr6-4.0.1-lp150.1.5.aarch64 .....................[done]
( 8/21) Installing: libtsan0-7.3.1+r258812-lp150.2.6.aarch64 .............[done]
( 9/21) Installing: libubsan0-7.3.1+r258812-lp150.2.6.aarch64 ............[done]
(10/21) Installing: linux-glibc-devel-4.15-lp150.1.4.noarch ..............[done]
(11/21) Installing: m4-1.4.18-lp150.2.3.aarch64 ..........................[done]
(12/21) Installing: make-4.2.1-lp150.5.3.aarch64 .........................[done]
(13/21) Installing: site-config-0.2-lp150.1.2.aarch64 ....................[done]
(14/21) Installing: libmpc3-1.1.0-lp150.1.5.aarch64 ......................[done]
(15/21) Installing: autoconf-2.69-lp150.1.4.noarch .......................[done]
(16/21) Installing: make-lang-4.2.1-lp150.5.3.noarch .....................[done]
(17/21) Installing: cpp7-7.3.1+r258812-lp150.2.6.aarch64 .................[done]
(18/21) Installing: cpp-7-lp150.1.5.aarch64 ..............................[done]
(19/21) Installing: glibc-devel-2.26-lp150.11.6.4.aarch64 ................[done]
(20/21) Installing: gcc7-7.3.1+r258812-lp150.2.6.aarch64 .................[done]
(21/21) Installing: gcc-7-lp150.1.5.aarch64 ..............................[done]
baker:~ #

Again, as you can see, there are a lot of extra software packages that are dependencies of what we requested, so those have been installed as well. A lot of software is now stored, developed, and distributed through GitHub at https://github.com/ so we may as well add the git package now as well.

baker:~ # zypper install git
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 50 NEW packages are going to be installed:
  bash-completion-devel cvs cvsps dbus-1-x11 fontconfig git git-core git-cvs
  git-email git-gui git-svn gitk libICE6 libSM6 libX11-6 libX11-data libXau6
  libXext6 libXft2 libXmuu1 libXrender1 libXss1 libXt6 libapr-util1 libapr1
  libpcre2-8-0 libserf-1-1 libsha1detectcoll1 libutf8proc2 libxcb1 openslp
  openssh-askpass perl-Authen-SASL perl-DBD-SQLite perl-DBI perl-Digest-HMAC
  perl-Error perl-IO-Socket-SSL perl-Net-SMTP-SSL perl-Net-SSLeay
  perl-Term-ReadKey rsync subversion subversion-bash-completion subversion-perl
  tcl tcsh tcsh-lang tk xhost

The following 9 recommended packages were automatically selected:
  git-cvs git-email git-gui git-svn gitk perl-Authen-SASL perl-Net-SMTP-SSL
  subversion-bash-completion tcsh-lang

The following 2 packages are suggested, but will not be installed:
  git-daemon git-web

50 new packages to install.
Overall download size: 20.4 MiB. Already cached: 0 B. After the operation,
additional 79.7 MiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package libX11-data-1.6.5-lp150.2.3.1.noarch
                                          (1/50), 150.8 KiB (  1.2 MiB unpacked)
Retrieving: libX11-data-1.6.5-lp150.2.3.1.noarch.rpm ...........[done (276 B/s)]
Retrieving package openslp-2.0.0-lp150.5.3.1.aarch64
                                          (2/50),  67.1 KiB (222.9 KiB unpacked)
Retrieving: openslp-2.0.0-lp150.5.3.1.aarch64.rpm ........................[done]
Retrieving package bash-completion-devel-2.7-lp150.2.2.noarch
                                          (3/50),  31.3 KiB (  292   B unpacked)
Retrieving: bash-completion-devel-2.7-lp150.2.2.noarch.rpm ...[done (3.8 KiB/s)]
Retrieving package cvsps-2.1-lp150.1.2.aarch64
                                          (4/50),  62.7 KiB (176.5 KiB unpacked)
Retrieving: cvsps-2.1-lp150.1.2.aarch64.rpm ..............................[done]
Retrieving package fontconfig-2.12.6-lp150.2.2.aarch64
                                          (5/50), 702.3 KiB (  1.6 MiB unpacked)
Retrieving: fontconfig-2.12.6-lp150.2.2.aarch64.rpm ........[done (734.8 KiB/s)]
Retrieving package libICE6-1.0.9-lp150.1.2.aarch64
                                          (6/50),  44.8 KiB (132.0 KiB unpacked)
Retrieving: libICE6-1.0.9-lp150.1.2.aarch64.rpm ..........................[done]
Retrieving package libXau6-1.0.8-lp150.1.2.aarch64
                                          (7/50),  13.9 KiB ( 66.1 KiB unpacked)
Retrieving: libXau6-1.0.8-lp150.1.2.aarch64.rpm ..........................[done]
Retrieving package libapr1-1.6.3-lp150.1.1.aarch64
                                          (8/50), 111.3 KiB (284.4 KiB unpacked)
Retrieving: libapr1-1.6.3-lp150.1.1.aarch64.rpm ..........................[done]
Retrieving package libpcre2-8-0-10.31-lp150.1.4.aarch64
                                          (9/50), 154.5 KiB (452.0 KiB unpacked)
Retrieving: libpcre2-8-0-10.31-lp150.1.4.aarch64.rpm .........[done (1.0 KiB/s)]
Retrieving package libsha1detectcoll1-1.0.3-lp150.2.1.aarch64
                                         (10/50),  24.8 KiB ( 81.7 KiB unpacked)
Retrieving: libsha1detectcoll1-1.0.3-lp150.2.1.aarch64.rpm .[done (134.8 KiB/s)]
Retrieving package libutf8proc2-2.1.0-lp150.1.2.aarch64
                                         (11/50),  59.1 KiB (340.6 KiB unpacked)
Retrieving: libutf8proc2-2.1.0-lp150.1.2.aarch64.rpm .....................[done]
Retrieving package perl-DBI-1.639-lp150.1.2.aarch64
                                         (12/50), 742.6 KiB (  2.1 MiB unpacked)
Retrieving: perl-DBI-1.639-lp150.1.2.aarch64.rpm .........................[done]
Retrieving package perl-Digest-HMAC-1.03-lp150.1.3.noarch
                                         (13/50),  16.4 KiB ( 10.5 KiB unpacked)
Retrieving: perl-Digest-HMAC-1.03-lp150.1.3.noarch.rpm .......[done (1.0 KiB/s)]
Retrieving package perl-Error-0.17025-lp150.1.3.noarch
                                         (14/50),  40.5 KiB ( 70.5 KiB unpacked)
Retrieving: perl-Error-0.17025-lp150.1.3.noarch.rpm ......................[done]
Retrieving package perl-Net-SSLeay-1.81-lp150.1.2.aarch64
                                         (15/50), 298.4 KiB (  1.1 MiB unpacked)
Retrieving: perl-Net-SSLeay-1.81-lp150.1.2.aarch64.rpm .......[done (1.0 KiB/s)]
Retrieving package perl-Term-ReadKey-2.37-lp150.1.2.aarch64
                                         (16/50),  30.1 KiB ( 92.6 KiB unpacked)
Retrieving: perl-Term-ReadKey-2.37-lp150.1.2.aarch64.rpm .................[done]
Retrieving package tcl-8.6.7-lp150.4.4.aarch64
                                         (17/50),   2.7 MiB (  8.3 MiB unpacked)
Retrieving: tcl-8.6.7-lp150.4.4.aarch64.rpm ..................[done (1.8 MiB/s)]
Retrieving package tcsh-6.20.00-lp150.1.1.aarch64
                                         (18/50), 274.6 KiB (610.0 KiB unpacked)
Retrieving: tcsh-6.20.00-lp150.1.1.aarch64.rpm .............[done (790.8 KiB/s)]
Retrieving package rsync-3.1.3-lp150.2.2.aarch64
                                         (19/50), 307.1 KiB (667.4 KiB unpacked)
Retrieving: rsync-3.1.3-lp150.2.2.aarch64.rpm ............................[done]
Retrieving package libSM6-1.2.2-lp150.1.2.aarch64
                                         (20/50),  21.6 KiB ( 66.2 KiB unpacked)
Retrieving: libSM6-1.2.2-lp150.1.2.aarch64.rpm ...............[done (1.0 KiB/s)]
Retrieving package libxcb1-1.13-lp150.1.3.aarch64
                                         (21/50),  53.0 KiB (194.9 KiB unpacked)
Retrieving: libxcb1-1.13-lp150.1.3.aarch64.rpm ...........................[done]
Retrieving package libapr-util1-1.6.1-lp150.2.3.aarch64
                                         (22/50), 101.6 KiB (420.1 KiB unpacked)
Retrieving: libapr-util1-1.6.1-lp150.2.3.aarch64.rpm .........[done (1.0 KiB/s)]
Retrieving package perl-DBD-SQLite-1.54-lp150.1.2.aarch64
                                         (23/50),   1.8 MiB (  8.6 MiB unpacked)
Retrieving: perl-DBD-SQLite-1.54-lp150.1.2.aarch64.rpm ...................[done]
Retrieving package perl-Authen-SASL-2.16-lp150.1.3.noarch
                                         (24/50),  53.2 KiB ( 96.8 KiB unpacked)
Retrieving: perl-Authen-SASL-2.16-lp150.1.3.noarch.rpm .......[done (1.0 KiB/s)]
Retrieving package perl-IO-Socket-SSL-2.052-lp150.1.3.noarch
                                         (25/50), 222.0 KiB (541.2 KiB unpacked)
Retrieving: perl-IO-Socket-SSL-2.052-lp150.1.3.noarch.rpm ..[done (531.5 KiB/s)]
Retrieving package tcsh-lang-6.20.00-lp150.1.1.noarch
                                         (26/50), 113.7 KiB (527.7 KiB unpacked)
Retrieving: tcsh-lang-6.20.00-lp150.1.1.noarch.rpm .......................[done]
Retrieving package libserf-1-1-1.3.9-lp150.2.2.aarch64
                                         (27/50),  73.0 KiB (165.3 KiB unpacked)
Retrieving: libserf-1-1-1.3.9-lp150.2.2.aarch64.rpm ......................[done]
Retrieving package perl-Net-SMTP-SSL-1.04-lp150.1.3.noarch
                                         (28/50),  12.4 KiB (  4.4 KiB unpacked)
Retrieving: perl-Net-SMTP-SSL-1.04-lp150.1.3.noarch.rpm ..................[done]
Retrieving package cvs-1.12.12-lp150.1.2.aarch64
                                         (29/50), 387.8 KiB (  1.1 MiB unpacked)
Retrieving: cvs-1.12.12-lp150.1.2.aarch64.rpm ............................[done]
Retrieving package subversion-1.10.0-lp150.1.2.aarch64
                                         (30/50),   2.6 MiB ( 10.6 MiB unpacked)
Retrieving: subversion-1.10.0-lp150.1.2.aarch64.rpm ..........[done (2.0 MiB/s)]
Retrieving package subversion-bash-completion-1.10.0-lp150.1.2.noarch
                                         (31/50), 102.1 KiB ( 47.8 KiB unpacked)
Retrieving: subversion-bash-completion-1.10.0-lp150.1.2.noarch.rpm .......[done]
Retrieving package subversion-perl-1.10.0-lp150.1.2.aarch64
                                         (32/50), 943.9 KiB (  5.2 MiB unpacked)
Retrieving: subversion-perl-1.10.0-lp150.1.2.aarch64.rpm .................[done]
Retrieving package git-core-2.16.4-lp150.2.6.1.aarch64
                                         (33/50),   3.9 MiB ( 24.2 MiB unpacked)
Retrieving: git-core-2.16.4-lp150.2.6.1.aarch64.rpm ..........[done (1.6 MiB/s)]
Retrieving package libX11-6-1.6.5-lp150.2.3.1.aarch64
                                         (34/50), 560.0 KiB (  1.3 MiB unpacked)
Retrieving: libX11-6-1.6.5-lp150.2.3.1.aarch64.rpm .......................[done]
Retrieving package git-svn-2.16.4-lp150.2.6.1.aarch64
                                         (35/50), 631.1 KiB (  1.3 MiB unpacked)
Retrieving: git-svn-2.16.4-lp150.2.6.1.aarch64.rpm .......................[done]
Retrieving package git-email-2.16.4-lp150.2.6.1.aarch64
                                         (36/50), 139.3 KiB ( 59.9 KiB unpacked)
Retrieving: git-email-2.16.4-lp150.2.6.1.aarch64.rpm .....................[done]
Retrieving package git-cvs-2.16.4-lp150.2.6.1.aarch64
                                         (37/50), 178.5 KiB (215.5 KiB unpacked)
Retrieving: git-cvs-2.16.4-lp150.2.6.1.aarch64.rpm ...........[done (1.0 KiB/s)]
Retrieving package libXt6-1.1.5-lp150.2.2.aarch64
                                         (38/50), 154.4 KiB (466.8 KiB unpacked)
Retrieving: libXt6-1.1.5-lp150.2.2.aarch64.rpm ...........................[done]
Retrieving package libXrender1-0.9.10-lp150.1.2.aarch64
                                         (39/50),  24.4 KiB ( 66.5 KiB unpacked)
Retrieving: libXrender1-0.9.10-lp150.1.2.aarch64.rpm .....................[done]
Retrieving package libXmuu1-1.1.2-lp150.1.3.aarch64
                                         (40/50),  14.8 KiB ( 66.1 KiB unpacked)
Retrieving: libXmuu1-1.1.2-lp150.1.3.aarch64.rpm .........................[done]
Retrieving package libXext6-1.3.3-lp150.1.2.aarch64
                                         (41/50),  34.2 KiB (131.6 KiB unpacked)
Retrieving: libXext6-1.3.3-lp150.1.2.aarch64.rpm ...........[done (196.9 KiB/s)]
Retrieving package dbus-1-x11-1.12.2-lp150.1.2.aarch64
                                         (42/50),  87.8 KiB ( 66.6 KiB unpacked)
Retrieving: dbus-1-x11-1.12.2-lp150.1.2.aarch64.rpm ......................[done]
Retrieving package openssh-askpass-1.2.4.1-lp150.1.2.aarch64
                                         (43/50),  26.3 KiB ( 73.7 KiB unpacked)
Retrieving: openssh-askpass-1.2.4.1-lp150.1.2.aarch64.rpm ................[done]
Retrieving package libXft2-2.3.2-lp150.1.2.aarch64
                                         (44/50),  42.6 KiB (131.4 KiB unpacked)
Retrieving: libXft2-2.3.2-lp150.1.2.aarch64.rpm ..........................[done]
Retrieving package xhost-1.0.7-lp150.1.2.aarch64
                                         (45/50),  29.1 KiB (101.0 KiB unpacked)
Retrieving: xhost-1.0.7-lp150.1.2.aarch64.rpm ............................[done]
Retrieving package libXss1-1.2.2-lp150.3.1.aarch64
                                         (46/50),  12.8 KiB ( 66.1 KiB unpacked)
Retrieving: libXss1-1.2.2-lp150.3.1.aarch64.rpm ..........................[done]
Retrieving package tk-8.6.7-lp150.1.2.aarch64
                                         (47/50),   1.7 MiB (  4.7 MiB unpacked)
Retrieving: tk-8.6.7-lp150.1.2.aarch64.rpm ...................[done (1.8 MiB/s)]
Retrieving package gitk-2.16.4-lp150.2.6.1.aarch64
                                         (48/50), 247.0 KiB (735.0 KiB unpacked)
Retrieving: gitk-2.16.4-lp150.2.6.1.aarch64.rpm ..........................[done]
Retrieving package git-gui-2.16.4-lp150.2.6.1.aarch64
                                         (49/50), 311.3 KiB (  1.2 MiB unpacked)
Retrieving: git-gui-2.16.4-lp150.2.6.1.aarch64.rpm ...........[done (1.0 KiB/s)]
Retrieving package git-2.16.4-lp150.2.6.1.aarch64
                                         (50/50), 117.9 KiB (  2.9 KiB unpacked)
Retrieving: git-2.16.4-lp150.2.6.1.aarch64.rpm ...........................[done]
Checking for file conflicts: .............................................[done]
( 1/50) Installing: libX11-data-1.6.5-lp150.2.3.1.noarch .................[done]
( 2/50) Installing: openslp-2.0.0-lp150.5.3.1.aarch64 ....................[done]
( 3/50) Installing: bash-completion-devel-2.7-lp150.2.2.noarch ...........[done]
( 4/50) Installing: cvsps-2.1-lp150.1.2.aarch64 ..........................[done]
( 5/50) Installing: fontconfig-2.12.6-lp150.2.2.aarch64 ..................[done]
( 6/50) Installing: libICE6-1.0.9-lp150.1.2.aarch64 ......................[done]
( 7/50) Installing: libXau6-1.0.8-lp150.1.2.aarch64 ......................[done]
( 8/50) Installing: libapr1-1.6.3-lp150.1.1.aarch64 ......................[done]
( 9/50) Installing: libpcre2-8-0-10.31-lp150.1.4.aarch64 .................[done]
(10/50) Installing: libsha1detectcoll1-1.0.3-lp150.2.1.aarch64 ...........[done]
(11/50) Installing: libutf8proc2-2.1.0-lp150.1.2.aarch64 .................[done]
(12/50) Installing: perl-DBI-1.639-lp150.1.2.aarch64 .....................[done]
(13/50) Installing: perl-Digest-HMAC-1.03-lp150.1.3.noarch ...............[done]
(14/50) Installing: perl-Error-0.17025-lp150.1.3.noarch ..................[done]
(15/50) Installing: perl-Net-SSLeay-1.81-lp150.1.2.aarch64 ...............[done]
(16/50) Installing: perl-Term-ReadKey-2.37-lp150.1.2.aarch64 .............[done]
(17/50) Installing: tcl-8.6.7-lp150.4.4.aarch64 ..........................[done]
(18/50) Installing: tcsh-6.20.00-lp150.1.1.aarch64 .......................[done]
(19/50) Installing: rsync-3.1.3-lp150.2.2.aarch64 ........................[done]
(20/50) Installing: libSM6-1.2.2-lp150.1.2.aarch64 .......................[done]
(21/50) Installing: libxcb1-1.13-lp150.1.3.aarch64 .......................[done]
(22/50) Installing: libapr-util1-1.6.1-lp150.2.3.aarch64 .................[done]
(23/50) Installing: perl-DBD-SQLite-1.54-lp150.1.2.aarch64 ...............[done]
(24/50) Installing: perl-Authen-SASL-2.16-lp150.1.3.noarch ...............[done]
(25/50) Installing: perl-IO-Socket-SSL-2.052-lp150.1.3.noarch ............[done]
(26/50) Installing: tcsh-lang-6.20.00-lp150.1.1.noarch ...................[done]
(27/50) Installing: libserf-1-1-1.3.9-lp150.2.2.aarch64 ..................[done]
(28/50) Installing: perl-Net-SMTP-SSL-1.04-lp150.1.3.noarch ..............[done]
(29/50) Installing: cvs-1.12.12-lp150.1.2.aarch64 ........................[done]
(30/50) Installing: subversion-1.10.0-lp150.1.2.aarch64 ..................[done]
Additional rpm output:
Updating /etc/sysconfig/svnserve ...

(31/50) Installing: subversion-bash-completion-1.10.0-lp150.1.2.noarch ...[done]
(32/50) Installing: subversion-perl-1.10.0-lp150.1.2.aarch64 .............[done]
(33/50) Installing: git-core-2.16.4-lp150.2.6.1.aarch64 ..................[done]
(34/50) Installing: libX11-6-1.6.5-lp150.2.3.1.aarch64 ...................[done]
(35/50) Installing: git-svn-2.16.4-lp150.2.6.1.aarch64 ...................[done]
(36/50) Installing: git-email-2.16.4-lp150.2.6.1.aarch64 .................[done]
(37/50) Installing: git-cvs-2.16.4-lp150.2.6.1.aarch64 ...................[done]
(38/50) Installing: libXt6-1.1.5-lp150.2.2.aarch64 .......................[done]
(39/50) Installing: libXrender1-0.9.10-lp150.1.2.aarch64 .................[done]
(40/50) Installing: libXmuu1-1.1.2-lp150.1.3.aarch64 .....................[done]
(41/50) Installing: libXext6-1.3.3-lp150.1.2.aarch64 .....................[done]
(42/50) Installing: dbus-1-x11-1.12.2-lp150.1.2.aarch64 ..................[done]
Additional rpm output:
update-alternatives: using /usr/bin/dbus-launch.x11 to provide /usr/bin/dbus-launch (dbus-launch) in auto mode

(43/50) Installing: openssh-askpass-1.2.4.1-lp150.1.2.aarch64 ............[done]
(44/50) Installing: libXft2-2.3.2-lp150.1.2.aarch64 ......................[done]
(45/50) Installing: xhost-1.0.7-lp150.1.2.aarch64 ........................[done]
(46/50) Installing: libXss1-1.2.2-lp150.3.1.aarch64 ......................[done]
(47/50) Installing: tk-8.6.7-lp150.1.2.aarch64 ...........................[done]
(48/50) Installing: gitk-2.16.4-lp150.2.6.1.aarch64 ......................[done]
(49/50) Installing: git-gui-2.16.4-lp150.2.6.1.aarch64 ...................[done]
(50/50) Installing: git-2.16.4-lp150.2.6.1.aarch64 .......................[done]
baker:~ #

As you can see, git is a fairly large package with lots of dependencies.

At this point we should have a reasonably complete development system. (we'll find out how well we did when we start building software). The major tools for building and installing packages should be in place; however, as we start building the software we need, we'll find that we still need to install more software. As long as we're using zypper to install software, it will resolve all the dependencies for us, but when we build software by hand, we have to handle the dependencies ourself. This can become tedious at times, since some of the dependencies have their own dependencies, and we start chasing strings of software requirements. Building software by hand allows us to customize the software for our specific needs, so for some packages (scientific software, authentication software, specialized libraries, etc.) it makes sense to build them individually.

In the next section, we'll build some of the standard software packages we'll need. For starters, here are some software packages that we will need:

  • pdsh: a parallel distributed shell for running simultaneous commands across multiple nodes
  • Modules: a system for managing software in user environments
  • SLURM: the job scheduler for our cluster
  • munge: a fast authentication module for compute nodes
  • openMPI: a library to allow parallel programs to communicate between different cluster nodes