# [gelöst] veraltete Pakete deinstallieren

## oliver2104

Hallo,

möchte mein System aktuallisieren und habe eine Frage zu der Meldung:

```
 Also, note that it may be necessary to manually uninstall

 packages that no longer exist in the portage tree, since it may

 not be possible to satisfy their dependencies

```

Wie finde ich diese veralteten Pakete auf meinem System, um sie zu unmergen ?

bitte um HilfeLast edited by oliver2104 on Fri May 09, 2014 10:49 am; edited 1 time in total

----------

## Christian99

```
emerge --depclean
```

ist dafür da

----------

## oliver2104

OK danke,

aber

```

emerge --depclean

```

ist auch ein automatisiertes Skript, welches einige Fehler meldet

nur zum Beispiel:

```
Dependencies could not be completely resolved due to

the following required packages not being installed:

 >=media-libs/libpng-1.4:0/0= pulled in by:

     net-libs/webkit-gtk-1.8.3-r201

```

wie kann ich das auflösen, muss jetzt etwas installiert oder deinstalliert werden?

----------

## Christian99

du musst vorher dein system aktualisieren und wenn dass abgeschlossen ist, dann kansst du depclean machen.

----------

## Yamakuzure

Sowohl die Version von libpng, wie auch gtk-webkit gibt es nicht mehr.

Die Lösung wäre in diesem Falle wohl:

```
emerge --unmerge =media-libs/libpng-1.4 =net-libs/webkit-gtk-1.8.3-r201
```

Sobald alles aufgeräumt ist, können die dann vielleicht fehlenden Abhängigkeiten mit 

```
emerge --ask --update --deep @world
```

 wieder installiert werden - dieses Mal dann in der aktuellen Version.

----------

## oliver2104

Danke für die Antworten, haben mich schon ein Stück weitergebracht.

wäre froh wenn das Updaten so einfach mit

```
emerge --ask --update --deep @world

```

ginge

da hab ich z.b. folgendes Problem

```
Failed to emerge dev-perl/DBD-mysql-4.20.0
```

Egal, mich beschäftigt aber vor allem das Problem mit alten Versionen

```
emerge --info
```

zeigt u.a. folgendes

```
dev-lang/python:          2.7.5-r3, 3.2.5-r1, 3.3.2-r2

sys-devel/gcc:            4.6.3, 4.7.3-r1

```

Bedeutet das, ich habe 3 Phython Versionen und 2 gcc Versionen auf meinem System ?

wenn ja, wie kann ich die alten Versionen endgültig loswerden.

habe keine Angst große Pakete dann neu zu installieren,

möchte nur vemeiden mein System komplett neu aufzusetzen.

----------

## Christian99

am einfachsten wirst du alte pakete mit emerge --depclean los  :Smile: 

nein, erst mal zum update:

1) du müsstest mal das build.log posten, dann kann man eventuell helfen das paket zu updaten.

2) du könntest deinem emerge --ask --update --deep @world noch ein "--keep-going" anfügen. damit bricht portage nicht ab, wenn ein paket nicht installiert werden kann, sondern macht mit allen updates, die das fehlgeschlagene paket nicht brauchen, weiter

3) nachdem portage abgebroche n ist, kannst du mit emerge --resume --skipfirst weitermachen (hoffentlich selbsterklärend)

4) du könntest deinem update kommando ein "--exclude "DBD-mysql"" zufügen. dann wird dieses paket nicht berücksihtigt und alle anderen updates werden installiert.

wenn du das mal hast, stehen die chancen gut, dass danach emerge --depclean funktioniert.

----------

## tazinblack

 *oliver2104 wrote:*   

> Danke für die Antworten, haben mich schon ein Stück weitergebracht.
> 
> wäre froh wenn das Updaten so einfach mit
> 
> ```
> ...

 

Ja, das bedutet, dass Du 3 python und 2 gcc Versionen auf dem System hast.

mit gcc-config kannst Du schauen, welcher gcc verwendet wird und auch auf den neueren Umschalten.

Hast Du auf den neueren umgeschaltet, kann Du den alten unmergen.

Mit eselect python kannst Du das selbe für python tun. Wobei noch nicht alles mit python 3 läuft.

Ich verwendet auf vielen Systemen die Kombination python 2.7, 3.3. D.h. wenn Du die aktive 3er Version von 3.2 nach 3.3 umgeschaltet hast, danach den python-updater hast laufen lassen, kannst Du 3.2 unmergen.

----------

## Josef.95

 *oliver2104 wrote:*   

> Danke für die Antworten, haben mich schon ein Stück weitergebracht.
> 
> wäre froh wenn das Updaten so einfach mit
> 
> ```
> ...

 

