# Wie verhindere ich die Installation eines neuen Packets?[so]

## Erich

Hi.

```
pingu erichgentoo # emerge -avuD world

These are the packages that would be merged, in order:

Calculating world dependencies... done!

[blocks B     ] <media-sound/esound-0.2.36-r2 (is blocking app-admin/eselect-esd-20060719)

[ebuild  N    ] app-admin/eselect-esd-20060719  1 kB

[ebuild     U ] media-sound/esound-0.2.36-r2 [0.2.36-r1] USE="alsa ipv6 tcpd -debug (-static%)" 0 kB

[ebuild     U ] media-sound/alsa-utils-1.0.13 [1.0.12] USE="nls" 957 kB

Total size of downloads: 959 kB

!!! Error: The above package list contains packages which cannot be installed

!!!        at the same time on the same system.

For more information about Blocked Packages, please refer to the following

section of the Gentoo Linux x86 Handbook (architecture is irrelevant):

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked

```

Oder,wie bekomme ich die Blockade wieder in Ordnung.  :Crying or Very sad: Last edited by Erich on Thu Oct 26, 2006 6:15 pm; edited 1 time in total

----------

## firefly

emerge -C esound && emerge esound  :Wink: 

----------

## Erich

Danke firefly.

Jetzt schreibe bitte noch-ich will ja jetzt nicht undankbar sein-wie hast du das herausgefunden.Das hat etwas mit Logig zu tun.Ich habe diese Woche Nachtschicht,und da ist mein Denkprozess sehr eingeschrängt.  :Crying or Very sad: 

----------

## nikaya

Es ist so dass der Block meistens entsteht weil ein neues Paket die Funktion des alten übernimmt.Diese würden sich in die Quere kommen wenn sie parallel installiert sind.

Da Portage aber sowas nicht eigenmächtig über den Kopf hinweg entscheiden möchte/kann,wird durch das Blocken eine Interaktion des Users erforderlich.

----------

## SinoTech

 *Erich wrote:*   

> 
> 
> [...]
> 
> Calculating world dependencies... done!
> ...

 

Das bedeutet soviel das das Paket "esound" in irgendeiner Version vor 0.2.36-r2 installiert ist, und "eselect-esd-20060719" damit nicht klar kommt. Ein unmergen und danach erneutes emergen dieses paketes bringt dir eine neuere version (>= 0.2.36-r2) welches dann auch mit eselect-esd-20060719 funktioniert.

Cheers,

Sino

----------

## psyqil

Steht doch da...  :Razz: 

Gibt's auch auf deutsch: http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?full=1#blocked

 *Quote:*   

> Ebuilds enthalten spezifische Felder, die Portage über die Abhängigkeiten informieren. Es gibt zwei mögliche Formen von Abhängigkeiten: Build Abhängigkeiten, deklariert in DEPEND und Abhängigkeiten zur Laufzeit, deklariert in RDEPEND. Wenn eine dieser Abhängigkeiten ein Paket oder eine Virtual als explizit nicht kompatibel kennzeichnet, wird ein Blocker ausgelöst. 
> 
>  Um einen solchen Blocker zu umgehen können Sie entweder auf das Installieren des Pakets verzichten, oder das den Blocker auslösende Paket zuerst deinstallieren. Im gerade angebrachten Beispiel sind Ihre Optionen der Verzicht auf die Installation von postfix oder die vorherige Deinstallation von ssmtp.

 

In diesem Fall übernimmt wohl eselect-esd eine Datei, die vorher zu esd gehört hat; da die nicht überschrieben werden darf, mußt Du manuell tätig werden.

----------

## nikaya

 *SinoTech wrote:*   

>  Ein unmergen und danach erneutes emergen dieses paketes bringt dir eine neuere version (>= 0.2.36-r2) welches dann auch mit eselect-esd-20060719 funktioniert.
> 
> 

 

Nur unmergen von esound hat bei mir gereicht.Portage fügt das neue Paket automatisch hinzu.

