[solved] libxml2 und libxml2 guru Version gleichzeitig?

Alles rund um die Installation Eures Linuxsystems, sowie die Updatefunktionen des Systems und das Paketmanagement

Moderator: Moderatoren

Antworten
EagleFox
Member
Member
Beiträge: 115
Registriert: 12. Mai 2005, 18:43

[solved] libxml2 und libxml2 guru Version gleichzeitig?

Beitrag von EagleFox » 4. Okt 2006, 00:19

Hallo Leute,

ich habe plötzlich ein Problem, wenn ich mit smart ein update durchführen möchte.
Smart will immer die libxml2-devel-32bit deinstallieren (ich habe ein 64-bit System).

Daraufhin erhalte ich beim update immer die Fehlermeldungen :

Code: Alles auswählen

FEHLER!: php5-5.1.2-29.14 benötigt libxml2.so.2()(64bit)
FEHLER!: MozillaThunderbird-1.5.0.7-0.1 benötigt libxml2.so.2()(64bit)
FEHLER!: libzypp-1.3.2-0.6 benötigt libxml2.so.2()(64bit)
FEHLER!: apache2-mod_php5-5.1.2-29.14 benötigt libxml2.so.2()(64bit)
FEHLER!: libzypp-zmd-backend-7.1.1.0-42.53 benötigt libxml2.so.2()(64bit)
FEHLER!: libsvg-0.1.4-14 benötigt libxml2.so.2()(64bit)
FEHLER!: libxklavier-2.1-17 benötigt libxml2.so.2()(64bit)
FEHLER!: libxslt-1.1.15-13 benötigt libxml2.so.2()(64bit)
.
.
.

Ich habe seltsamer Weise jeweils zwei Versionen installiert:

Code: Alles auswählen

eaglefox:/home/bernd # rpm -qa | grep libxml
libxml2-2.6.23-13
libxml2-2.6.26-1.guru.suse101
libxml2-devel-32bit-2.6.23-13
libxml2-devel-2.6.26-1.guru.suse101
libxml2-32bit-2.6.23-13
libxml2-devel-2.6.23-13
libxml2-python-2.6.26-1.guru.suse101
Was kann da schief gelaufen sein?
Ich hoffe es hat jemand nen Tip für mich! Besten Dank im voraus!
Zuletzt geändert von EagleFox am 11. Okt 2006, 14:39, insgesamt 3-mal geändert.

Werbung:
traffic
Guru
Guru
Beiträge: 2750
Registriert: 13. Feb 2005, 05:50

Beitrag von traffic » 4. Okt 2006, 01:05

Ah, wunderbar - mal wieder jemand mit dem mittlerweise nicht mehr ganz unbekannten Problem, dass smart x86_64-Systeme gerne abzurauchen pflegt ;)

Poste bitte die Ausgabe von:

Code: Alles auswählen

rpm -qa --queryformat '%{N}-%{V}-%{R}.%{ARCH}\n' | grep libxml2
Kurz gesagt:

- Du musst die bis jetzt doppelt installierten Pakete wieder bereinigen, d.h. die verkehrt installierte Version entfernen, aber ohne die richtige dabei zu zerstören

- Danach musst Du die verkehrte Version, aus welchem Repository auch immer sie kam, sperren

Dazu ist die Ausgabe des o.g. Befehls erforderlich.
openSUSE Factory - GNOME 2.32.1

EagleFox
Member
Member
Beiträge: 115
Registriert: 12. Mai 2005, 18:43

Beitrag von EagleFox » 4. Okt 2006, 03:10

HI traffic, danke für die Antwort. Hier die Ausgabe der Dateien:

Code: Alles auswählen

libxml2-2.6.26-1.guru.suse101.x86_64
libxml2-devel-32bit-2.6.23-13.x86_64
libxml2-32bit-2.6.23-13.x86_64
libxml2-devel-2.6.26-1.guru.suse101.x86_64
libxml2-python-2.6.26-1.guru.suse101.x86_64
libxml2-devel-2.6.23-13.i586
libxml2-2.6.23-13.i586
Woran merke ich nun welche die verkehrte Version ist? Wie kommt es überhaupt zustande, dass ich ne "normale" und ne "guru" Version drauf habe?

Wie muss ich nun weiter verfahren?

traffic
Guru
Guru
Beiträge: 2750
Registriert: 13. Feb 2005, 05:50

Beitrag von traffic » 4. Okt 2006, 11:13

EagleFox hat geschrieben:Woran merke ich nun welche die verkehrte Version ist?
Hinschauen?
EagleFox hat geschrieben:Wie kommt es überhaupt zustande, dass ich ne "normale" und ne "guru" Version drauf habe?
Das kommt davon, dass smart gerne das Paket mit der höchsten Versionsnummer installieren möchte.

