Fehlermeldung von Apt-Cacher, ein Perl Problem?

Debian, Gentoo, Yellow Dog, Mandrake, SuSe, FedoraCore, Ubuntu,...

Moderatoren: analogkid, roschmyr

hawe
Tastaturkiller
Tastaturkiller
Beiträge: 379
Registriert: 30 Mai 2005, 07:33
Kontaktdaten:

Fehlermeldung von Apt-Cacher, ein Perl Problem?

Beitragvon hawe » 11 Dez 2008, 09:34

Hallo zusammen,
wer kann mir bei einem Problem mit Apt-Cacher weiterhelfen. Ich habe Apt-Cacher seit längerer Zeit problemlos im Einsatz. Nun bekomme ich täglich eine Fehlermail mit einer langen Liste von immer gleichen Problemen. Eine entfernen mittels apt-get remove --purge und neu installieren hat nichts geholfen und mit Perl kenne ich mich nicht aus. Ob das Problem nach einem apt-get dist-upgrade aufgetreten ist kann ich nicht sagen. Folgendes steht in der Mail:

Code: Alles auswählen

/etc/cron.daily/apt-cacher:
Use of uninitialized value in concatenation (.) or string at /usr/share/apt-cacher/apt-cacher-lib.pl line 136, <$listpipe> line 742.
Use of uninitialized value in concatenation (.) or string at /usr/share/apt-cacher/apt-cacher-lib.pl line 136, <$listpipe> line 743.
...
Die Zeilen wiederholen sich viele mal, immer mit einer andern "line".
cu
hawe

Thore
Blue Morpho
Blue Morpho
Beiträge: 2621
Registriert: 30 Jul 2006, 18:09
Wohnort: Reutlingen
Kontaktdaten:

Beitragvon Thore » 11 Dez 2008, 09:53

öffne die Datei /usr/share/apt-cacher/apt-cacher-lib.pl und schreib mal die Zeile 742 ab, dann kann ich Dir vielleicht genauer sagen wo der Fehler liegt.
Laut dem Fehlerbericht ist ein concatenate (zusammenfügen) von Werten oder Zeichenketten falsch. Möglicherweise ist es zu deiner Perl Version nicht kompatibel oder die Version ist etwas falsch programmiert...
Am besten postest Du mal die Perl Datei, damit ich seh ob und wie der Wert initialisiert ist.
http://www.disk-doktor.de

hawe
Tastaturkiller
Tastaturkiller
Beiträge: 379
Registriert: 30 Mai 2005, 07:33
Kontaktdaten:

Beitragvon hawe » 11 Dez 2008, 10:09

Thore hat geschrieben:öffne die Datei /usr/share/apt-cacher/apt-cacher-lib.pl und schreib mal die Zeile 742 ab, dann kann ich Dir vielleicht genauer sagen wo der Fehler liegt.
Laut dem Fehlerbericht ist ein concatenate (zusammenfügen) von Werten oder Zeichenketten falsch. Möglicherweise ist es zu deiner Perl Version nicht kompatibel oder die Version ist etwas falsch programmiert...
Am besten postest Du mal die Perl Datei, damit ich seh ob und wie der Wert initialisiert ist.

OK, das Script hat nur 227 Zeilen. IMO bezieht sich die Zeilennummer 742 auf den Inhalt der Pipe die bearbeitet werde soll. Ich habe dir einmal die Zeilen um 136 des Scriptes angefügt:

