Seit meinem Update auf openSUSE 11.0 zeigte das openSUSE-Updater-Applet (opensuseupdater-kde) mir alle Aktualisierungen doppelt an. Grund war, dass ich versehentlich zwei Update-Repositories eingebunden hatte. Das Entfernen eines der beiden Repositories löste das Problem. Im Bild ist zu sehen, dass die Updates für Java 5 und Java 6 doppelt vorhanden sind. Da das Applet nur eine graphische Schnittstelle für zypper ist lag es nahe zu schauen, ob dieses das gleiche Verhalten aufweist.

marix@eddie:~> zypper lu
Die Daten des Repositorys 'Lokale RPMs' sind veraltet. Sie können 'zypper refresh' als Root ausführen, um die Daten zu aktualisieren.
Lese installierte Pakete...
Patches

Repository | Name | Version | Kategorie | Status ------------------------------+----------------+---------+-----------+--------- openSUSE-11.0-FTP-UPDATE 11.0 | java-1_5_0-sun | 96 | security | Benötigt openSUSE-11.0-Updates | java-1_5_0-sun | 96 | security | Benötigt openSUSE-11.0-FTP-UPDATE 11.0 | java-1_6_0-sun | 97 | security | Benötigt openSUSE-11.0-Updates | java-1_6_0-sun | 97 | security | Benötigt

Auch zypper zeigt jedes Update doppelt. Doch auch die Ursache des Problems ist zu sehen. Jede Aktualisierung ist aus zwei verschiedenen Repositories zu beziehen. Das erklärt sowohl wieso es die Updates doppelt gibt, als auch, wieso trotzdem immer korrekt aktualisiert wurde. Denn zypper hat immer nur das Update aus der ersten Quelle wirklich installiert, ähnlich wie bei Paketen die aus mehreren Quellen zu holen sind.

marix@eddie:~> zypper lr
#  | Alias                         | Name                              | Aktiviert | Auffrischen
---+-------------------------------+-----------------------------------+-----------+------------
1  | Lokale_RPMs                   | Lokale RPMs                       | Ja        | Ja
2  | suse_1                        | openSUSE-11.0-FTP-SRC-NonOSS 11.0 | Ja        | Ja
3  | Marix'_Home_Repository_1      | Marix' Home Repository            | Ja        | Ja
4  | NVIDIA_Repository             | NVIDIA Repository                 | Ja        | Ja
5  | KDE:KDE4:Factory:Desktop      | KDE:KDE4:Factory:Desktop          | Ja        | Ja
6  | openSUSE-11.0-FTP_11.0        | openSUSE-11.0-FTP 11.0            | Ja        | Ja
7  | home:thindil_1                | home:thindil                      | Ja        | Ja
8  | VideoLan_Repository           | VideoLan Repository               | Ja        | Ja
9  | 11.0                          | openSUSE-11.0-FTP-UPDATE 11.0     | Ja        | Ja
10 | openSUSE-11.0-FTP-DEBUG_11.0  | openSUSE-11.0-FTP-DEBUG 11.0      | Ja        | Ja
11 | Marix'_Sane_Repository        | Marix' Sane Repository            | Nein      | Ja
12 | openSUSE-11.0-Updates         | openSUSE-11.0-Updates             | Ja        | Ja
13 | Security_and_Privacy_1        | Security and Privacy              | Ja        | Ja
14 | home:dstoecker                | home:dstoecker                    | Nein      | Ja
15 | Packman_Repository            | Packman Repository                | Ja        | Ja
16 | openSUSE-11.0-FTP-NonOSS_11.0 | openSUSE-11.0-FTP-NonOSS 11.0     | Ja        | Ja
17 | openSUSE-DVD 11.0             | openSUSE-DVD 11.0                 | Nein      | Nein
18 | suse                          | openSUSE-11.0-FTP-SRC 11.0        | Ja        | Ja

In der Auflistung aller Quellen sieht man an Position 9 und 12 die beiden Update-Repositories. Zum Glück kann man mit zypper die Repositories auch über ihre Nummer identifizieren, so ist das entfernen nur wenig Tipparbeit.

marix@eddie:~> sudo zypper rr 9
Entferne Repository 'openSUSE-11.0-FTP-UPDATE 11.0' [fertig]
Repository 'openSUSE-11.0-FTP-UPDATE 11.0' wurde entfernt.

Eine anschließende Überprüfung der verfügbaren Updates zeigt, dass das Problem erfolgreich behoben wurde.

