Aktualizacja apt-get utknęła na „Oczekiwaniu na nagłówki” podczas korzystania z ICS systemu Windows XP


13

Konfiguruję serwer Maverick na zapasowym komputerze. Instalacja kończy się dobrze, a system uruchamia się w powłoce. Jednak, gdy próbuję zrobić a apt-get update, apt zawiesza się przy prawie każdym wpisie z komunikatem, który 99% [Waiting for headers]czasami 96 b/spojawia się po prawej stronie. Rzeczywisty procent, który twierdzi, jest również różny.

Wyszukiwanie wokół Internecie dał potencjalne rozwiązanie za pomocą opcji Acquire::http::Pipeline-Depth="0"to nieco łagodzi problem, czyli stragany na każdej innej pozycji z tym samym komunikatem jak wyżej.

Jeśli poczekasz (cała aktualizacja zajęła około 4 godzin), aktualizacja nadal kończy się niepowodzeniem, ponieważ duża część trafień pokazuje komunikat „nie można się połączyć” lub podobny komunikat, mimo że mogę pingować serwer z komputera tylko w porządku.

Problem nie jest również związany z użytym lustrem, ponieważ próbowałem około tuzina mirrorów bezskutecznie, nawet próbowałem skomentować wszystko oprócz mainwpisu w pliku sources.list i nadal nie chce się aktualizować.

Połączenie sieciowe jest w porządku, ponieważ mogę pingować i wget (apt nie pozwoli mi zainstalować rysia, dopóki nie uruchomię udanej aktualizacji). Ponownie zainstalowałem dystrybucję bez powodzenia.

Jedyną dziwną rzeczą w konfiguracji jest to, że komputer łączy się z Internetem przez mojego laptopa z systemem Windows z odpowiednio skonfigurowanym ICS, ale jak już powiedziałem, połączenie sieciowe jest w porządku.


Spróbuj wykonać następujące polecenia w swoim terminalu sudo dpkg --configure -aisudo apt-get update && sudo apt-get upgrade
karthick87

Połączenie przez ICS brzmi jak kłopoty z oczekiwaniem na wystąpienie, szczególnie jeśli jednym z łączy jest WiFi. Czy można połączyć się bardziej bezpośrednio?
msw

@msw nie obecnie, ale miałem wrażenie, że ICS jest po prostu odpowiednikiem przekazywania iptables dla Linuksa, jakie problemy może to naprawdę powodować? Zakładając, że w przeciwnym razie działa dobrze (którym jest).
poważny

Mam niewielkie doświadczenie z ICS, ponieważ nigdy nie sądziłem, że jest wystarczająco solidny do jakiegokolwiek celu, a biorąc pod uwagę słaby dostęp administracyjny (debugowanie) do wszystkich usług sieciowych Microsoft, założyłem, że spowoduje to problemy. Twoje wrażenia poniżej wydają się nieco potwierdzać moje przypuszczenia.
msw

Odpowiedzi:


9

Wydaje się, że jest podstawowy problem z implementacją ICS i ogólnego przekazywania IP w Windows XP, po prostu nie może obsłużyć wielu połączeń z tym samym serwerem, może to dziwna kombinacja błędu z celową niekompetencją (jak to nazywam) , ale efekt końcowy jest taki, że XP nie może działać jako właściwy router / serwer proxy dla systemu Linux (być może ograniczenia są celowo wprowadzone dla systemów innych niż Windows).

Warto zauważyć, że nie ogranicza się to tylko do ICS. W rejestrze systemu Windows jest ukryta opcja, która umożliwia przekazywanie adresów IP interfejsom sieciowym i cierpi na ten sam problem.

Wydaje się, że jedynym rozwiązaniem jest albo zmiana topologii sieci, aby uniknąć korzystania z ICS (albo bezpośrednie połączenie, albo zakup dedykowanego przełącznika / punktu dostępowego), albo użycie innego systemu operacyjnego do skonfigurowania tymczasowego mostu. Użyłem ubuntu live-cd (to nie był mój komputer lub na początku działałby jakiś * nix) i włączyłem przekazywanie pakietów i maskowanie IP, aby komputer zachowywał się jak router w dobrej wierze.


3

W Internecie krąży kilka plotek (nie mogę ich zweryfikować) na temat problemów ICS z IP6. Powiedzieli, że gdy ICS odbiera więcej niż jedno połączenie IP6, zatrzymuje się na chwilę. To może wyjaśniać, dlaczego wget działa (tylko jedno połączenie), a aktualizacja apt-get kończy się niepowodzeniem (wiele jednoczesnych połączeń).

Możesz spróbować wyłączyć IP6 na serwerze, aby sprawdzić, czy to jest problem.

Możesz wyłączyć IP6 z terminala za pomocą:

echo "#disable ipv6" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf

Następnie uruchom ponownie i sprawdź, czy możesz zaktualizować. Jeśli to działa, przynajmniej wiesz, gdzie jest problem. Możesz wyłączyć IP6 na stałe lub zaplanować nową konfigurację. Pamiętaj, że wyłączenie IP6 będzie tymczasowym włamaniem, IP6 wydaje się być nieuniknione w najbliższej przyszłości.

Aby włączyć IP6 z powrotem, usuń poprzednie linie z /etc/sysctl.conf i uruchom ponownie.


Wydaje się, że przyczyną jest ICS, jednak twoja sugestia go nie naprawiła. Po bezpośrednim okablowaniu komputera wszystko działało zgodnie z oczekiwaniami. Teraz, gdy mam zaktualizowane repozytoria, nie mogę nawet zrobić apt-get installprzez ICS ... hmmm.
poważny

Może ICS ma problem z dużą (lub może skromną) liczbą jednoczesnych połączeń z tym samym serwerem.
Javier Rivera,

Ty dont trzeba restarcie: po zmodyfikowaniu sysctl.conf, typ sysctl -ai jesteś dobry, aby przejść. możesz także ograniczyć pisanie, używając dokumentu tutaj zamiast ciągłego przesyłania echa.
Mei
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.