# Konfliktlösung

## Erdie

Liebe Leute,

ist dieser Konflikt:

```

WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:

dev-libs/libxml2:2

  (dev-libs/libxml2-2.9.12:2/2::gentoo, ebuild scheduled for merge) USE="icu ipv6 python readline -debug -examples -lzma -static-libs -test -verify-sig" ABI_X86="32 (64) (-x32)" PYTHON_TARGETS="python3_8 -python3_7 -python3_9" conflicts with

    <dev-libs/libxml2-2.9.12 required by (dev-python/lxml-4.6.3:0/0::gentoo, installed) USE="threads -doc -examples -test" ABI_X86="(64)" PYTHON_TARGETS="python3_8 (-pypy3) -python3_7 -python3_9"

    ^         

```

.. irgendwie anders zu lösen ausser zu warten und darauf zu hoffen, dass dev-python/lxml irgendwann dann mal mit den "richtigen" Abhängigkeiten aktualisiert wird?

Danke und Grüße

Erdie

----------

## fedeliallalinea

https://forums.gentoo.org/viewtopic-p-8613174.html#8613174

----------

## Erdie

Verstehe, danke!

----------

## mike155

Von mir auch ein "Danke schön!" 

Bei mir ist die Fehlermeldung auch gerade aufgetreten - und durch diesen Thread muss ich nicht suchen, sondern kenne schon die Lösung. Top!  :Smile: 

----------

## ChrisJumper

Ich entferne so ein Paket einfach immer mit emerge -C und installiere es neu.

Doch was mir noch aufgefallen war... unbedingt Python 3_9 mit in die /etc/portage/make.conf eintragen. Anfang nächsten Monats findet der Wechsel von 3.8 auf 3.9 statt dann hast du es wenigstens bei einigen Paketen schon mit gebaut.

Steht auch in den eselect news read new.

Einen guten Feiertag

----------

## Erdie

 *ChrisJumper wrote:*   

> Doch was mir noch aufgefallen war... unbedingt Python 3_9 mit in die /etc/portage/make.conf eintragen. 

 

Wird nicht in den news davon abgeraten, die make.conf zu verwenden oder habe ich das jetzt falsch verstanden? (also stattdessen package.use)

----------

## firefly

 *Erdie wrote:*   

>  *ChrisJumper wrote:*   Doch was mir noch aufgefallen war... unbedingt Python 3_9 mit in die /etc/portage/make.conf eintragen.  
> 
> Wird nicht in den news davon abgeraten, die make.conf zu verwenden oder habe ich das jetzt falsch verstanden? (also stattdessen package.use)

 

Jo. In der news wird geraten die einträge für Python_targets und python_singel_target aus der make.conf zu entfernen. Ausgenommen sind spezialfälle wo die explizite angabe notwendig ist.

----------

## mike155

Meine Erfahrung ist, dass man emerge/Portage bzgl. Python einfach machen lassen sollte. Also KEINE Einträge in /var/lib/portage/world, make.conf oder in package.use. Dann klappt es am besten!

Vor ein paar Jahren wurde in den Foren empfohlen, Umgebungsvariablen wie PYTHON_TARGETS oder PYTHON_SINGLE_TARGET zu setzen. Bloß nicht! Das gab dann ein paar Monate später, als neue Python-Versionen zur Installation anstanden, jede Menge Ärger und viele Support-Anfragen. Der Grund war meistens, dass emerge/Portage durch die selbst gesetzten Umgebungsvariablen PYTHON_TARGETS oder PYTHON_SINGLE_TARGET durcheinander kam - und Paketabhängigkeiten nicht mehr auflösen konnte. Also eine ganz schlechte Idee!

----------

## pietinger

 *mike155 wrote:*   

> Meine Erfahrung ist, dass man emerge/Portage bzgl. Python einfach machen lassen sollte. Also KEINE Einträge in /var/lib/portage/world, make.conf oder in package.use. Dann klappt es am besten!
> 
> Vor ein paar Jahren wurde in den Foren empfohlen, Umgebungsvariablen wie PYTHON_TARGETS oder PYTHON_SINGLE_TARGET zu setzen. Bloß nicht! Das gab dann ein paar Monate später, als neue Python-Versionen zur Installation anstanden, jede Menge Ärger und viele Support-Anfragen. Der Grund war meistens, dass emerge/Portage durch die selbst gesetzten Umgebungsvariablen PYTHON_TARGETS oder PYTHON_SINGLE_TARGET durcheinander kam - und Paketabhängigkeiten nicht mehr auflösen konnte. Also eine ganz schlechte Idee!

 