----------

## psyqil

Ach ja: Pass bloß auf, daß sie Dich nicht an der Gurgel packt und schüttelt!

----------

## SinoTech

 *psyqil wrote:*   

> Ach ja: Pass bloß auf, daß sie Dich nicht an der Gurgel packt und schüttelt!

 

Hat sie schon ein paar mal versucht ... aber ich war ich war schneller  :Wink: 

Cheers,

Sino

----------

## TheSmallOne

 *SinoTech wrote:*   

>  *Erich wrote:*   
> 
> [...]
> 
> Calculating world dependencies... done!
> ...

 

Hm, wieso ist denn diese veraltete Version dieses Paketes überhaupt da? Müsste das world-update dieses Paket nicht auch miteinschließen und updaten?

----------

## SinoTech

 *TheSmallOne wrote:*   

>  *SinoTech wrote:*    *Erich wrote:*   
> 
> [...]
> 
> Calculating world dependencies... done!
> ...

 

Doch, das world-update schließt dieses Paket mit ein, aber bei der Berechnung der Abhängigkeiten geht portage anscheinend immer von der aktuell installlierten Version aus, und nicht von dem was wärend des updates installiert wird.

Cheers,

Sino

----------

## TheSmallOne

 *SinoTech wrote:*   

> Doch, das world-update schließt dieses Paket mit ein, aber bei der Berechnung der Abhängigkeiten geht portage anscheinend immer von der aktuell installlierten Version aus, und nicht von dem was wärend des updates installiert wird.

 

DANN ist dieses Vorgehen wirklich völlig dämlich und sollte geändert werden.  :Smile: 

----------

## firefly

 *SinoTech wrote:*   

> Doch, das world-update schließt dieses Paket mit ein, aber bei der Berechnung der Abhängigkeiten geht portage anscheinend immer von der aktuell installlierten Version aus, und nicht von dem was wärend des updates installiert wird.

 

Ähm das siehst du falsch, denn es berechnet die abhängigkeiten für die aktuellste version  :Smile:  und da esound-0.2.36-r2

eselect-esd als abhängigkeit hat wird auch diese versucht zu installieren.

Da aber eselect-esd als RDEPEND(Reverse depend) "!<media-sound/esound-0.2.36-r2" drinn stehen hat, kommt dieser block zustande.

Ich vermute, das portage blocks nicht automatisch auflöst, denn es könnte ja sein, das der admin des systems die neue version nicht installiert haben möchte.

----------

## SinoTech

 *firefly wrote:*   

> 
> 
> [...]
> 
> Da aber eselect-esd als RDEPEND(Reverse depend) "!<media-sound/esound-0.2.36-r2" drinn stehen hat, kommt dieser block zustande.
> ...

 

Ja, aber nach dem update ist "<media-sound/esound-0.2.36-r2" nicht mehr installiert, sondern eine höhere Version. Demnach rechnet portage zu dem Zeitpunkt nur mit der aktuell installierten Version, und nicht mit der, die nach dem update installiert sein wird.

 *firefly wrote:*   

> 
> 
> [...]
> 
> Ich vermute, das portage blocks nicht automatisch auflöst, denn es könnte ja sein, das der admin des systems die neue version nicht installiert haben möchte.

 

Blocks kommen oft Zustande weil ein Package die Funktionalität eines anderen übernimmt, und dadurch das alte eigentlich komplett deinstalliert werden müsste. Die entscheidung will portage aber nicht alleine treffen, sondern dem Admin überlassen. Das Problem das ein Package nur geupdated werden müsste stellt da wohl nur einen Sonderfall da, der von portage aber nicht separat behandelt wird.

Cheers,

Sino

----------

## Polynomial-C

 *firefly wrote:*   

> ...RDEPEND(Reverse depend)...

 

RDEPEND = runtime dependency

----------

## TheSmallOne

 *firefly wrote:*   

