# revdev-rebuild für Perl?

## musv

Hallo, 

revdep-rebuild checkt ja bekanntlich, ob alle installierten Pakete auch schön auf ihre benötigten Libs zugreifen können. 

Bei Perl sieht das etwas anders aus. Da findet revdep-rebuild nichts, bzw. ist auch gar nicht zuständig. Bei mir lief das jetzt so ab:

In der Updateliste steht dejavu-2.32 drin. Ich versuch das zu compilieren. Abbruch wegen: 

```
scripts/generate.pe tmp/DejaVuSans-BoldOblique.sfd

Copyright (c) 2000-2010 by George Williams.

 Executable based on sources from 11:21 GMT 1-May-2010-ML.

 Library based on sources from 03:43 GMT 29-Apr-2010.

mv tmp/DejaVuSans-BoldOblique.sfd.ttf build/DejaVuSans-BoldOblique.ttf

scripts/ttpostproc.pl build/DejaVuSans-BoldOblique.ttf

Can't locate Font/TTF/Font.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.12.1/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.12.1 /usr/lib64/perl5/vendor_perl/5.12.1/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.12.1 /usr/lib64/perl5/5.12.1/x86_64-linux-thread-multi /usr/lib64/perl5/5.12.1 /usr/lib64/perl5/site_perl /usr/lib64/perl5/vendor_perl .) at scripts/ttpostproc.pl line 9.

BEGIN failed--compilation aborted at scripts/ttpostproc.pl line 9.

make: *** [build/DejaVuSans-BoldOblique.ttf] Fehler 2

 * ERROR: media-fonts/dejavu-2.32 failed:

 *   emake failed

 * 

 * Call stack:

 *     ebuild.sh, line  54:  Called src_compile

 *   environment, line 2722:  Called die

 * The specific snippet of code:

 *           emake -j1 BLOCKS=/usr/share/unicode-data/Blocks.txt UNICODEDATA=/usr/share/unicode-data/UnicodeData.txt FC-LANG=/usr/share/fc-lang full sans || die "emake failed";
```

Der Fehler deutet mich auf irgendein Perl-Paket. Da ich von Perl keine Ahnung hab, geb ich einfach mal ein:

```
emerge -1 $(qlist -IC dev-perl)
```

Das Perl-Zeug compiliert schnell. Sind ja auch nur etwas über 50 Pakete. Bei dev-perl/Cairo steigt emerge dann aus. Findet irgendwas mit ExtUtils nicht. 

```
qlist -IC ExtUtils
```

zeigt mir

```
perl-core/ExtUtils-CBuilder

perl-core/ExtUtils-ParseXS

virtual/perl-ExtUtils-CBuilder

virtual/perl-ExtUtils-ParseXS
```

an. Pech nur, denn nur die Reinstallation von extutils-depends und extutils-pkgconfig brachte den Erfolg. 

media-fonts/dejavu lässt sich trotzdem noch nicht installieren. 

Frage von daher:

Wie prüft man die Konsistenz der Perl-Pakete? Die ewige Sucherei ist mit der Zeit doch etwas nervig.

----------

## Josef.95

 *musv wrote:*   

> Frage von daher:
> 
> Wie prüft man die Konsistenz der Perl-Pakete? Die ewige Sucherei ist mit der Zeit doch etwas nervig.

  Hattest du nach dem Update auf dev-lang/perl-5.12.1 perl-cleaner genutzt?

zb etwas wie 

```
# perl-cleaner --reallyall
```

 durchgebracht?

----------

## musv

Danke, hat geholfen. Leider musste ich 95 Pakete neubauen, darunter einige Nicht-Perl-Pakete. Und die haben das Compilieren dann wieder etwas länger dauern lassen. 

Gibt's 'ne Option, die mir nur die kaputten Pakete findet und neubaut? Aus der Hilfe werd ich da nicht schlau.

----------

## Dorsai!

Ich bau immer nur Pakete neu, die beim kompilieren eines anderen Programms mit Perl Abhängigkeiten im Config Schritt ausfallen.

Die bau ich dann manuell neu mit emerge -1 paket.

Das sind dann meistens ein oder zwei von diesen XML-<irgendwas> Paketen.

Die findet revdep-rebuild wirklich nicht. Vermutlich weil es keine binaries sind.

Sonst hatte ich aber nie Probleme mit Perl Paketen.

----------

## mv

 *musv wrote:*   

> Danke, hat geholfen. Leider musste ich 95 Pakete neubauen, darunter einige Nicht-Perl-Pakete.

 

Diese Pakete installieren aber i.d.R. trotzdem Bibliotheken für Perl, auch wenn sie nicht in zu einer perl-Kategorie gehören

 *Quote:*   

> Gibt's 'ne Option, die mir nur die kaputten Pakete findet und neubaut?

 

perl-cleaner --all (statt --reallyall).

----------

## Josef.95

Nach einem Upgrade auf perl-5.12.2 und nutzung von perl-cleaner --all

gibt es zum Schluss die Meldung 

```
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

 * 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/lib/perl5/vendor_perl/5.10.1/XML/SAX/ParserDetails.ini

/usr/lib/perl5/vendor_perl/5.12.1/XML/SAX/ParserDetails.ini

/usr/lib/perl5/vendor_perl/5.8.8/XML/SAX/ParserDetails.ini
```

 Kann mir jemand verraten was es mit diesen Dateien auf sich hat? Sie wurden sicher nicht manuell ins System gebracht!

Auch eine Zuordnung via  qfile gibt hierzu nichts aus.

Sind das Leichen die ich löschen könnte?

Verwendet wurde perl-cleaner-2.4

System ist ein ~x86

Danke

----------

## mv

Wenn alles neu gebaut wurde, kannst Du alle Directories in /usr/lib/perl5/ und /usr/lib/perl5/*/ mit einer kleineren Nummer als 5.12.1 löschen.

----------

## Josef.95

Ich habe hier nun erst mal 

```
/usr/lib/perl5/5.8.8/

/usr/lib/perl5/site_perl/5.8.8/

/usr/lib/perl5/vendor_perl/5.8.8/

und

/usr/lib/perl5/5.10.1/

/usr/lib/perl5/site_perl/5.10.1/

/usr/lib/perl5/vendor_perl/5.10.1/
```

 entfernt.

5.12.1 hab ich zunächst noch so belassen, es schaut nun so aus 

```
# ls -l /usr/lib/perl5/

total 16

drwxr-xr-x  3 root root 4096 Sep  8 00:12 5.12.1

drwxr-xr-x 56 root root 4096 Sep  8 00:12 5.12.2

drwxr-xr-x  3 root root 4096 Sep  9 17:00 site_perl

drwxr-xr-x  4 root root 4096 Sep  9 16:59 vendor_perl
```

Danke

----------

