Policy-Skript zum durchsuchen aller gwdg-Repositorys
Hallo APT-user,
da es in letzter Zeit Probleme gab, einige Pakete (evtl. einer bestimmten Version) in den Repositorys zu lokalisieren, habe ich zur Lösung ein kleines Skript gebastelt. Schaut es euch aber lieber nochmal an und lest die Hintergründe, befor ihr loslegt. Bei mir funktioniert es, aber ich kann keine Garantie für eure Systeme geben.
Das Problem:
beim Befehl:
apt policy <Paket>
durchsucht apt nur die freigegebenen Repositorys der sources.list. Oft werden spezielle Pakete oder neuere Versionen nicht gefunden.
Arbeitsweise des Skripts: Das folgende Skript holt sich die aktuelle sources.list.FTP von ftp.gwdg.de aus dem Netz. Anschließend wird apt-get update und apt policy ausgeführt. Das durchsucht nun mit Hilfe der neu erstellten sources.list alle rpm-Repositorys ab. Zum Schluss wird die ursprüngliche sources.list wieder hergestellt. Wie von policy gewohnt wird eine Tabelle Angezeigt in welchen Repositorys das paket zu finden ist (geordnet nach der Version). Ob ihr das Paket aus dann installiert, ist eure Sache.
Ich kann mir auch gut vorstellen, dass einige auch andere Quellen verwenden möchten. Wenn ja, dann erstellt die Datei /etc/apt/sources.list.mehr. Diese füllt ihr mit allen möglichen Repositorys (auch Kommentare zu den Reps sind möglich, die Repositorys selbst aber bitte ohne # vorne). Ist diese Datei vorhanden nimmt das Skript sie in die sources.list auf.
Praktischer Teil:
EDIT: ladet euch das Skript runter
http://www.schwendi.org/apt-gdwg-suche.tar.gz
an dieser Stelle ein Dankeschön an gobo für das hosten!
dies ist der Inhalt des Skripts:
#!/bin/sh ##################################################### # Das Skript holt sich die aktuelle sources.list.FTP # von ftp.gwdg.de, ersetzt durch diese die sources.list # und sucht anschließend nach dem / den Paket(en) # Aufruf: ./<Skript> <Paket1> <Paket2> ... # Natürlich wird die alte sources.list am Ende des # Skripts wieder eingesetzt # Gruß pawe # erstellt mit Hilfe des www.linux-club.de ##################################################### if [ "$#" -eq "0" ]; then echo "Bitte Namen des gesuchten Pakets eingeben" exit 1 fi rm -f sources.list.FTP # jetzt lade die neue sources.list.FTP runter.......... SuSEVersion=`grep "VERSION" /etc/SuSE-release | sed s/'VERSION = '//` #----------- # für 32bit Suse Versionen wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/"$SuSEVersion"-i386/examples/sources.list.FTP #----------- #----------- # für 64bit Suse Versionen # wget ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/"$SuSEVersion"-x86_64/examples/sources.list.FTP #----------- retc=$? if [ $retc -ne 0 ] # Abbruch bei Fehler von wget then echo "Fehler $retc beim Ausführen von wget! Keine Connection?" exit 1 fi cp -f /etc/apt/sources.list /etc/apt/sources.list.orig sed '$r /etc/apt/sources.list.mehr' sources.list.FTP | grep '^ *rpm ' | sed 's/[^ ]*prpm//g' > /etc/apt/sources.list apt-get update echo ' ################################# Suchergebnisse: ' apt policy $* rm -f sources.list.FTP rm -f /etc/apt/sources.list mv -f /etc/apt/sources.list.orig /etc/apt/sources.list echo ' '
Ich habe ein 32-bit-System vorausgesetzt, bitte überprüft es und ändert ggf. die Kreuze (#). In der Konsole als su in den Pfad, in der das Skript gespeichert ist wechseln und
chmod +x apt-gdwg-suche.sh eingeben.
Format des Aufrufs:
(als su)
./apt-gdwg-suche.sh <Paket1> <Paket2> ...
Wichtig: Wenn das Skript nicht bis zum Ende kommt (Strohmausfall, Fehlermeldungen nach dem Download, Abschturz, etc.), schaut euch eure sources.list vor dem nächsten Gebrauch von Apt an!!! Falls sie euch nicht bekannt vorkommt: in der sources.list.orig ist eure gesichert worden! (ist sources.list.orig nicht vorhanden, ist die sources.list original)
an dieser Stelle ein Dankeschön an gobo und an alle die an seinem Skript mitgearbeitet haben. Ich habe mir von euch den Download-Vorgang abgeschaut.
Falls ihr Anregungen, Kritik, etc. habt, nur raus damit.
taki