> Ich vermute, das portage blocks nicht automatisch auflöst, denn es könnte ja sein, das der admin des systems die neue version nicht installiert haben möchte.

 

Naja, das mag unter gewissen Umständen möglich sein, aber ich denke, wenn der admin ein "emerge -Du world" macht, dann sollte portage doch davon ausgehen können, dass der Admin eben doch die aktuellste Version haben möchte, oder nicht?

----------

## Necoro

Portage sollte nie irgend wovon ausgehen ... wenn es sich unsicher ist, fragt es - und wo ist jetzt das problem dabei, ein altes paket zu unmergen?

----------

## TheSmallOne

Das "Problem" ist m.E., dass man zu einem zusätzlichen Befehl genötigt wird (nämlich das unmergen des veralteten Pakets), obwohl man portage bereits gesagt hat, dass man dieses Paket nicht mehr haben will.

Denn ein world-update (inkl -D) heißt ja nichts anderes als: "Ersetze alle veralteten Pakete durch ihre neueste Version".

Wenn du eine Datei mit "rm -f" löscht, dann willst du ja auch nicht nochmal gefragt werden, ob du die Datei wirklich löschen willst.

----------

## nikaya

 *TheSmallOne wrote:*   

> 
> 
> Denn ein world-update (inkl -D) heißt ja nichts anderes als: "Ersetze alle veralteten Pakete durch ihre neueste Version".
> 
> 

 

Die Sache ist aber die dass bei einem update-world nur die gleichen Pakete in einer neuen Version installiert werden.Blocks werden ausgelöst wenn ein anderes Paket die Funktion von einem bereits installierten Paket übernimmt oder diese auch bereit stellt.

Da wird der Grundsatz der Freiheit bei Gentoo angewandt nichts zu tun was der Admin evtl. nicht möchte.Denn Du hast immer noch die Wahlmöglichkeit das alte Paket die Funktion übernehmen zu lassen anstatt dem neuen.Auch wenn dieses von Gentoo vielleicht nicht empfohlen wird.

----------

## TheSmallOne

Also so, wie ich den ersten Post lese, liegt das Problem hier nur in einer falschen Version eines einzigen Pakets, nämlich esound. Es ist eine zu niedrige Version eingespielt und das blockt ein anderes Paket, obwohl die benötigte höhere Version bei genau dem gleichen update eingespielt werden würde.

Von einem anderen Paket sehe ich da nichts.

----------

## psyqil

Das andere Paket ist eselect-esd, media-sound/esound-0.2.36-r2 braucht das nämlich. Da eselect-esd jetzt aber eine oder mehrere Dateien von media-sound/esound-0.2.36-r1 überschreiben würde, kommt es zu dem Block.

Alle Klarheiten jetzt beseitigt?

----------

## Erich

 *psyqil wrote:*   

> 
> 
> Alle Klarheiten jetzt beseitigt?

 

Nein,denn ich verstehe nicht ,dass Portage ein neues Packet Installieren will.Wo keiner braucht,und dann die ganzen Blockaden verursacht.Warum kann Portage nicht von" esound-0.2.36-r1"nach "r2" ein Update machen?.Vorher brauchte Portage auch nicht "eselect-esd-20060719".Nach einem emerge -C esound und nach einem emerge -avuD world,wollte Portage das neue Packet ja gar nicht mehr Installieren.

----------

## psyqil

 *psyqil wrote:*   

> media-sound/esound-0.2.36-r2 braucht das nämlich.

 

1. Du hattest esound installiert.

2. Du wolltest ein world-Update.

3. die neue esound-Version (-r2)benötigt zwingend eselect-esd.

4. eselect-esd kann nicht installiert werden, solange die alte esound-Version (-r1) im System ist, da sonst deren Binaries überschrieben werden würden. Genau dafür hat man eine Paketverwaltung. 

Und das eselect-esd nicht installiert zu werden braucht, wenn kein esound  vorhanden ist, sollte eigentlich klar sein.

----------

