nov
02
Como este error veo que persiste en la nueva versión de Ubuntu 9.10 Karmic Koala, escribiré como solventarlo.
El problema es que al actualizar repositorios sale el siguiente error:
Err http://softlibre.unizar.es karmic-updates/restricted Translation-esEsto pasa en todos los repositorios de idiomas.
Error leyendo del servidor - read (104: Conexión reiniciada por el par)
Tenemos 3 soluciones, la puntual, la sencilla y la definitiva.
Solución Puntual
Es añadir la una variable de lenguaje genérico para la ejecución quedando de la siguiente manera.
sudo LANG=C apt-get update
Solución Sencilla
Es cambiar la configuración para que no trate los repositorios de idiomas.
Editamos /etc/apt-cacher/apt-cacher.conf cambiando la siguiente variable
index_files_regexp = (?:Index|Packages\.gz|Packages\.bz2|ReleaseHay que ponerlo sin saltos de linea.
|Release\.gpg|Sources\.gz|Sources\.bz2|Contents-.+\.gz|pkglist.*\.bz2
|release|release\..*|srclist.*.bz2)$
Recordad que hace falta reiniciar el servicio.
Solución Definitiva (la mejor)
Es modificando el propio programa para que acepte los repositorios de idiomas sin problemas.
Modificamos /usr/shared/apt-cacher/apt-cacher
diff --git a/apt-cacher b/apt-cacherPara los que no esten acostumbrados a este tipo de notación, decirles que es la típica salida resultado de comparar dos archivos de textos.
index 48741b6..feee576 100755
--- a/apt-cacher
+++ b/apt-cacher
@@ -844,14 +844,20 @@ sub return_file {
$headstring .= 'Connection: '.($concloseflag ? 'Close' :
'Keep-Alive')."\r\n";
# keep only parts interesting for apt
- for(<$in>) {
- if(/^Last-Modified|Content|Accept|ETag|Age/) {
- $headstring.=$_;
- if(/^Content-Length:\ *(\d+)/) {
- $explen=$1;
+ if ($code==200) {
+ for(<$in>) {
+ chomp;
+ if(/^Last-Modified|Content|Accept|ETag|Age/) {
+ $headstring.=$_."\r\n";
+ if(/^Content-Length:\ *(\d+)/) {
+ $explen=$1;
+ }
}
}
}
+ else {
+ $headstring.="Content-Length: 0\r\n";
+ }
close($in);
&release_global_lock;
@@ -861,7 +867,7 @@ sub return_file {
debug_message("Header sent: $headstring");
# Stop after sending the header with errors
- return if HTTP::Status::is_server_error($code);
+ return if HTTP::Status::is_error($code);
}
else {
@@ indica que el primer cambio es en la linea 844. El signo indica si añadimos o quitamos: + será añadir y - quitar. Intuitivo :) En el segundo bloque repetir lo mismo.
Recordad que hace falta reiniciar el servicio.
FUENTES :
· www.mail-archive.com/debian-bugs-dist
· martin.ind-web.com