Eine weitere interessante Angewohnheit von smart ist es, die 64-Bit-Versionen und die 32-Bit-Versionen derselben Pakete gleichzeitig zu installieren.
EagleFox hat geschrieben:Wie muss ich nun weiter verfahren?
Diese Versionen hier sind OK:

libxml2-2.6.26-1.guru.suse101.x86_64
libxml2-devel-32bit-2.6.23-13.x86_64
libxml2-32bit-2.6.23-13.x86_64
libxml2-devel-2.6.26-1.guru.suse101.x86_64
libxml2-python-2.6.26-1.guru.suse101.x86_64

Diese Versionen hier sind nicht OK:

libxml2-devel-2.6.23-13.i586
libxml2-2.6.23-13.i586

Wobei "OK" jeweils bedeutet, dass die x86_64-Versionen OK und die i586-Versionen nicht OK sind. Ob die *.guru.*-Pakete für Dich OK sind, müsstest Du wissen, die i586-Pakete sind allerdings definitiv und objektiv nicht OK.

Deinstallier die verkehrten i586-Pakete, und zwar am besten ganz ohne smart, sondern mit rpm:

Code: Alles auswählen

rpm -e libxml2-devel.i586
rpm -e libxml2.i586
Anschließend kann es sein, dass Du die anderen x86_64-Pakete neu installieren musst (Befehl "smart reinstall <Paketname>" oder Menüpunkt "Erneut installieren" im GUI), weil die i586-Pakete Dateien aus den x86_64-Paketen überschrieben haben könnten.
openSUSE Factory - GNOME 2.32.1

EagleFox
Member
Member
Beiträge: 115
Registriert: 12. Mai 2005, 18:43

Beitrag von EagleFox » 4. Okt 2006, 15:41

Genau wie Du es hier vorschlägst hatte ich es gestern, bzw. heute nacht noch gemacht. Hat bisher keine Probleme gegeben.
Manchmal sieht man den Wald vor lauter Bäumen nicht! Die i586 Versionen sind mir garnicht aufgefallen, da ich auf dem System recht viele 32-bit Sachen installiert habe. Aber die werden dann ja immer extra mit 32-bit tituliert. :roll:

Danke Dir tausendfach!

EagleFox
Member
Member
Beiträge: 115
Registriert: 12. Mai 2005, 18:43

Beitrag von EagleFox » 8. Okt 2006, 20:04

Ich habe da hoffentlich noch eine letzte Frage:

wie kann ich verhindern, dass mir smart immer wieder die libxml für ein 32-bit System installieren will?
Bei smart upgrade erhalte ich folgendes:

Code: Alles auswählen

Erneuere Pakete (18):
libxml2-2.6.26-1.guru.suse101@i686                                  libdvdread-devel-0.9.7-0.pm.0@x86_64
libxml2-devel-2.6.26-1.guru.suse101@i686                            libxine1-1.1.2cvs-20061007.pm.0@x86_64
amarok-1.4.3-30.guru.suse101@x86_64                                 smart-0.42-14.guru.suse101@x86_64
amarok-libvisual-1.4.3-30.guru.suse101@x86_64                       smart-addons-0.42-14.guru.suse101@x86_64
amarok-xine-1.4.3-30.guru.suse101@x86_64                            smart-debuginfo-0.42-14.guru.suse101@x86_64
bind-libs-9.3.2-17.7@x86_64                                         smart-gui-0.42-14.guru.suse101@x86_64
bind-libs-32bit-9.3.2-17.7@x86_64                                   smart-ksmarttray-0.42-14.guru.suse101@x86_64
lftp-3.5.5-1.guru.suse101@x86_64                                    xine-ui-0.99.4cvs-20061001.pm.0@x86_64
libdvdread-0.9.7-0.pm.0@x86_64                                      xmoto-0.2.2-1.guru.suse101@x86_64

Installing packages (1):
  libcaca-0.9_0.99.beta5-0.pm.0@x86_64

Removing packages (1):
  libxml2-devel-32bit-2.6.23-13@x86_64

40.2MB an Paketdateien sind benötigt.3.2MB wird benutzt.

Änderungen anwenden? (J/n) :                    
Ich weiss zwar, wie ich nen channel deaktiviere, aber nicht, wie ich bestimmte Pakete banne!

traffic
Guru
Guru
Beiträge: 2750
Registriert: 13. Feb 2005, 05:50

Beitrag von traffic » 8. Okt 2006, 21:05

