catalpa schrieb:
zypper up kennt kein force und ohne bringts nix stelle ich eben fest :-/
zypper ref -f tuts auch nicht, ich glaube der Fall: "alles noch mal" ist bei zypper nicht vorgesehen..
"ist nicht vorgesehen" : gibts in Linux so schnell nicht
Aber das scheint doch ziemlich kompliziert zu werden, früher was das einfacher, da ging das prima mit rpm, heute ist das bei den verschiedenen Paketquellen und Pakettypen wohl komplizierter wie ich dachte.
Habe mal folgendes versucht. Zypper sollte natürlich noch funktionieren und sämtliche eingebundenen Repos erreichbar und aktuell sein.
erstmal versucht mit zypper eine Liste der aktuell installierten Pakete zu erstellt:
Code:
zypper se -i -s -t package > /tmp/package_list
oder nur von einem einzelnem Repo eine Liste der Pakete von diesem Repo
Code:
zypper se -r "opensuse-guide.org-repo" -i -s > /tmp/package_list
Liste sieht dann etwa wie folgt aus, bzw hat folgendes Format.
Code:
i | zip | package | 3.0-2.1 | i586 | openSUSE-11.4-11.4-0
i | zisofs-tools | package | 1.0.8-8.1 | i586 | openSUSE-11.4-Oss
i | zisofs-tools | package | 1.0.8-8.1 | i586 | openSUSE-11.4-11.4-0
i | zlib | package | 1.2.5-9.10.1 | i586 | Aktualisierungen für openSUSE 11.4 11.4-0
Damit kann man dann auf der Konsole schon etwas anfangen, na ja man ist vielleicht etwas übertrieben, vielleicht einige können sowas
auch wenn die nächste Zeile bei euch in mehreren Zeilen dargestellt werden sollte, es ist nur eine einzige Kommandozeile.
Code:
awk -F '|' '$1=="i " {gsub(" ","",$2);gsub(" ","",$4);gsub(" ","",$5); match($6,/[A-Za-z0-9][A-Za-z0-9 _.;:-]*[A-Za-z0-9]+/);print "zypper in -f -r" ,"\"" substr($6,RSTART,RLENGTH) "\"", "-t",$3,"\"" $2 "." $5 ">=" $4 "\""}' /tmp/package_list
Ergebnis ist dann eine Ausgabe in folgenden Format:
Code:
zypper in -f -r "openSUSE-11.4-Oss" -t package "zip.i586>=3.0-2.1"
zypper in -f -r "openSUSE-11.4-11.4-0" -t package "zip.i586>=3.0-2.1"
zypper in -f -r "openSUSE-11.4-Oss" -t package "zisofs-tools.i586>=1.0.8-8.1"
zypper in -f -r "openSUSE-11.4-11.4-0" -t package "zisofs-tools.i586>=1.0.8-8.1"
zypper in -f -r "Aktualisierungen f" -t package "zlib.i586>=1.2.5-9.10.1"
(mal abgesehen, das ich in dem AWK Script noch nicht eingebaut habe, das die Reponamen wie bei mir auch deutsche Umlaute enthalten können)
hatte ich mir eigentlich erwartet, dass das die einzelnen Zeilen funktionierende Zypper Kommandos sind, die eine Reinstallation eines Paketes anstoßen, , zumindestens auf dem openSUSE 11.4 auf dem ich das probiert habe, sehe ich nicht ob er das wirklich so macht, irgendwo könnte dort noch ein Denkfehler drin sein, oder das geht wirklich nicht mit zypper, obwohl es so wie ich die Manpage interpretiere. eigentlich funktioneren sollte.
Bei einigen Paketen mal ausprobiert, die Ausgabe sieht soweit schon ok aus, mit dem forcing, aber irgendwie sehe ich in der zypp logfile nichts .... Vielleicht macht er ja wirklich was, müsste man mal mit defekten Paketen versuchen.
Code:
# zypper in -f -r "libdvdcss repository" -t package "libdvdcss2.i586<=1.2.10-2.pm.3.1"
Loading repository data...
Reading installed packages...
Forcing installation of 'libdvdcss2-1.2.10-2.pm.3.1.i586' from repository '@System'.
Resolving package dependencies...
Nothing to do.
Na ja, vielleicht will ja jemand an dieser Stelle weiterforschen. Einige Pakete sind auch als Repo mit "(System Packages)" in der Liste, das kann so natürlich nicht funktionieren. Ist noch genügend zum basteln an diesem Thema übrig.

Im Web habe ich auch nicht was wirklich vernünftiges gefunden, außer vielleicht System mit Yast versuchen zu klonen und eine AutoYast-konfiguration daraus zu basteln. Nur ganz schlecht, wenn Yast und Yast2 wegen Fehlern nicht mehr funktioniert. :???:
robi