• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Pakete sperren?

kreegee

Newbie
hm, hab heute apt installiert und auch frischfröhlich ein upgrade durchgeführt. allerdings wurde mir wiedermal dieses unsägliche 20030616p5 von amavisd-new installiert (apt meint das sei neuer als meine installierte version 2.0.4), welches inkompatibel mit den neuen SpamAssassin Versionen ist.

Kann ich dieses Package irgendwie sperren, oder apt-get beibringen dass 2.0.4 > 20030616p5 ist, oder soll ich den SpamAssassin-Maintainer kontaktieren und fragen ob er den Conflict ins Package reinbauen kann? (ein wirklicher conflict ists aber auch nicht, kann gut sein dass jemand spam-assasin und amavisd-new gleichzeitig aber unabhängig nutzt)
 

oc2pus

Ultimate Guru
Das Zauberwort heisst Pinning.

[HOWTO] RPMs festnageln, unerwünschtes Update verhindern
http://www.linux-club.de/viewtopic.php?t=14567
 
OP
K

kreegee

Newbie
hm, danke schonmal...

Code:
package: amavisd-new
Pin: version 2.*
Pin-Priority: 1001

funktioniert soweit, will ichs aber sauber machen und die alten sperren (wer weiss, vieleicht kommt ja mal amavisd-new 3.0) geht nix.

trotz

Code:
package: amavisd-new
Pin: version 2003*
Pin-Priority: -1

oder

Code:
package: amavisd-new
Pin: version 20030616p5-31
Pin-Priority: -1

will "apt-get upgrade" amavisd-new updaten. ein apt-cache show amavisd-new gibt mir die installierte version 2.0-4 und die version 20030616p5-31 aus.
 

oc2pus

Ultimate Guru
was soll Pin-Priority -1 sein ? damit sollte es eigentlich deinstalliert werden ...

für Debina gilt wohl dieses hier:
http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.de.html
Lassen Sie uns einen Blick darauf werfen, wie die Pin-Priorität funktioniert. Eine niedrigere Priorität als Null bewirkt, daß das Paket nie installiert wird. Prioritäten von 0 bis 100 bezeichnen Pakete, die nicht installiert sind und keine verfügbare Version haben. Solche Pakete werden in der Auswahl verfügbarer Versionen nicht berücksichtigt. Die Priorität 100 bezeichnet ein installiertes Paket. Damit eine installierte Version von einer anderen ersetzt wird, muß die Priorität über 100 liegen.

Prioritäten über 100 sagen aus, daß ein Paket installiert werden soll. Normalerweise wird ein installiertes Paket nur durch neuere Versionen übersetzt. Alle Prioritäten zwischen 100 und 1000 (inklusive) führen zu diesem Normalverhalten. Ein Paket mit solcher Priorität wird nicht durch eine niedrigere Version ersetzt. Wenn ich also zum Beispiel sylpheed 0.5.3 installiert habe und einen Pin auf sylpheed 0.4.99 mit der Priorität 999 definiert habe, wird Version 0.4.99 nicht installiert werden, um den Pin zu erfüllen. Um Pakete deaktualisieren zu können, um einen Pin zu erfüllen, braucht der Pin eine Priorität von über 1000.

für apt4rpm würde ich eher der man-page Vertrauen: man apt_preferences
 
OP
K

kreegee

Newbie
Eine niedrigere Priorität als Null bewirkt, daß das Paket nie installiert wird.

das will ich ja genau, amavisd-new2003* soll nie installiert werden. deshalb priority -1.

edit: auch mit pin-priority 10 wirds trotzdem noch installiert, trotz
Damit eine installierte Version von einer anderen ersetzt wird, muß die Priorität über 100 liegen.
 

oc2pus

Ultimate Guru
siehe meine Anmerkung oben, hat sich wohl überschnitten.

und poste bitte mal die Ausgabe von apt policy amavisd-new
 
OP
K

kreegee

Newbie
apt4rpm hat eigentlich ziemlich die gleiche interpretationen von priorites.

0 < P <=100
causes a version to be installed only if there is
no installed version of the package


P < 0 prevents the version from being installed

momentane config:

Code:
package: amavisd-new
Pin: version 2003*
Pin-Priority: 10

apt policy amavisd-new:
Code:
amavisd-new:
  Installed: 2.0-4
  Candidate: 20030616p5-31
  Package Pin: 20030616p5-31
  Version Table:
     20030616p5-31 10
        500 ftp://ftp4.gwdg.de SuSE/9.0-i386/base pkglist
 *** 2.0-4 0
        100 RPM Database

vielen dank für deine bemühungen!
 

oc2pus

Ultimate Guru
ok, ich glaube ich verstehe jetzt dein Problem.

Pinning bezieht sich auf installierte Pakete.
D.h du möchtest 2.0-4 behalten, deshalb brauchst du dafür einen Pin-Eintrag (2.*). Ein amavisd-new-3.x würde dir aber dann auch nicht automatisch upgedated werden. Es würde aber in der "zurückgehaltenen Pakete" Auswahl erscheinen. Und du könntest es mit apt install amavisd-new=3.xxxxx installieren.
.
Zusätzlich willst du NIE 2003xxxx installiert haben, dann erstelle dafür einen zusätzlichen Pin-Eintrag, mit der -1.

es gibt gerade auf SuSE-9.3 so ein ähnliches Problem mit dem MozillaFirefox:
Code:
Package: MozillaFirefox
Pin: version 1.4*
Pin-Priority: -1

Package: MozillaFirefox
Pin: version 1.0.6*
Pin-Priority: 1001
damit unterbinde ich diese unselige Beta des firefox und bekomme keine "zurückgehaltenen Pakete". Wenn ich den zweiten Eintrag entferne, wird der firefox als zurückgehaltenes Paket angeboten.
 
OP
K

kreegee

Newbie
genau, habs jetzt mal so gemacht, funzt natürlich, aber ich denk das liegt an der bevorzugung des installierten packetes, und nicht an der benachteilung der 2003-er version.

aber ich gebs jetzt auf. amavisd-new 3.0 kommt wahrscheinlich eh net so schnell, und übertreiben sollte mans ja mit dem perfektionismus auch nicht ;)

edit: habs grad deinen post nochamsl gelesen, " Ein amavisd-new-3.x würde dir aber dann auch nicht automatisch upgedated werden." - genau das möchte ich vermeiden.
 
Oben