Udv!
Probalok
apt-get install
- lal felrakni nehany programot, aminek a letoltesi merete 6.xGB, de hibat dob nehany csomag letoltese utana a hatralevo fajlokra:
Err http://SERVER VALAMI-closed etdc-content-music-va 0.0.1-1+0m6
Bad header line
Err http://SERVER VALAMI-etd etdc-content-office 0.0.1-1+0m6
Bad header line
Err http://SERVER VALAMI-closed etdc-content-video 0.0.1-2+0m6
Got a single header line over 360 chars
Err http://SERVER VALAMI-closed etdc-contents-desktopsw 0.1+0m6
Bad header line
Err http://SERVER custeh-etdc etdc-directory-structure 0.3-2+0m6
Got a single header line over 360 chars
Fetched 5089MB in 4min 30s (18.8MB/s)
/code]
.
Ami ilyenkor bekerul a [code]/var/cache/apt/archives
konyvtarba, annak a mennyisege ~5GB:
du -s /var/cache/apt/archives/
4974560 /var/cache/apt/archives/
Ha utana ujrainditom ugyanazt a parancsot, masodszorra mar sikerul mindent letoltenie. Feltetelezem valahol van valami limit beallitva, de ilyet nem talaltam. Nem hinnem legalabbis, hogy a header- rel lenne problema, 360- as hosszusagot sehol nem er el egyik url sem (a leghosszabb 202).
Megoldasi javaslat? :- ).
Koszi.
- 1291 megtekintés
Hozzászólások
Egyebkent inkabb nagy csomagokrol van szo, minthogy sokrol, az egyik csomagnal all meg, aminek a merete 1085MB, ennek kb. a 98%- nal dob errort, de nem a csomagmerettel van gond, mert elotte leszed 1625MB- s csomagot is. Amikor masodszorra inditom, akkor ujra lehuzza az 1085MB- s csomagot.
- A hozzászóláshoz be kell jelentkezni
http proxy van?
- A hozzászóláshoz be kell jelentkezni
Akad a rendszerben, de ki van kapcsolva ehhez a szerverhez torteno hozzaferesnel:
Acquire::http::Proxy "http://172.16.42.183:8080/";
Acquire
{
// HTTP method configuration
http
{
Proxy "http://saproxy07.SERVER2:8080";
Proxy::http.SERVER "DIRECT"; // No proxy for SERVER
};
}
Igazabol azt sem tudom, hogy ez most szerver oldalon, vagy kliens oldalon dob hibat.
- A hozzászóláshoz be kell jelentkezni
Meg igy ezt nezegetem:
APT::Cache-Limit “10000000″
, csak igazabol nem vagyok benne biztos, hogy mit csinal. Tehat, ha felveszem mondjuk 7GB- ig, mi tortenik?
- A hozzászóláshoz be kell jelentkezni
Leginkabb semmi. Ugyanaz az eredmeny:- ().
- A hozzászóláshoz be kell jelentkezni
biztos lehetne jo megoldast talalni, hogy ez ne forduljon elo tobbet.
de ennyi ido utan en wget -tel letoltenem azt az arva egyszem .deb -et, es felraknam 'dpkg -i' -vel, a tobbi johet apt-get segitsegevel.
- A hozzászóláshoz be kell jelentkezni
Igen, csak hogy ez egy build system resze, es ez a "root cause", sajna ez nem megoldhato, mivel naponta legalabb 100X tortenik ilyen futtatas, es most hirtelen ugrott a meret 3G- t.
- A hozzászóláshoz be kell jelentkezni
Az apt csomag forrassa alapjan (methods/http.cc) a hibauzenet azt jelenti, hogy tul hosszu egy http response header. Semmi koze a csomag meretehez. A 360 byte az be van varrva az apt csomagba, nem konfigolhato ujraforditas nelkul. (e: methods/http.h)
lynx -mime_header -dump $VALID_DOWNLOAD_URL | less
melyik sor tul hosszu? A szerver oldalon kellene inkabb konfiguralni, mintsem sajat forditasu apt csomagot hasznalni.
- A hozzászóláshoz be kell jelentkezni
Ha most a letoltendo url- ek hosszarol van szo, akkor egyik sem eri el meg a 256 bytet sem. Amiert azt gondoltam, hogy mas a hiba az az, hogy ha a hiba utan ujrainditom, onnantol mar meg szepen.
A forrasban ezt talaltam:
bool ServerState::HeaderLine(string Line)
{
if (Line.empty() == true)
return true;
// The http server might be trying to do something evil.
if (Line.length() >= MAXLEN)
return _error->Error(_("Got a single header line over %u chars"),MAXLEN);
string::size_type Pos = Line.find(' ');
if (Pos == string::npos || Pos+1 > Line.length())
{
// Blah, some servers use "connection:closes", evil.
Pos = Line.find(':');
if (Pos == string::npos || Pos + 2 > Line.length())
return _error->Error(_("Bad header line"));
Pos++;
}
Na most ha tenyleg csak annyi lenne, hogy ezt a
MAXLEN
- t felemelem, nem szep megoldas, de felemelem, es ujraforditom.
Hogy tudok rajonni, hogy tenyleg errol van- e szo? Ok, persze, itt a hibauzenet, de hogy tudom elkapni, hogy mivel van pontosan a gondja?
- A hozzászóláshoz be kell jelentkezni
szerintem arrol van szo, hogy a buggy http szerver es a buggy apt http imlementacioja egymasnak betevo hibakkal rendelkezik. Olyan erzesem van (becsuszunk a misztikaba, hallod?:-) hogy a tobb csomag letoltesenel valami oknal fogva a http kommunikacio tartalmat beolvassa fejlecsornak. Valahogy a http keepalive-ot is ki kellene kapcsolni, de nam talaltam ra mutato opciot. Amit lehet, az az egyszerre indulo http kapcsolatok szamanak minimalizalasa, azt a konfigopciot irtam.
Biztos nem megy at a proxyn? a proxiyk tobbszor hibaznak, mint a valodi http szerverek.
A http "repsponse header" nem csak az URL-t tartalmazza (nem annak a hosszarol van szo) hanem mindazt, amit a webszerver mond a kommunikaciorol, es aminek semmi haszna nincs a letoltes utan, le se taroljak a kliensek. A lynx -mime_header -rel l ehet jol megcsipni.
Okes, ez ket ut, ket hibalehetoseg (szerver ad tenyleg tul hosszu response headert, vagy az apt keveri ossze a hedaersort az adatsorral)
- A hozzászóláshoz be kell jelentkezni
Igazad volt, sikerult kinyernem a headereket igy:
apt-get install -d `cat p2` --force-yes -y -o Debug::Acquire::http=true 2> /tmp/apt-fetch.log
.
A log fileban egy ideig minden rendben, de utana, ahol elkezd hibazni, teleszemeteli binarissal.
Ez a
Acquire::http::Pipeline-Depth "0"
nem sokat valtoztatott, vagyis ugyanugy hibas.
- A hozzászóláshoz be kell jelentkezni
Acquire::http::Pipeline-Depth "0"
- A hozzászóláshoz be kell jelentkezni
Nos, akit erdekel, a hiba azonositva. 64- bites rendszeren minden gond nelkul lefut, es ugy nez ki megvan a kod, ahol a valtozo tulcsordul... . Nem tul konnyen, de javithato. Csak tudnam miert van egy olyan rendszeren 32 bites rendszer, amiben 40GB ram van es 16 thread. Ok, nem fugg ossze, de akkor is :- ).
- A hozzászóláshoz be kell jelentkezni