# Wie funktioniert perl-cleaner eigentlich genau?

## Erdie

Ich habe neulich perl-cleaner --all aufgerufen. Es wird dann eine große Liste von Paketen gebaut. So weit, so gut. Aber wenn ich das nochmal aufrufe, passiert das gleiche. Für meine Verständnis hätte mir perl-cleaner sagen müssen: "Hey man, you did it, there is nothing else to do, have a good day!" Heißt das jetzt, ich habe eine Problem und wußte bisher nichts davon?

----------

## Josef.95

Hallo Erdie,

hm nein, normal sollte es bei einem wiederholten Aufruf von "perl-cleaner --all"  keine Pakete mehr geben die entfernt oder aktualisiert werden müssten, oder ein rebuild erfordern.

Magst du mal die Ausgabe von 

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

 posten?

Und schau bitte ob es zwischenzeitlich (nach deinem letzten erfolgreichen kompletten "perll-cleaner --all" Durchlauf) nicht doch ein dev-lang/perl Update gegeben hat.

Schau zb via 

```
qlop -lu dev-lang/perl
```

----------

## Erdie

Ja, es hatte einen dev-lang/perl update gegeben, aber ich dachte, dafür sei perl-cleaner da? 

perl-cleaner --all -av1 liefert die  Hilfeseite, auch wenn man -a -v -1 getrennt auflistet, tut perl-cleaner nichts.

----------

## franzf

 *Erdie wrote:*   

> Ja, es hatte einen dev-lang/perl update gegeben, aber ich dachte, dafür sei perl-cleaner da? 
> 
> perl-cleaner --all -av1 liefert die  Hilfeseite, auch wenn man -a -v -1 getrennt auflistet, tut perl-cleaner nichts.

 

Schau genau hin, da fehlt ein "--" zwischen "--all" und "-av1". Alles vor dem "--" sind Argumente für perl-cleaner, hinter dem "--" kommen Argumente, die perl-cleaner an emerge weiterreicht.

----------

## mv

 *Erdie wrote:*   

> Ja, es hatte einen dev-lang/perl update gegeben, aber ich dachte, dafür sei perl-cleaner da?

 

Möglicherweise liegt da ein Missverständnis vor: perl-cleaner wird nicht perl selbst upgraden sondern nur dessen Abhängigkeiten, sollte also nach dem Upgrade von Perl aufgerufen werden.

Wenn Du nicht gerade eine sehr alte Installation upgradest, sollte der Aufruf von perl-cleaner inzwischen eigentlich gar nicht mehr notwendig sein, weil alles durch subslot-Dependencies geregelt werden sollte. (Es kann aber noch das ein oder andere vergessene Paket geben, in dem die Subslot-Abhängigkeiten noch nicht korrekt gelistet sind.)

----------

## Erdie

Jetzt habe ich es, sorry, das -- hatte ich übersehen:

