logo
Neues und so
Knotenseite
Mein neues Refugium
Schnell XHTML Code erzeugen
Experimentelle bzflag-Maps
"du" aufgepeppt
Eine Liste mit praktischen Pastebins
Unicode auf Webseiten
Klettern (+HMS-AVI)
 
Linux
Mensa-Speiseplan auf Palm bringen
Demo vom Speiseplan
PHP-Klasse zur Zeitangabe
Textuelle Zeitangabe
Gtk+(Glade) -> FreePascal
Perl-Stack-Rechner
tree.pl für Konsole
lcd: Directory-Array
Termine-Script
Heise-EMail-Ticker (DL)
Pakete finden
GAWK-Stack-Rechner
 
Projekte
Knoten
Opt. Täuschungen?
Bumerangs (offline)
Mein Newsportal
Mein Python-Kram
Strategie-Spiele programmieren
Makro-Fotos
Galerie 1
Galerie 2: Modf.Cam
Portal
AVR pages
LCD-Ticker
Abalone-Server
3D-Bilder mit Q.Cam
Zeitraffer m. QuickCam
Sonderzeichen
Mini-Shop
Virtuelle Tastatur
 
Links
Protestseite Studiengebühren
Gravity.txt
ISS Visual Passes
Lokale Web-Cams
Liste
 
Kontakt
E-Mail+PubKey
 
Win9x
Locator

Dein Suse-Linux-System baut auch auf den CDRoms diverser Suseversionen auf?

Mit diesem Tool hat man ein dickes Problem weniger...

Welches Problem? Das Problem, diejenige CD zu finden, auf der sich ein gesuchtes Paket in gesuchter Version befindet, ohne zum DJ zu werden.

Die Idee besteht darin, mit einem Script den Inhalt der CDROMs (z.B. Suse 6.0 Vollversion, CD 1,2,3,4, und Suse Demo 6.1) zu archivieren, um dann auf der Suche nach der richtigen CD einfach dieses Archiv zu durchsuchen.

Wenn ich zum Beispiel nach einem aktuellen joe-Paket suche, gebe ich einfach ein:

  woist joe

Die Ausgabe enthält dann den Hinweis, auf welcher CDROM joe in welcher Version (und in welchem Verzeichnis) zu finden ist.

Neben zwei Bash-Scripten setze ich ein GAWK-Script ein. GAWK ist eine lustige Programmiersprache, so eine Art Mischung aus BASIC und C... :-)

Folgende drei Scripte erledigen die gestellte Aufgabe:

  • cdeinlesen: Einlesen der Daten einer neuen CDROM
  • cut55.awk: Formatieren einer Zeile
  • woist: Durchsuchen des Archivs

Erstes Script: cdeinlesen
#!/bin/sh

# Einlesen aller Pakete auf einer SUSE-CDROM,
# zum schnellen finden eines Pakets und der
# passenden CDROM...

# Autor: Tjabo Kloppenburg


if test $UID = 0 ; then
  BASEDIR="/root/.cdbase"
else
  echo "Du musst Ruth heißen! :-)"
  exit 0
  # BASEDIR="$HOME/.cdbase"
fi
DATA=$BASEDIR"/alldata"
TMPFILE=$BASENAME"/liste.tmp"

if ! test -d $BASEDIR ; then
  if ! mkdir $BASEDIR ; then
    echo "Konnte $BASEDIR nicht anlegen. :-("
    exit;
  fi
fi

if ! test -e $DATA ; then
  if ! touch $DATA ; then
    echo "Konnte $DATA nicht anlegen. :-("
    exit;
  fi
fi


echo " -+-- Einlesen der Paketnamen einer Suse-CDROM: "
echo " "
echo "       Datenbank: $DATA"
echo " "
echo "Bitte CDROM einlegen und auf RETURN hauen:"
read RETURN

echo "mounte CDROM..."
if mount /cdrom ; then

  echo "lese Paketdaten ein..."
  cd /cdrom/full-names/i386
  ls -l --color=none >$TMPFILE
  cd
  cd .cdbase
  echo "daten gelesen. unmounte /cdrom ..."
  umount /cdrom
  echo "ok soweit..."
  echo " "
  echo "CDROM-Kuerzel eingeben (z.B. Suse60_demo): "
  read PREFIX
  echo "frisiere die Liste..."
  cat $TMPFILE | cut55.awk |
           sed -e "s/^/$PREFIX\:\ \ /g" >>alldata
  rm $TMPFILE

  echo "kopiere alldata nach /home/hansolo/.cdbase/"
  cp alldata /home/hansolo/.cdbase
  chown hansolo /home/hansolo/.cdbase/alldata 
  chgrp users   /home/hansolo/.cdbase/alldata 
  echo "fettich!"
  echo " "
  echo "Suche nach Paketen: \"woist name\"." 
else
  echo "Fehler beim Mounten. Keine CDROM drin?";
fi

Zweites Script: cut55.awk
#!/usr/bin/awk -f

{
   zeile = $0;
   zeile = substr(zeile,56,length(zeile)-55);
   pfeilpos = index(zeile," -> ");
   links  = substr(zeile,1,pfeilpos-1);
   if (length(links) > 0) {
     while (length(links) < 35) {
        links = links " ";
     }
     rechts = substr(zeile,pfeilpos+4+5,length(zeile)-pfeilpos-4+1-5)
     print links " -> " rechts;
   }
}

Drittes Script: woist
#!/bin/sh

# Finden eines Pakets und der zugehoerigen CDROM
# Datenbank verändern mit "cdeinlesen"

# Autor: Tjabo Kloppenburg


if test $UID = 0 ; then
  BASEDIR="/root/.cdbase"
else
  BASEDIR="$HOME/.cdbase"
fi
DATA=$BASEDIR"/alldata"

grep $1 $DATA

Die Seiten unterhalb von http://www.home.unix-ag.org/tjabo/ wurden von mir, Tjabo Kloppenburg, erstellt.
Auf meinen Webseiten befinden sich Links zu anderen Seiten im Internet. Für alle diese Links gilt: Ich betone ausdrücklich, daß ich in keiner Form Einfluß auf Inhalt und Gestaltung der verlinkten Seiten habe. Deshalb distanziere ich mich hiermit ausdrücklich von sämtlichen Inhalten dieser verlinkten Webseiten. Dies gilt insbesondere für alle Links, Banner oder Logos.
Wenn Ihnen Inhalte oder Links auf meinen Webseiten nicht gefallen, dann geben Sie mir bitte einfach per EMail bescheid. Ich werde meine Webseiten dann entsprechend verändern.