Packages reinstallieren

Hallo

Bei der Beseitigung eines python-Pakets ohne uninstaller habe ich versehentlich den Pfad /usr/share/man/man1 gelöscht. Mein Backup ist leider schon etwas älter und ich habe zwischenzeitlich sehr viel am System gemacht um duplicity und pyload einsetzen zu können.

Kann ich mit zypper oder rpm alle Pakete auflisten und dann mit --force neuinstallieren, die eine Datei unter /usr/share/man/man1 schreiben? Wie muß ich da vorgehen?

Viele Grüße
Stefan

Das sollte eine Liste aller installierten Pakete ergeben, die eine Datei in /usr/share/man/man1 enthalten:

zypper se -f /usr/share/man/man1

Zur Information:
“se” bedeutet “search”, und -f “–file-list”
Von “zypper help se”:

-f, --file-list            Suche nach einem Treffer in der Dateiliste der Pakete.

Das ergibt allerdings eine sehr lange Liste (>800 Pakete bei mir), die alle händisch neu zu installieren, wird wohl etwas mühsam.
Die Ausgabe schaut etwa wie folgt aus:

Daten des Repositories laden ...
Installierte Pakete lesen ...

S | Name                         | Zusammenfassung                        | Typ  
--+------------------------------+----------------------------------------+------
i | BasiliskII                   | 68k Macintosh emulator                 | Paket
i | DirectFB                     | Grafikbibliothek für Framebuffer-Ger-> | Paket
...

Mir ist jetzt leider keine zypper Option bekannt, die nur eine Liste von Paketnamen liefern würde (mit ‘-q’ kannst du allerdings alle zusätzlichen Ausgaben unterdrücken, wie z.B. das “]Daten des Repositories laden …”).
Du müsstest also daraus irgendwie die Namensspalte extrahieren, z.B. mit awk.

Es gibt auch die Möglichkeit, mit ‘-x’ die Liste als XML auszugeben, falls du das bevorzugst, aber auch hier sehe ich leider keine Möglichkeit, das dann automatisch zypper zu übergeben.

Ach ja, und eine Paket-Neuinstallation erzwingen kannst du mir “zypper in -f” (oder statt ‘-f’ ‘–force’), aber deiner Frage nach zu urteilen, weißt du das eh…

PS:
Ist eigtl. ganz einfach:

awk '{print $3}'

Folgendes sollte also eine Liste der Paketnamen ergeben:

zypper -q se -f /usr/share/man/man1 | tail -n +4 | awk '{print $3}'

(das “tail” ist drin, um die ersten zwei Zeilen mit der Tabellenüberschrift zu entfernen)

Die solltest du folgendermaßen neu installieren können:

for i in "`zypper -q se -f /usr/share/man/man1 | tail -n +4 | awk '{print $3}'`"; do zypper in -f $i; done

Geht vielleicht auch einfacher/besser, aber das sollte zumindest funktionieren… :wink:

Hat funktioniert, vielen Dank!