```

perl-cleaner --all -- -av1

***************************************************************************

You are supplying additional command line options for the package manager.

This is NOT RECOMMENDED, not tested, and may lead to incorrect, incomplete,

confusing, and/or nonfunctional results. You are on your own now.

***************************************************************************

 * Removing perl-core packages from world file

 *    emerge --deselect  -av1 perl-core/CPAN-Meta perl-core/Data-Dumper perl-core/File-Temp perl-core/JSON-PP perl-core/Module-Metadata perl-core/libnet 

>>> No matching atoms found in "world" favorites file...

 * Updating installed Perl virtuals

 *    emerge -u1  -av1 virtual/perl-CPAN-Meta virtual/perl-CPAN-Meta-Requirements virtual/perl-CPAN-Meta-YAML virtual/perl-Carp virtual/perl-Compress-Raw-Zlib virtual/perl-Data-Dumper virtual/perl-Digest virtual/perl-Digest-MD5 virtual/perl-Digest-SHA virtual/perl-ExtUtils-CBuilder virtual/perl-ExtUtils-Install virtual/perl-ExtUtils-MakeMaker virtual/perl-ExtUtils-Manifest virtual/perl-ExtUtils-ParseXS virtual/perl-File-Spec virtual/perl-File-Temp virtual/perl-Getopt-Long virtual/perl-IO virtual/perl-JSON-PP virtual/perl-MIME-Base64 virtual/perl-Module-Metadata virtual/perl-Parse-CPAN-Meta virtual/perl-Perl-OSType virtual/perl-Scalar-List-Utils virtual/perl-Storable virtual/perl-Sys-Syslog virtual/perl-Test-Harness virtual/perl-Text-ParseWords virtual/perl-libnet virtual/perl-podlators virtual/perl-version 

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

Calculating dependencies... done!

Total: 0 packages, Size of downloads: 0 KiB

Nothing to merge; quitting.

 * Beginning a clean up of .ph files

 * Excluding files for 5.20.2 and 5.20.2/x86_64-linux from cleaning

 * Locating ph files for removal

 * Updating ph files.

 * Ignore all "No such file..." messages!

Can't open machine/ansi.h: Datei oder Verzeichnis nicht gefunden

Can't open sys/_types.h: Datei oder Verzeichnis nicht gefunden

Can't open gnu/stubs-x32.h: Datei oder Verzeichnis nicht gefunden

Can't open gnu/stubs-x32.h: Datei oder Verzeichnis nicht gefunden

Can't open gnu/stubs-x32.h: Datei oder Verzeichnis nicht gefunden

Can't open gnu/stubs-x32.h: Datei oder Verzeichnis nicht gefunden

 * Locating packages for an update

 * Locating ebuilds linked against libperl

 * No package needs to be reinstalled.

 * Finding left over modules and header

 * The following files remain. These were either installed by hand

 * or edited. This script cannot deal with them.

/usr/lib64/perl5/5.12.3/x86_64-linux/Encode/ConfigLocal.pm

/usr/lib64/perl5/vendor_perl/5.18.2/XML/SAX/ParserDetails.ini

/usr/lib64/perl5/vendor_perl/5.16.3/XML/SAX/ParserDetails.ini

/usr/lib64/perl5/vendor_perl/5.12.4/XML/SAX/ParserDetails.ini

/usr/lib64/perl5/vendor_perl/5.12.4/x86_64-linux/Encode/ConfigLocal.pm

/usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/ParserDetails.ini

/usr/lib64/perl5/5.12.4/x86_64-linux/Encode/ConfigLocal.pm

```

```

qlop -lu dev-lang/perl

Wed Sep 21 20:52:49 2011 <<< dev-lang/perl-5.12.3-r1

Wed Sep 21 20:52:54 2011 >>> dev-lang/perl-5.12.3-r1

Wed Sep 28 00:25:56 2011 <<< dev-lang/perl-5.12.3-r1

Wed Sep 28 00:26:00 2011 >>> dev-lang/perl-5.12.4-r1

Sun Jan  8 00:59:34 2012 <<< dev-lang/perl-5.12.4-r1

Sun Jan  8 00:59:38 2012 >>> dev-lang/perl-5.12.4-r1

Sun Jan 20 13:10:33 2013 <<< dev-lang/perl-5.12.4-r1

Sun Jan 20 13:10:39 2013 >>> dev-lang/perl-5.12.4-r1

Sat Sep 28 23:30:33 2013 <<< dev-lang/perl-5.12.4-r1

Sat Sep 28 23:30:40 2013 >>> dev-lang/perl-5.12.4-r1

Sat Dec 21 10:48:16 2013 <<< dev-lang/perl-5.12.4-r1

Sat Dec 21 10:48:25 2013 >>> dev-lang/perl-5.16.3

Thu Sep 18 08:50:31 2014 <<< dev-lang/perl-5.16.3

Thu Sep 18 08:50:39 2014 >>> dev-lang/perl-5.18.2-r1

Wed Nov 26 22:03:10 2014 <<< dev-lang/perl-5.18.2-r1

Wed Nov 26 22:03:15 2014 >>> dev-lang/perl-5.18.2-r2

Thu Nov 27 09:35:26 2014 <<< dev-lang/perl-5.18.2-r2

Thu Nov 27 09:35:30 2014 >>> dev-lang/perl-5.18.2-r2

Fri Mar  6 18:46:50 2015 <<< dev-lang/perl-5.18.2-r2

Fri Mar  6 18:46:54 2015 >>> dev-lang/perl-5.20.1-r4

Sun Apr  5 19:59:49 2015 <<< dev-lang/perl-5.20.1-r4

Sun Apr  5 19:59:55 2015 >>> dev-lang/perl-5.20.2

```

