pkg upgrade will nicht die neuste Version eines Paketes installieren

jmt

Well-Known Member
Hallo zusammen,

ich benutze exim als Mail-Server und nach dem letzten Sicherheitsvorfall will ich nun das gefixte exim 4.96.1 installieren. Diese Version ist auch in den Ports angekommen. Über die latest Packages kann ich diese Version nicht installieren. Deshalb habe ich mein Poudriere angeschmissen und die Version dort gebaut. Mein Problem ist nun, dass pkg upgrade diese Version nicht installieren will. Ich habe das Paket exim-ldap2 in der Version 4.96_1 installiert. Wenn ich nun versuche das Paket exim (ohne -ldap2) zu installieren, dann wird mir auch die Version 4.96.1 vorgeschlagen. Mache ich ein pkg rquery %n-%v, dann sehe ich, dass beide Versionen (4.96_1 und 4.96.1) zur Verfügung stehen, sowohl als Paket exim als auch als Paket exim-ldap2. Wobei exim-ldap2 in der version 4.96.1_1 vorliegt. Diese Versionsnummer sollte aber doch größer sein als 4.96_1 (4.96.1_1 > 4.96_1). Nur bekomme ich es nicht hin, dass das neuere Paket verwendet wird. Selbst ein pkg upgrade -f exim-ldap2 will wieder die Version 4.96_1 instaliieren. Was läuft hier falsch? Und wie kann ich herausfinden, warum pkg die neuere Version nicht installieren will?
 
Hast du mal versucht, das Paket, das du nicht haben willst, mittels pkg lock auf hold zu setzen? Dann müsste ja zwangsläufig die andere Version installiert werden, oder sehe ich das falsch? Wobei ich allerdings erwähnen muss, dass ich nicht weiß, wie und ob sich die beiden verschiedenen Versionen in Punkto Abhängigkeiten unterscheiden und ob du dir damit nicht letztendlich ein inkonsistentes System einhandelst. Es muss ja einen Grund geben, warum das nicht geht.
 
Moin,

zeige mal deine /usr/local/etc/pkg/repos/foobar.conf Testweise würde ich mal in der /etc/pkg/FreeBSD.conf enabled: no setzen (bzw. so wie es dort beschrieben ist, was der saubere Weg wäre), damit nur die poudriere-Pakete zur Verfügung stehen.

HTH
 
Moin,

zeige mal deine /usr/local/etc/pkg/repos/foobar.conf Testweise würde ich mal in der /etc/pkg/FreeBSD.conf enabled: no setzen (bzw. so wie es dort beschrieben ist, was der saubere Weg wäre), damit nur die poudriere-Pakete zur Verfügung stehen.

HTH
Ich hatte sowieso nur ein Repository aktiv. Also entweder nur mein Poudriere Repository oder das von FreeBSD (latest).
 
Hast du mal versucht, das Paket, das du nicht haben willst, mittels pkg lock auf hold zu setzen? Dann müsste ja zwangsläufig die andere Version installiert werden, oder sehe ich das falsch? Wobei ich allerdings erwähnen muss, dass ich nicht weiß, wie und ob sich die beiden verschiedenen Versionen in Punkto Abhängigkeiten unterscheiden und ob du dir damit nicht letztendlich ein inkonsistentes System einhandelst. Es muss ja einen Grund geben, warum das nicht geht.
Das habe ich nicht versucht. Aber mach pkg lock nicht genau das Gegenteil von dem was ich will? Wenn ich das richtig verstehe, dann wird damit ein Paket festgehalten, dass es eben nicht upgedated wird. Schließlich war ich erfolgreich, indem ich pkg upgrade exim-ldap2-4.96.1_1 aufgerufen habe. Also durch Angabe der Versionsnummer konnte ich das Paket erneuern. Aber sollte das nicht automatisch mit pkg upgrade funktionieren?
 
Aber mach pkg lock nicht genau das Gegenteil von dem was ich will? Wenn ich das richtig verstehe, dann wird damit ein Paket festgehalten, dass es eben nicht upgedated wird. Schließlich war ich erfolgreich, indem ich pkg upgrade exim-ldap2-4.96.1_1 aufgerufen habe. Also durch Angabe der Versionsnummer konnte ich das Paket erneuern. Aber sollte das nicht automatisch mit pkg upgrade funktionieren?
Nun ja, ich dachte halt, wenn du die Version auf hold setzt, die du eben NICHT wilst, dann eben zwangsläufig das andere von dir gewünschte Paket installiert wird, da pkg upgrade ja keine andere Wahl hat. ;)
 