Verwende Prioritäten (lassen sich sowohl auf ganze Channels als auch auf einzelne Pakete anwenden) oder setz eine Sperre im nicht installierten Zustand auf die unerwünschte libxml2-Version oder setz eine Sperre im installierten Zustand auf die erwünschte libxml2-Version.
openSUSE Factory - GNOME 2.32.1

EagleFox
Member
Member
Beiträge: 115
Registriert: 12. Mai 2005, 18:43

Beitrag von EagleFox » 9. Okt 2006, 16:24

das gestaltet sich komplizierter als ich dachte. die libxml2-devel-32bit ist abhängig von der libxml2-devel i586 und die wiederum von der libxml2 i586.
Irgendwie steige ich da nicht mehr durch.
Ich versuche mal über yast die Abhängigkeiten zu lösen und die richtigen dateien zu installieren.

traffic
Guru
Guru
Beiträge: 2750
Registriert: 13. Feb 2005, 05:50

Beitrag von traffic » 9. Okt 2006, 18:07

EagleFox hat geschrieben:die libxml2-devel-32bit ist abhängig von der libxml2-devel i586
Nein, das ist nicht wahr.

Wenn smart das so sagt, dann macht smart etwas falsch. libxml2-devel-32bit@x86_64 ist nicht von libxml2-devel@i586 abhängig, sondern von libxml2-devel-2.6.26@anyarchitecture und libxml2-32bit@x86_64.

Lös die Abhängigkeiten selbst oder mit YaST auf. smart kann das nicht.

Nur um das mal zu dokumentieren:

Code: Alles auswählen

% rpm -qp --requires /tmp/libxml2-devel-32bit-2.6.26-12.x86_64.rpm
libxml2-devel = 2.6.26
libxml2-32bit = 2.6.26
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/sh
rpmlib(PayloadIsBzip2) <= 3.0.5-1
Da ist nirgendwo eine explizite Abhängigkeit zu einem i586-Paket drin, sondern nur eine mit Bezug auf eine Version, die keine Architektur vorschreibt. Sie kann theoretisch auch durch ein i586-Paket erfüllt werden, aber die Installation der i586-Variante eines Pakets, das auch für x86_64 verfügbar ist, ist immer ein Fehler. Leider weiß smart das nicht.

Holzhammer-Methode: Downgrade alle libxml2-Pakete auf die Versionen von SUSE und sperre anschließend alle außer denen von SUSE im nicht installierten Zustand oder die von SUSE im installierten Zustand.
openSUSE Factory - GNOME 2.32.1

EagleFox
Member
Member
Beiträge: 115
Registriert: 12. Mai 2005, 18:43

Beitrag von EagleFox » 9. Okt 2006, 23:12

Puh, also so wie Du mir gesagt hast habe ich das jetzt mal durchgezogen.
Gut zu wissen, dass smart das nicht kann, ich dachte schon ich wäre zu doof zum richtig hingucken.
Also, es scheint erst mal so zu laufen, smart upgraded jetzt auch wieder alle anderen Pakete, ohne seine geliebten "falschen" libxml installieren zu wollen!

Besten Dank!

traffic
Guru
Guru
Beiträge: 2750
Registriert: 13. Feb 2005, 05:50

Beitrag von traffic » 9. Okt 2006, 23:36

Das Problem hier ist diese Abhängigkeit:

Code: Alles auswählen

libxml2-devel = 2.6.26
Diese Abhängigkeit passt auf zwei Pakete:

libxml2-devel@i586
libxml2-devel@x86_64

Also hat der Abhängigkeits-Auflösungs-Algorithmus zwei Wege, von denen einer (x86_64) richtig und der andere (i586) falsch ist.

smart wählt den falschen Weg, weil smart anders gestrickt ist, und verheddert sich darin: Ab dem Zeitpunkt, wo smart fälschlicherweise libxml2-devel@i586 wählt, geht es nämlich nur noch mit libxml2@i586 weiter. => BOOM.

Nachdem Du die Abhängigkeit selbst richtig aufgelöst hast, macht smart nichts mehr falsch, weil es erstmal nichts mehr zu tun gibt - aber nur genau solange, bis in irgendeinem Repository wieder libxml2-Pakete auftauchen. Tauchen doch wieder welche auf, ist die Abhängigkeits-Situation wieder dieselbe und das Ergebnis dann wahrscheinlich auch.

Ich würde die libxml2-Pakete in ihrem jetzigen Zustand sperren... Features neuerer libxml2-Versionen wirst Du wahrscheinlich sowieso nie brauchen.
openSUSE Factory - GNOME 2.32.1

Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 2 Gäste