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