@Macke1979 - pkg lock "sperrt" ein bereits installiertes Paket; es wird dann ab da weder upgraded, downgraded, deinstalliert (z.B. bei einem Update, was dir letztens passiert ist) und auch nicht reinstalliert; es bleibt auf genau der installierten Version stehen.
 
@turrican Aber jmt schrieb doch, dass ihm zwei Versionen angezeigt werden und pkg upgrade ihm die ältere Version installiert, wenn ich da nicht etwas komplett falsch verstanden habe. Also wäre es doch naheliegend, eben diese ältere Version auf hold zu setzen, damit diese eben NICHT installiert bzw geupgradet wird, sondern stattdessen die Neue. Ich kann da auch was falsch verstanden haben, falls ja, tut mir dies natürlich leid.
 
Also, ich habe die alte Version installiert und möchte auf die neue updaten. Also eine der normalsten Sachen der Welt. :) Nur dass pkg upgrade die neue Version nicht installieren will. Mittels pkg rquery sehe ich die neue Version jedoch. Eigentlich dachte ich immer, dass es ausreicht, pkg update && pkg upgrade auszuführen. Damit sollten doch alle Pakete aktualisiert werden. Oder sehe ich da etwas falsch?
 
@Macke1979 - ich kann deinen Gedankengang schon nachvollziehen, aber so ist "pkg lock" nicht gedacht; wenn du ein Paket mittels "lock" sperrst, dann heißt das nicht, dass du hernach eine neuere oder ältere Version einfach parallel nachinstallieren kannst, quasi als 2.Version des Pakets, zur bereits vorhandenen; zumindest wäre mir das gänzlich neu, die Foren-Götter mögen mich hier belehren, falls notwendig.

Wenn du ne neuere (oder ältere) Version installieren möchtest, dann ging das bisher über ein neues boot-Environment mittels beadm bzw bectl.
 
Ich möchte nur noch daraf hinweise, dass es mir nicht darum ging, zwei verschiedene Versionen parallel zu installieren. Ich wollte einfach nur ein Paket mit Version X auf die Version Y>X updaten. Danach gibt es das Paket nur in der Version Y und nicht mehr in der Version X. Das sollte doch "ganz einfach" funktionieren, oder?
PS: Die meiste Zeit tut es das bei mir auch, aber hier gerade nicht. Das ist um so "schlimmer" als ich damit ein Security-Hole stopfen wollte.
 
Ich möchte nur noch daraf hinweise, dass es mir nicht darum ging, zwei verschiedene Versionen parallel zu installieren. Ich wollte einfach nur ein Paket mit Version X auf die Version Y>X updaten.
so hatte ich das auch verstanden

EDIT:
kann dir leider auch nicht sagen, warum sich das jetzt so bei dir verhält, wollte macke1979 nur darlegen, wie (meiner Meinung nach) pkg lock funktioniert.

Kann sich eigentlich nur um eine Versionsabhängigkeit irgendwo handeln? Das System erkennt die neue Version 4.96.1 nicht als die neuere an, warum auch immer?

Kann man rausfinden, wie sich 4.96.1 und 4.96_1 unterscheiden, z.B. Build-Options?
 
und dann noch 4.96.1_1. Kannst du mal die pkg %n%v und co wirklich verbatim rauskopieren. Vielleicht ist der semver parser verwirrt ;-)
 
so hatte ich das auch verstanden

EDIT:
kann dir leider auch nicht sagen, warum sich das jetzt so bei dir verhält, wollte macke1979 nur darlegen, wie (meiner Meinung nach) pkg lock funktioniert.

Kann sich eigentlich nur um eine Versionsabhängigkeit irgendwo handeln? Das System erkennt die neue Version 4.96.1 nicht als die neuere an, warum auch immer?

Kann man rausfinden, wie sich 4.96.1 und 4.96_1 unterscheiden, z.B. Build-Options?
Die Build-Options haben sich nicht geändert. Wurde beides einfach nur mit poudriere gebaut, ohne an den Options zu fummeln.
 
und dann noch 4.96.1_1. Kannst du mal die pkg %n%v und co wirklich verbatim rauskopieren. Vielleicht ist der semver parser verwirrt ;-)
Code:
root@mail:/ # pkg query "%n-%v" exim-ldap2
exim-ldap2-4.96.1_1
root@mail:/ # pkg rquery "%n-%v" exim-ldap2
exim-ldap2-4.96_1
exim-ldap2-4.96.1_1
 
würde so aussehen als ob diese Versionen von der Logik in pkg als gleichwertig angesehen werden, was die Versionierung betrifft (also 4.96.1_1 nicht neuer als 4.96_1)
 
Zurück
Oben