Hehe, solche fehlgeschlagenen Pakete solltest du nicht einfach ignorieren, denn wahrscheinlich werden sie als Abhängigkeit von anderen Paketen benötigt,

sprich mit weiteren rausschieben/ignorieren machst du dir das Leben nur selbst schwer.

Wenn das world Update erst mal erfolgreich mit allen Abhängigkeiten durch ist, können auch bequem veraltete Abhängigkeiten entfernt werden (wie schon vorgeschlagen - mit --depclean).

Nach einem normalen world Update empfiehlt portage:  *Quote:*   

>  * After world updates, it is important to remove obsolete packages with
> 
>  * emerge --depclean. Refer to `man emerge` for more information.

 

Die Reihenfolge ist also wichtig:

1) Erst das world Update komplett durchbringen

2) Dann entfernen von nicht mehr benötigten Abhängigkeiten, mit --depclean

nicht andersherum :)

----------

## Helmering

Vielleicht noch ein Hinweis:

Durchsuche mal dein "world Datei", zu finden unter /var/lib/portage/.

Diese sollte auschliesslich von dir explizit gewünschte Pakete enthalten.

Gruss Ralf

----------

## oliver2104

Vielen Dank für die Antworten,

würde ja gern ein world Update durchbringen aber das Problem ist immer

```
Failed to emerge dev-perl/DBD-mysql-4.20.0
```

und zwar aufgrund

```
Can't locate DBI/DBD.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl5/5.16.3/i686-linux /usr/local/lib/perl5/5.16.3 /usr/lib/perl5/vendor_perl/5.16.3/i686-linux /usr/lib/perl5/vendor_perl/5.16.3 /usr/local/lib/perl5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.16.3/i686-linux /usr/lib/perl5/5.16.3 .)
```

wenn ich auf meinem System die Dateien DBI.pm und DBD.pm suche dann find ich sie nur in

```
/usr/lib/perl5/vendor_perl/5.12.4/i686-linux/DBI.pm

/usr/lib/perl5/vendor_perl/5.12.4/i686-linux/DBI/DBD.pm
```

wie kann ich DBI.pm und DBD.pm in den  aktuellen @INC pfad bringen

und dann perl-5.12.4 loswerden

----------

## Christian99

du musst das paket, welches diese datei liefert neu installieren. dann sollte sie für deine neue perlversion gebaut werden. händisch kannst du das machen mit equery (gehört zu app-portage/gentoolkit):

```
equery belongs DBI.pm
```

 liefert dir den paketnamen, zu dem diese datei gehört (vermutlich dev-perl/DBI, bin mir aber sicher, weil ich es selber nicht da hab). dieses paket dann neu installieren, dann sollte das modul für deine perlversion 5.16 verfügbar sein.

Grundsätzlich sollte man aber nach einem perl update aber 

```
perl-cleaner --all
```

 aufrufen, das macht diesen oben beschriebenen prozess automatisch und für aller perl pakete die betroffen sein könnten.

----------

## oliver2104

Hurra,

```
equery belongs DBI.pm
```

liefert wirklich das Paket dev-perl/DBI, habe das neu installiert und

habe die Dateien jetzt in:

```
/usr/lib/perl5/vendor_perl/5.16.3/i686-linux/DBI.pm

/usr/lib/perl5/vendor_perl/5.16.3/i686-linux/DBI/DBD.pm
```

und damit in meinem perl @INC pfad.

```
emerge --ask --update --deep @world 
```

läuft gerade, anscheinend unaufhaltsam und ich hoffe bis zum erfolgreichen Ende.

möchte aber jetzt schon Danke für die Tips bzw. Antworten sagen!

----------

## oliver2104

Danke,

```
emerge --depclean 
```

ist dann auch problemlos durchgelaufen.

----------

## cryptosteve

Es läuft eigentlich immer problemlos durch - manchmal sogar etas zu problemlos ...  :Smile: 

----------

## Yamakuzure

 *cryptosteve wrote:*   

> Es läuft eigentlich immer problemlos durch - manchmal sogar etas zu problemlos ... 

 Genau. Ich weiß, das ist ein wenig paranoid, aber ich mach nach einem --depclean immer noch ein --update --deep @world, nur zur Sicherheit.  :Wink: 

----------

## Christian99

wieso?

----------

## Max Steel

Wie schon gesagt. Wegen "paranoia". In der Vergangenheit kam es schonmal vor das durch Fehler irgendeiner Art Deps mitrausflogen die eigentlich benötigt wurden. Allerdings ist Portage in der Hinsicht besser geworden und löst den depbaum korrekt auf.

Ist also eine Vorsichtsmaßnahme  :Wink: 

----------

## Christian99

ah, ok. also ich hatte in meinen 5 gentoo jahren noch nie solche probleme.

----------