+++++++ 111!!

Aber sowas von. Es gibt ein paar wenige Use-variablen die einfach nur ein paar Dinge zuschalten und demnach harmlos sind (wie z.B. zusätzliche Formate "webp"), aber ansonsten ist das beste emerge machen zu lassen, WENN man auch einfach nur das richtige Profil (z.B. Desktop/Plasma) ausgewählt hat. Mit PYTHON-Variablen habe ich nach dem Lesen diverser (vieler) Threads mit voller Absicht noch nie rumgespielt. Wenn ein Update ansteht passiert es schon automatisch richtig.

----------

## Josef.95

Ach naja, so wie in der news (bezüglich python) vorgeschlagen klappt idR sehr gut.

Wichtig ist das man versteht, das in make.conf gesetzt gegenüber */* blubbla in package.use nicht mehr inkrementell ist (und das möchte man idR nicht).

Schaut dazu auch im Beispiel im  https://bugs.gentoo.org/718396

----------

## Josef.95

 *ChrisJumper wrote:*   

> Ich entferne so ein Paket einfach immer mit emerge -C und installiere es neu.

 

Huh nein, sowas ist meist keine gute Idee, und hätte hier bezüglich der

<dev-libs/libxml2-2.9.12 required by (dev-python/lxml-4.6.3:0/0::gentoo, installed)

deps auch nicht geholfen.

Wenn dev-python/lxml-4.6.3:0/0::gentoo, installed

<dev-libs/libxml2-2.9.12 (idR aus gutem Grund, siehe Bug 790737) fordert, dann ist das so - da hilft es auch nicht >=dev-libs/libxml2-2.9.12 mit ner Brechstange einzubauen :)

----------

## Erdie

Ich habe das "Safer update procedure" aus den News versucht durchzuführen:

```

Safer upgrade procedure

=======================

A safer approach is to add Python 3.9 support to your system first,

and only then remove Python 3.8.  However, note that involves two

rebuilds of all the affected packages, so it will take noticeably

longer.

First, enable both Python 3.8 and Python 3.9, and then run the upgrade

commands:

    */* PYTHON_TARGETS: -* python3_8 python3_9

    */* PYTHON_SINGLE_TARGET: -* python3_8

Then switch PYTHON_SINGLE_TARGET and run a second batch of upgrades:

    */* PYTHON_TARGETS: -* python3_8 python3_9

    */* PYTHON_SINGLE_TARGET: -* python3_9

Finally, switch to the final version and upgrade:

    */* PYTHON_TARGETS: -* python3_9

    */* PYTHON_SINGLE_TARGET: -* python3_9

```

ich komme aber über den 2. Schritt nicht hinaus. Der 3 Schritt scheitert daran, dass zahlreiche Pakete die Bedingungen nicht erfüllen. Ist das zu erwarten, weil wr noch vor dem 01.06. sind? Zurück gehts auch nicht mehr, da laufe ich in etliche dependency conficts. ich dachte es wäre gut das zu tun, hätte ich gewußt, dass es niicht funktioniert, hätte ich besser gar nichts gemacht.

----------

## mike155

... und ich hab noch geschrieben: nichts tun und emerge/Portage machen lassen ...   :Crying or Very sad: 

----------

## Erdie

 *mike155 wrote:*   

> ... und ich hab noch geschrieben: nichts tun und emerge/Portage machen lassen ...  

 

da war´s aber schon geschehen    :Confused:     Ich hätte auf Dich gehört   :Wink: 

----------

## ChrisJumper

Achso ja. Ich hatte das ja schon am 23 geschrieben und hatte zuvor schon python3_9, also nicht als single_target in die make.conf gepackt. Damit die Pakete die ohnehin in der Zeit emerged werden halt schon die 3_9 Versionen mit bauen.

Am einfachsten ist es in er Tat wenn man die Sachen raus nimmt und die package.use und world Files putzt und dann Portage einfach machen lässt.

Ganz großs Lob an die Maintainer und die sich sorgende Community!

----------

## Erdie

 *ChrisJumper wrote:*   

> 
> 
> Am einfachsten ist es in er Tat wenn man die Sachen raus nimmt und die package.use und world Files putzt und dann Portage einfach machen lässt.
> 
> !

 

Das funktiert bei mir momentan nicht. Wenn ich die Sachen rausnehme, stehe ich einem Wuust von Downgrades und Package Konflikten gegenüber. Aber ich vermute, dass das einfacher funktioniert wenn ich solange warte, bis der Schritt offiziell in portage angekommen ist.

----------

## mike155

Hi Erdie,

das Python-Target-Update ist jetzt da. "emerge --info" gibt bei mir aus:

```
PYTHON_SINGLE_TARGET="python3_9" PYTHON_TARGETS="python3_9"
```

Also entferne alle PYTHON_TARGET- und PYTHON_SINGLE_TARGET-Einträge aus /etc/portage/*. Auch in /var/lib/portage/world sollte nichts zu Python stehen (sofern Du es nicht wirklich explizit willst).

Vielleicht geht es dann ja schon. Wenn nicht, melde Dich - am besten mit der Ausgabe von "emerge --info".

PS: Bei mir meckerte 

```
emerge --update --deep --changed-use -av @world
```

mit einer Fehlermeldung zu Mercurial, das noch Python 3.8 haben wollte. Ich habe Mercurial gelöscht - und schon war emerge/Portage zufrieden - und installiert gerade jede Menge Pakete neu.  :Smile: 

----------

## Josef.95

 *mike155 wrote:*   

> Mercurial gelöscht

  Löschen sollte nicht erforderlich sein ;)

=dev-vcs/mercurial-5.8 hat Python 3.9 Support - ist aktuell nur noch nicht stable markiert. Die Jungs sind aber dran, siehe https://bugs.gentoo.org/792042

----------

## mike155

Na ja, das ist mein Standard-Vorgehen bei größeren Updates auf meinem Entwicklungs-Rechner: was stört, wird vorläufig gelöscht. Wenn ich die gelöschten Pakete wirklich brauche, werden sie hinterher wieder neu installiert.

Dieses Vorgehen ist nicht übermäßig elegant. Aber es funktioniert - und es geht schnell. 

Auf Servern bin ich da etwas vorsichtiger. Aber wenn ich dort installiere, habe ich vorher schon Erfahrungen auf meinem Entwicklungs-Rechner gesammelt. Dann weiß ich, welche Probleme es geben wird und wie ich sie lösen kann.

EDIT: Gerade eben kam das Update auf Mercurial 5.8. Das Problem sollte also gelöst sein!   :Smile: 

----------

## ChrisJumper

Auch wenn es jetzt wahrscheinlich fast schon überall gelöst ist..

In der News gab es ja:

 *Quote:*   

> */* PYTHON_TARGETS: -* python3_8 python3_9 

 

Diese -* habe ich aufgefasst als "alles was nicht explizit aktiv freigegeben ist, per Joker als unerwünscht makieren", Labeln Wahrgenommen. Aber das ging nicht in der Make.conf.

Beispiel /etc/portage/make.conf:

```
PYTHON_TARGETS="-* python3_8 python3_9"
```

Hab ich das was falsch gemacht oder hätte es in die package.use gemusst?

----------

## Erdie

Ich bin jetzt soweit, dass ich Einträge komplett rausnehmen kann mit Ausnahme eines Paketes. 

```

media-gfx/img2pdf

```

Das Paket möchte unbedingt python3_8 und ich habe es vorläufig gelöscht, da nicht so wichtig. Jetzt laufen noch 78 Pakete durch.

Allerding habe ich, wie in dem anderen, neuen Thread beschrieben eine über 1000zeilige Meldung von revdep-rebuild, die mir suspekt erscheint. Vermutlich hängt das mit dem aktuellen glibc update zusammen und hat nichts mit python targets zu tun. Ich hoffe mal, es ist nichts ernstes  :Wink: 

----------

## Josef.95

 *Erdie wrote:*   

> Ich bin jetzt soweit, dass ich Einträge komplett rausnehmen kann mit Ausnahme eines Paketes. 
> 
> ```
> 
> media-gfx/img2pdf
> ...

 

```
equery u media-gfx/img2pdf -a
```

 sollte da weiterhelfen.

----------

## firefly

Laut 

https://packages.gentoo.org/packages/media-gfx/img2pdf

ist img2pdf eh unstable und mit der version 4.1 wird auch python 3.9 unterstützt

----------

## Erdie

 *firefly wrote:*   

> Laut 
> 
> https://packages.gentoo.org/packages/media-gfx/img2pdf
> 
> ist img2pdf eh unstable und mit der version 4.1 wird auch python 3.9 unterstützt

 

Ja stimmt, habe ich jetzt auch gesehen, ich hatte noch einen veralteten Eintrag in der accept_packages. Es ist mir erst hinterher klar geworden, dass es ein unstable Paket ist.

----------

## Erdie

Nur mal so zur Info: Bei mir ist jetzt alles clean. Kein Grund zur Beantstandung. Da mach ich doch gleich mal ein Backup.

----------

