Die bisher unterschiedlichen /usr/local Verzeichnisse für IRIX-5 und IRIX-6 im CHEMnet, die zum Teil zu Inkonsistenzen bei Software-Installationen geführt haben, wurden mittlerweile aufgelöst. Inzwischen ist bragg auch der Master für IRIX-6-Rechner. Binaries, die auf spezielle OS-abhängige Dinge, wie z.B. Kernelvariablen, zurückgreifen, funktionieren aber nicht unter beiden Betriebssytemen. Außerdem gibt es Software, wo sich die Anpassung an IRIX-6/R8000 lohnt (z.B. gzip - zur Zeit noch nicht realisiert), da manche dann um Größenordnungen schneller laufen.
Um dieses Problem zu lösen, habe ich jetzt ein kleines Shellscript namens /usr/local/bin/archexec geschrieben, welches die IRIX-Version ermittelt und dann das entsprechende Binary unter /usr/local/bin/IRIX-#/ startet, wobei # zur Zeit 5 oder 6 sein kann. Der Befehl muß durch einen Link auf archexec in /usr/local/bin angelegt werden.
Die Installation einer solchen Software sieht dann wie folgt aus:
/usr/local/bin/beispiel --- symlink ---> /usr/local/bin/archexec /usr/local/bin/IRIX-5/beispiel IRIX-5 Binary /usr/local/bin/IRIX-6/beispiel IRIX-6 Binary
Zur Information habe ich den Source von 'archexec' angehängt. Verbesserungsvorschläge sind willkommen. Die Abhängigkeit von Prozessortypen oder der Release-Nummer von IRIX (statt nur der Versionsnummer) ist absichtlich nicht enthalten. Es ist möglich, das Konzept später zu erweitern, falls dieses nötig sein sollte, allerdings möchte ich dafür eigentlich erst die genauen Daten von IRIX 6.2 abwarten.
Beispiel für ein mit archexec installiertes Programm: lsof
#!/sbin/sh
#
# (C) Heiko Schlichting
#
# archexec startet betriebssystemabhaengige Programme im CHEMnet
#
OS=${ARCHITECTURE:-"IRIX-`/sbin/uname -r|/usr/bin/cut -c1`"}
BINDIR=/usr/local/bin/$OS
PROG=`/sbin/basename $0`
if [ -x $BINDIR/$PROG ] ; then
exec $BINDIR/$PROG $@
else
echo "archexec: no architecture depending binary of $PROG for $OS."
fi