Code: Alles auswählen

   my $file;
   while(<$listpipe>) {
      if(/^\s(\w{40})\s+\d+\s(\S+)\n/) {
         $sum=$1;
         # Index format similar to Sources but filenames need to be corrected
         # FIXME: this is sha1, not md5. Different format, can be detected by
         # the length (40), though
         $file=$indexbase.$2.".gz";   #  <-- Anm.: Dieses ist die Zeile 136
     }
     elsif(/^\s(\w{32})\s\d+\s(\S+)\n/) {
         $sum=$1;

Meine Perl Version ist V5.8.8.
cu
hawe

Thore
Blue Morpho
Blue Morpho
Beiträge: 2621
Registriert: 30 Jul 2006, 18:09
Wohnort: Reutlingen
Kontaktdaten:

Beitragvon Thore » 11 Dez 2008, 10:20

hm wird $indexbase initialisiert?
Wenn Du dir nicht sicher bist, kommentier $indexbase aus der Zeile aus, also z.B. so daß es so aussieht:
# $file=$indexbase.$2.".gz";
$file=$2.".gz";
Damit wird der Code zwar erstmal unbrauchbar, aber so kannst du feststellen an welcher Variable es liegt.
Die $2 ist ja wohl durch (\S+) definiert, so wie ich das sehe.
http://www.disk-doktor.de

hawe
Tastaturkiller
Tastaturkiller
Beiträge: 379
Registriert: 30 Mai 2005, 07:33
Kontaktdaten:

Beitragvon hawe » 11 Dez 2008, 10:59

Thore hat geschrieben:hm wird $indexbase initialisiert?
Wenn Du dir nicht sicher bist, kommentier $indexbase aus der Zeile aus, also z.B. so daß es so aussieht:
# $file=$indexbase.$2.".gz";
$file=$2.".gz";
Damit wird der Code zwar erstmal unbrauchbar, aber so kannst du feststellen an welcher Variable es liegt.
Die $2 ist ja wohl durch (\S+) definiert, so wie ich das sehe.

Also $indexbase taucht hier das erte mal auf:

Code: Alles auswählen

sub extract_sums {
   my ($name, $hashref) = @_;
   my ($cat, $listpipe, $indexbase);

   $cat = ($name=~/bz2$/ ? "bzcat" : ($name=~/gz$/ ? "zcat" : "cat"));

   if($name=~/^(.*_)Index$/) {
       $indexbase=$1;
       $indexbase=~s!.*/!!g;
   }

   open($listpipe, "-|", $cat, $name);
$2 jedoch das erste mal in dem Stück Code was ich zuerst gepostet habe. Und wenn es auftaucht steht es immer nur auf der rechten Seite. Ich habe jetzt einmal das debugging eingeschaltet. Mals sehen ob morgen früh etwas im Log steht.

cu
hawe

Thore
Blue Morpho
Blue Morpho
Beiträge: 2621
Registriert: 30 Jul 2006, 18:09
Wohnort: Reutlingen
Kontaktdaten:

Beitragvon Thore » 11 Dez 2008, 11:05

Probier mal folgendes als Patch bei der betroffenen Zeile:

...
if ($indexbase) {
$file=$indexbase.$2.".gz";
} else {
$file = $2;
}

...
http://www.disk-doktor.de

hawe
Tastaturkiller
Tastaturkiller
Beiträge: 379
Registriert: 30 Mai 2005, 07:33
Kontaktdaten:

Beitragvon hawe » 11 Dez 2008, 21:37

Thore hat geschrieben:Probier mal folgendes als Patch bei der betroffenen Zeile:

...
if ($indexbase) {
$file=$indexbase.$2.".gz";
} else {
$file = $2;
}

...

OK, manuell an gestartet läuft es ohne Meldung durch. Ich bekomme aber auch keine mail. Warten wir mal bis morgen früh dann wird es über anachron ausgeführt. Dann sollte ich auch eine Ausführungsmail bekommen.

cu
hawe

hawe
Tastaturkiller
Tastaturkiller
Beiträge: 379
Registriert: 30 Mai 2005, 07:33
Kontaktdaten:

Beitragvon hawe » 12 Dez 2008, 10:10

Thore hat geschrieben:Probier mal folgendes als Patch bei der betroffenen Zeile:

...
if ($indexbase) {
$file=$indexbase.$2.".gz";
} else {
$file = $2;
}

...
Heute morgen habe ich keine mail bekommen, ich weiß jetzt nicht ob es nur im Fehlerfall eine mail gibt. Das ist ein Ausschnitt aus dem Logfile

Code: Alles auswählen

...
Fri Dec 12 06:25:16 2008|CLEANUPREFRESH|debug [12442]: read 0 bytes
Fri Dec 12 06:25:16 2008|CLEANUPREFRESH|debug [12442]: complete file found
Fri Dec 12 06:25:16 2008|CLEANUPREFRESH|debug [12442]: read 0 bytes
Fri Dec 12 06:25:16 2008|CLEANUPREFRESH|debug [12442]: Package sent
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: New HTTP connection open
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Processing a new request line
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: got: GET de.archive.ubuntu.com/ubuntu/dists/hardy/universe/source/Sources.bz2
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Processing a new request line
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: got: Connection: Close
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Processing a new request line
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: got:
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: new long filename: de.archive.ubuntu.com_ubuntu_dists_hardy_universe_source_Sources.bz2
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: looking for /var/cache/apt-cacher/packages/de.archive.ubuntu.com_ubuntu_dists_hardy_universe_source_$Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: known as index file: Sources.bz2
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: download agent: getting http://de.archive.ubuntu.com/ubuntu/dists/hardy/universe/source/Sources.bz2
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: remote file not changed, Sat, 20 Sep 2008 01:13:23 GMT vs. Sat, 20 Sep 2008 01:13:23 GMT
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Entering critical section : file download decission
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: HIT
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Exiting critical section
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: checks done, can return now
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Entering critical section : reading the header file
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Exiting critical section
Fri Dec 12 06:25:17 2008|CLEANUPREFRESH|debug [12444]: Header sent: HTTP/1.0 200 OK
Connection: Close
Accept-Ranges: bytes
Content-Length: 1322694
Content-Type: text/plain; charset=UTF-8
Last-Modified: Sat, 20 Sep 2008 01:13:23 GMT
...
Ich glaube es läuft jetzt wieder.

cu
hawe


Zurück zu „Linux“



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste