Update RPM erstellen

E

elmi

Jungspund
Hallo ihrs,

ich hab für unsere Server einige RPM-Pakete gebaut, die uns die tägliche Arbeit etwas erleichtern soll.
Jetzt habe ich in einem Paket ein paar Features hinzugefügt und wollte diese nun verteilen.
Ich habe also die in der spec-Datei angegebene Revisions-Nr. um 1 erhöht und das RPM-Paket neu gebaut. Danach habe ich das Repository aktualisiert. Mein Problem ist jetzt, dass ich das Paket nicht über Yast -> Online-Update installieren kann. Es wird einfach nicht angezeigt.

Kennt einer von euch damit aus und kann mir weiterhelfen?

Grüße
 
Mit den einzelnen Paketmanager-Modulen von YaST kenne ich mich nicht so aus, via Konsole ist dem Problem aber eventuell eh besser auf die Schliche zu kommen.

Code:
zypper ref
zypper se -s $paket

...und zeige uns doch auch mal die Ausgabe von

Code:
zypper lr -d
 
Ausgabe von zypper ref
Code:
Repository 'openSUSE-12.1-12.1-1.4' is up to date.
Repository 'openSUSE 12.1 NonOSS Add on' is up to date.
Repository 'openSUSE 12.1' is up to date.
Repository 'openSUSE_12.1' is up to date.
Repository 'test' is up to date.
Repository 'update' is up to date.
All repositories have been refreshed.

Ausgabe von zypper se -s elmi
Code:
Loading repository data...
Reading installed packages...

S | Name | Type    | Version    | Arch   | Repository       
--+------+---------+------------+--------+------------------
v | elmi | package | 0.2-201204 | noarch | test             
i | elmi | package | 0.1-201203 | noarch | (System Packages)

Die Ausgabe von zypper lr -d
Code:
# | Alias                              | Name                        | Enabled | Refresh | Priority | Type   | URI                                                   | Service
--+------------------------------------+-----------------------------+---------+---------+----------+--------+-------------------------------------------------------+--------
1 | openSUSE-12.1-12.1-1.4             | openSUSE-12.1-12.1-1.4      | Yes     | Yes     |   99     | yast2  | [url]ftp://updateserver/opensuse/12.1/x64[/url]                  |        
2 | openSUSE-12.1-NonOSS-Add-on_12.1-0 | openSUSE 12.1 NonOSS Add on | Yes     | Yes     |   99     | yast2  | [url]ftp://updateserver/updates/opensuse/12.1/non-oss[/url]      |        
3 | openSUSE-12.1_12.1-1.4             | openSUSE 12.1               | Yes     | Yes     |   99     | yast2  | [url]ftp://updateserver/updates/opensuse/12.1/oss[/url]          |        
4 | openSUSE_12.1_1                    | openSUSE_12.1               | Yes     | Yes     |   99     | rpm-md | dir:///root/transfer/Application%3a/Geo/openSUSE_12.1 |        
5 | test                               | test                        | Yes     | Yes     |   99     | rpm-md | [url]ftp://updateserver/repositories/test[/url]                  |        
6 | update                             | update                      | Yes     | Yes     |   99     | rpm-md | [url]ftp://updateserver/updates/opensuse/12.1/update[/url]       |

Über zypper scheint das Update also verfügbar zu sein.
 
Zuletzt bearbeitet:
Ich denke ich habe die Lösung gefunden:
Auf der Webseite "http://en.opensuse.org/YaST_Online_Update" steht eindeutig
YOU will only install official patches and not package updates from various unsupported or 3rd party repositories.
.

Das bedeutet also für mich, dass ich mein Repo irgendwie als offiziell kennzeichnen kann, was ich nicht glaube, dass das möglich ist, oder ich zypper für meine eigenen Updates verwenden muss.

Warum das SUSE-Team so vorgeht ist mir sehr schleierhaft, zumal ich ja unter Software-Repositories im YaST auch nicht offizielle Repos einbinden kann. Warum sollte ich die dann nicht updaten können? Ich finde das eine ziemliche Bevormundung.
 
Das alte RPM existiert nicht mehr im gleichen Repo.
Vermutlich wird YaST und zypper nicht erkennen, dass das installierte RPM auch aus diesem Repo "test" kam und daher wird es nicht als Update angeboten.
"zupper up" würde nichts dazu tun, weil mit "zypper up" kein Repo-Wechsel vollzogen wird.
 
hi reni,

ähm irgendwie wartet ein beitrag von mir noch auf bestätigung durch den moderator... das problem ist, naja, sagen wir gelöst. Das Yast Online Update lässt lediglich offizielle Repos zu. Über zypper kann ich das Update installieren.
 
Leider bin ich auf ein weiteres Problem gestoßen:
rpm -U installiert zuerst das neue RPM und löscht dann die Vorgänger-Version. In meinem spec-File ist allerdings im %postun Abschnitt eingetragen, dass alles rückstandslos wieder vom System entfernt werden soll. Somit ist das installierte neue Paket unbrauchbar, weil bei der Deinstallation des alten die ganzen Dateien gelöscht werden. Find das vollkommen idiotisch, wie dort vorgegangen wird. Meiner Meinung noch sollte zuerst das alte entfernt und danach das neue installiert werden.
Ich habe soeben auf allen Servern die Pakete händisch ausgetauscht, indem ich das alte rpm gelöscht und das neue anschließend verteilt habe.
Sinnlose Arbeit. Vielleicht kennt ihr ja eine bessere Vorgehensweise.
 
rpm -U installiert zuerst das neue RPM und löscht dann die Vorgänger-Version. In meinem spec-File ist allerdings im %postun Abschnitt eingetragen, dass alles rückstandslos wieder vom System entfernt werden soll. Somit ist das installierte neue Paket unbrauchbar, weil bei der Deinstallation des alten die ganzen Dateien gelöscht werden. Find das vollkommen idiotisch, wie dort vorgegangen wird. Meiner Meinung noch sollte zuerst das alte entfernt und danach das neue installiert werden.

Dann denk mal scharf nach, was die von Dir vorgeschlagene Vorgehensweise für Folgen bei einem Update von z.B. rpm oder gar glibc hätte.

Na?

Vielleicht doch nicht ganz so idiotisch, wie Du meinst. :-)

Vielleicht kennt ihr ja eine bessere Vorgehensweise.

Aus dem Gedächtnis (also besser noch einmal nachforschen, ob es genau so stimmt):
Code:
%postun
if [ "$1" = 0 ] ; then
    $TU_WAS
fi
Greetz,

RM

P.S.

Ich weiß zwar nicht, was Du da genau im %postun machst, aber eigentlich haben auch Befehle, die Dateien löschen, in einem %postun gerade mal gar nichts zu suchen.
Sollte es sich um Dateien handeln, die nicht im RPM selbst sind aber von den dort enthaltenen Programmen angelegt werden (logs, configs o.ä.), dann möchtest Du Dir das "%ghost"-macro genauer ansehen.
 
Zuletzt bearbeitet von einem Moderator:
Hi Rain_Maker,

richtig, für diese Pakete wäre mein Weg fatal, bzw idiotisch^^

if [ "$1" = 0 ] ; then
$TU_WAS
fi
Genau das habe ich gesucht, 0 = "on uninstall", 1 = "on upgrade".

Das sollte meine ganzen Probleme lösen ;)

Vielen Dank für die Aufklärung.
 
Zurück
Oben