Como adoptar un pingüino

BLOG de AZULcasiNEGRO, donde se cuentan básicamente las peripecias durante la migración a Kubuntu/Linux

Aviso Cookies

Categories

Contador

Eres el visitante

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-es
Error leyendo del servidor - read (104: Conexión reiniciada por el par)
Esto pasa en todos los repositorios de idiomas.

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|Release
|Release\.gpg|Sources\.gz|Sources\.bz2|Contents-.+\.gz|pkglist.*\.bz2
|release|release\..*|srclist.*.bz2)$
Hay que ponerlo sin saltos de linea.
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-cacher
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 {
Para 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.
@@ 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

0 comentarios

Publicar un comentario

Cuenta atrás

Nuestros derechos

Recent Posts

Recent Comments