Irgendwie bin ich jetzt platt, ich könnte schwören, da war ein perl update vor einigen Tagen. Die history zeigt aber als letztes eins von Apr 2015 an. Und warum werden jetzt trotzdem soviele Pakete gemerged?

----------

## musv

Ich mag jetzt falsch liegen. Bei mir hat perl-cleaner auch immer eine stattliche Liste geliefert. 

Notwendig wird perl-cleaner tatsächlich nur bei einem Upgrade von perl. 

Nach dem ersten perl-cleaner geh ich dann meist manuell vor. Ist mir dann schließlich irgendwie sympathischer, wenn auch mit einem gewissen Einsatz verbunden: 

```
cd /usr/lib/perl5/$alte_version

equery b $datei.pm

```

Und diese Pakete baue ich dann neu. Danach verschwinden die aus dem Verzeichnis der alten Perl-Version. Wenn im Verzeichnis der alten Version nichts mehr drin ist, dann kann das alte Perl-Verzeichnis gelöscht werden.

----------

## Josef.95

@Erdie,

schaut doch soweit alles ok aus - und es werden auch keine Pakete neu gebaut - soweit ist alles in Ordnung :)

 *Erdie wrote:*   

> 
> 
> ```
>  * Finding left over modules and header
> 
> ...

  Das sind "Leichen" aus alten perl Installationen, die kannst (und solltest) du entfernen.

Entferne am besten die Verzeichnisse der alten Perl-Versionen, also zb

 /usr/lib64/perl5/5.12.3/

/usr/lib64/perl5/vendor_perl/5.18.2/

usw

Die können alle entfernt werden, bis auf die der aktuell installierten perl-5.20.2 Version.

----------

## Josef.95

Erdie, darf man frage wie du damit weitergekommen bist?

----------

## Erdie

Ich habe die Leichen in weggeschoben und es läuft soweit ohne Probleme  :Wink: 

----------

## toralf

 *mv wrote:*   

>  *Erdie wrote:*   Ja, es hatte einen dev-lang/perl update gegeben, aber ich dachte, dafür sei perl-cleaner da? 
> 
> Möglicherweise liegt da ein Missverständnis vor: perl-cleaner wird nicht perl selbst upgraden sondern nur dessen Abhängigkeiten, sollte also nach dem Upgrade von Perl aufgerufen werden.
> 
> Wenn Du nicht gerade eine sehr alte Installation upgradest, sollte der Aufruf von perl-cleaner inzwischen eigentlich gar nicht mehr notwendig sein, weil alles durch subslot-Dependencies geregelt werden sollte. (Es kann aber noch das ein oder andere vergessene Paket geben, in dem die Subslot-Abhängigkeiten noch nicht korrekt gelistet sind.)

 Nun ja, da gibt's doch noch ein paar Kinken mehr - auf meiner Tidnerbox renne ich regelmäßig bei einem @wolrd nach einem setup eines neuen Gentoo images in Perl-Upgrade-Probleme rein.

----------

## mv

 *toralf wrote:*   

> auf meiner Tidnerbox renne ich regelmäßig bei einem @wolrd nach einem setup eines neuen Gentoo images in Perl-Upgrade-Probleme rein.

 

Inwiefern: Kann portage die Abhängigkeiten nicht auflösen (da würde perl-cleaner ohnehin nicht helfen, sondern man muss --backtrack erhöhen oder ggf. kollidierende Maskierungen fixen; natürlich darf man --with-bdps nicht vergessen), oder sind die Abhängigkeiten fehlerhaft deklariert (d.h. trotz --with-bdeps -D -u  @world werden Perl-Pakete nicht im @INC-Pfad gefunden)? Im letzten Fall sollte man die Bugs melden...

----------

## toralf

tu ich, keine Sorge ... b.g.o. ist gut gefüllt

----------