marix@eddie:~> sudo zypper refresh
Lade Metadaten von Repository 'Lokale RPMs' herunter [fertig]
Repository 'openSUSE-11.0-FTP-SRC-NonOSS 11.0' ist aktuell.
Repository 'Marix' Home Repository' ist aktuell.
Repository 'NVIDIA Repository' ist aktuell.
Repository 'KDE:KDE4:Factory:Desktop' ist aktuell.
Repository 'openSUSE-11.0-FTP 11.0' ist aktuell.
Repository 'home:thindil' ist aktuell.
Repository 'VideoLan Repository' ist aktuell.
Repository 'openSUSE-11.0-FTP-DEBUG 11.0' ist aktuell.
Repository 'openSUSE-11.0-Updates' ist aktuell.
Repository 'Security and Privacy' ist aktuell.
Repository 'Packman Repository' ist aktuell.
Repository 'openSUSE-11.0-FTP-NonOSS 11.0' ist aktuell.
Repository 'openSUSE-11.0-FTP-SRC 11.0' ist aktuell.
Alle Repositories wurden aufgefrischt.
marix@eddie:~> zypper lu
Lese installierte Pakete...
Patches

Repository | Name | Version | Kategorie | Status ----------------------+----------------+---------+-----------+--------- openSUSE-11.0-Updates | java-1_5_0-sun | 96 | security | Benötigt openSUSE-11.0-Updates | java-1_6_0-sun | 97 | security | Benötigt

Ist man sowieso schon auf der Konsole unterwegs kann man die Updates auch gleich von dort einspielen.

marix@eddie:~> sudo zypper up
Lese installierte Pakete...

Die folgenden Pakete werden aktualisiert: java-1_6_0-sun java-1_6_0-sun-devel java-1_6_0-sun-alsa java-1_6_0-sun-jdbc java-1_5_0-sun-plugin java-1_5_0-sun

Die folgenden NEUEN Patches werden installiert: java-1_6_0-sun java-1_5_0-sun

Gesamtgröße des Herunterladens: 55,5 M. Nach der Operation werden zusätzlich 21,1 M genutzt. Fortfahren? [JA/nein]: Herunterladen von Paket java-1_6_0-sun-1.6.0.u7-1.1.x86_64 (1/8), 21,9 M (79,6 M installiert) Lade Delta herunter: ./rpm/x86_64/java-1_6_0-sun-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm, 437,3 K Lade herunter: java-1_6_0-sun-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig (127,1 K/s)] Wende Delta an: ./java-1_6_0-sun-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig] Installiere: java-1_6_0-sun-1.6.0.u7-1.1 [fertig] Herunterladen von Paket java-1_5_0-sun-1.5.0_update16-1.1.i586 (2/8), 20,1 M (74,4 M installiert) Lade herunter: java-1_5_0-sun-1.5.0_update16-1.1.i586.rpm [fertig (195,7 K/s)] Installiere: java-1_5_0-sun-1.5.0_update16-1.1 [fertig] Herunterladen von Paket java-1_6_0-sun-devel-1.6.0.u7-1.1.x86_64 (3/8), 13,0 M (51,9 M installiert) Lade Delta herunter: ./rpm/x86_64/java-1_6_0-sun-devel-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm, 6,2 M Lade herunter: java-1_6_0-sun-devel-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig (130,2 K/s)] Wende Delta an: ./java-1_6_0-sun-devel-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig] Installiere: java-1_6_0-sun-devel-1.6.0.u7-1.1 [fertig] Herunterladen von Paket java-1_6_0-sun-alsa-1.6.0.u7-1.1.x86_64 (4/8), 40,0 K (88,0 K installiert) Lade Delta herunter: ./rpm/x86_64/java-1_6_0-sun-alsa-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm, 16,5 K Lade herunter: java-1_6_0-sun-alsa-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig] Wende Delta an: ./java-1_6_0-sun-alsa-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig] Installiere: java-1_6_0-sun-alsa-1.6.0.u7-1.1 [fertig] Herunterladen von Paket java-1_6_0-sun-jdbc-1.6.0.u7-1.1.x86_64 (5/8), 32,0 K (88,0 K installiert) Lade Delta herunter: ./rpm/x86_64/java-1_6_0-sun-jdbc-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm, 16,2 K Lade herunter: java-1_6_0-sun-jdbc-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig] Wende Delta an: ./java-1_6_0-sun-jdbc-1.6.0.u6_1.6.0.u7-8.1_1.1.x86_64.delta.rpm [fertig] Installiere: java-1_6_0-sun-jdbc-1.6.0.u7-1.1 [fertig] Herunterladen von Paket java-1_5_0-sun-plugin-1.5.0_update16-1.1.i586 (6/8), 469,0 K (1,7 M installiert) Lade Delta herunter: ./rpm/i586/java-1_5_0-sun-plugin-1.5.0_update15_1.5.0_update16-12.1_1.1.i586.delta.rpm, 60,7 K Lade herunter: java-1_5_0-sun-plugin-1.5.0_update15_1.5.0_update16-12.1_1.1.i586.delta.rpm [fertig] Wende Delta an: ./java-1_5_0-sun-plugin-1.5.0_update15_1.5.0_update16-12.1_1.1.i586.delta.rpm [fertig] Installiere: java-1_5_0-sun-plugin-1.5.0_update16-1.1 [fertig]