Hallo Leute.
Welch ein Titel! (EDIT: & es fehlt die Hälfte: ... von YaST zu vermeiden)
Also, ich habe hier zwei kleine Skripte geschrieben, die für folgendes recht gebräuchlich sind:
Die SuSE-CDs bestehen hauptsächlich aus einem Verzeichnis mit sehr sehr sehr sehr sehr sehr vielen rpm-
Paketen darin.
Wenn man nun kein YaST verwenden kann/will/muss/darf, um solch ein Paket zu installieren, ist es immer
ziemlich umständlich die CD zu finden, auf der das richtige Paket drauf ist, das man installieren möchte.
Deshalb hier die Lösung: man erstellt einen Index der SuSE-CDs (geht auch bestimmt mit anderen Distris, die
viele Pakete in einem (oder mehreren) Verzeichnissen haben).
Hier ist das Skript zur Erstellung des Indexes (per Standard ~/.index_of_susecds):
Code:
#!/bin/sh
INDEX_FILE=~/.index_of_susecds
echo "# of cd:";
read num_cd;
echo "dirs (; = separator):";
read dirs;
IFS=";";
for DIR in $dirs; do
IFS="
";
for FILE in `ls -1 $DIR`; do
echo "indexing "$FILE" on CD #"$num_cd;
echo $num_cd":::"$FILE>>$INDEX_FILE;
done;
IFS=";";
done;
. Bei dirs kann man mehrere Verzeichnisse angeben, in der Form /bla/blub;/noch/ein/Verz;/und/nocheines ( ; =
Teiler).
WICHTIG: Die Verzeichnisse werden NICHT rekursiv durchlaufen!
Man muss das Skript für jede CD aufrufen!
Tja, dann hat man also die ganzen Paketnamen & die dazugehörige CD-Nummer in einer Datei.
Hier fehlt noch das Suchskript:
Code:
#!/bin/sh
INDEX_FILE=~/.index_of_susecds
if [ -z $1 ]; then
echo "arg required";
exit 1;
fi;
for FILE in `grep -ri $1 $INDEX_FILE`; do
echo "On CD "$FILE|sed s/:::/:\ /
done;
. Das was ihr sucht, wird als Argument benötigt, z.B. "sh search.sh bimmel_bommel".
Ich hoffe jemand nützen diese beiden kleinen Skripte!
Gruß, Florian
PS: Um den Index zu löschen: "rm ~/.index_of_susecds".
Lesezeichen