Software Center ładuje się z wiekiem

10

Mam szybki komputer (świetny procesor, dobry dysk SSD), ale Software Center ładuje się w ciągu 30 sekund. To nie jest dziwka, myślę, że coś może być nie tak. Ładowanie Synaptic zajmuje sekundę.

Pobiegłem strace software-centersprawdzić, czy dysk nie jest w stanie przerzucić dysk (to dysk SSD - nie słyszę go), a także analizuje i próbuje otworzyć całe mnóstwo plików. Oto fragment:

open("/usr/local/lib/python2.6/dist-packages/FlexGet-1.0r1465-py2.6.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/FlexGet-1.0r1465-py2.6.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/FlexGet-1.0r1465-py2.6.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/python2.6/dist-packages/progressbar-2.3_dev-py2.6.egg/StringIO", 0x7fff19d3af30) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/progressbar-2.3_dev-py2.6.egg/StringIO.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/progressbar-2.3_dev-py2.6.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/progressbar-2.3_dev-py2.6.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/progressbar-2.3_dev-py2.6.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/python2.6/dist-packages/pynzb-0.1.0-py2.6.egg/StringIO", 0x7fff19d3af30) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/pynzb-0.1.0-py2.6.egg/StringIO.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/pynzb-0.1.0-py2.6.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/pynzb-0.1.0-py2.6.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/pynzb-0.1.0-py2.6.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/python2.6/dist-packages/PyRSS2Gen-1.0.0-py2.6.egg/StringIO", 0x7fff19d3af30) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyRSS2Gen-1.0.0-py2.6.egg/StringIO.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyRSS2Gen-1.0.0-py2.6.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyRSS2Gen-1.0.0-py2.6.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyRSS2Gen-1.0.0-py2.6.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/python2.6/dist-packages/html5lib-0.90-py2.6.egg/StringIO", 0x7fff19d3af30) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/html5lib-0.90-py2.6.egg/StringIO.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/html5lib-0.90-py2.6.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/html5lib-0.90-py2.6.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/html5lib-0.90-py2.6.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/python2.6/dist-packages/PyYAML-3.09-py2.6-linux-x86_64.egg/StringIO", 0x7fff19d3af30) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyYAML-3.09-py2.6-linux-x86_64.egg/StringIO.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyYAML-3.09-py2.6-linux-x86_64.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyYAML-3.09-py2.6-linux-x86_64.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/PyYAML-3.09-py2.6-linux-x86_64.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.6-py2.6.egg/StringIO", 0x7fff19d3af30) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.6-py2.6.egg/StringIO.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.6-py2.6.egg/StringIOmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.6-py2.6.egg/StringIO.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.6-py2.6.egg/StringIO.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)

To może być czerwony śledź. Później zatrzymuje się na to:

poll([{fd=3, events=POLLIN}], 1, 25000) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\v\0\0\0\3\0\0\0=\0\0\0\6\1s\0\7\0\0\0:1.3497\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 91
recvmsg(3, 0x7fff8c57cc00, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
sendmsg(3, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\3\0\0\0{\0\0\0\1\1o\0\32\0\0\0/com/ubu"..., 144}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 144
poll([{fd=3, events=POLLIN}], 1, 25000

A potem robi to ponownie ... Te dwie przerwy odpowiadają za większość czasu ładowania.

A potem naprawdę wychodzi z tysiącami linii odpytywania / odczytu / tymczasowo niedostępnych.

Co się tu u licha dzieje? Dlaczego Software Center skanuje coś, co wygląda na dowolny możliwy pakiet Pythona StringIO? Pluskwa?

Więc dlaczego zwleka z czymś, co wygląda jak żądanie internetowe na coś.ubuntu.com (nie widzi pełnej wiadomości)? Dlaczego w ogóle rozmawia z ubuntu.com?

Oli
źródło
+1, jest tak samo na wszystkich komputerach, na których zainstalowałem Ubuntu, więc musimy poczekać na poprawkę
Praweł
@Oli Jaka to wersja Ubuntu? Używam Lucid od jakiegoś czasu i nigdy na to nie wpadłem.
Mussnoon
Mogę potwierdzić: jest wyjątkowo wolny! Używam Synaptic infact.
Andrea Grandi,
@Mussnoon: Maverick. I to było tak wolne od Maverick. Myślę, że może to mieć coś wspólnego z dodanymi do nowej wersji częściami do zakupu lub jednokrotnego logowania ... Tak czy inaczej, takie opóźnienie jest dość okropne.
Oli
3
Prawdopodobnie należy to zgłosić jako błąd.
Jorge Castro,

Odpowiedzi:

5

Wygląda na to, że pobiera w pełni aktualny widok dostępnych pakietów (jak to, co apt-get updaterobi), co może chwilę potrwać w zależności od tego, jak daleko jest nieaktualna pamięć podręczna, jak szybko reagują repozytoria oprogramowania i szybkość twojego połączenie internetowe.

Jak wspomniano w komentarzach, ten brak interaktywności podczas odświeżania wydaje się być błędem.

Kees Cook
źródło
Zaakceptuję to jako odpowiedź, jeśli Aptitude, Synaptic, a nawet po prostu to apt-get updatesamo, zajmie coś w tym samym czasie. W tym wpisanie mojego hasła time bash -c "sudo apt-get update" zwraca 0m2.446s. Hot run (zaraz po tym, bez hasła) zajął 0m0,572s. SC konsekwentnie zajmuje> 30 sekund, więc jeśli to właśnie powoduje opóźnienie, błąd jest czymś więcej niż tylko kwestią interakcji.
Oli
Hm, dziwne. Przy pierwszym uruchomieniu zajęło mi to około 30 sekund, a potem tylko kilka chwil. „30 sekund” jest dla mnie zawsze czerwoną flagą informującą o przekroczeniu limitu czasu w DNS. Niezależnie od tego otwarcie błędu byłoby najbardziej sensowne.
Kees Cook
Czy wiesz, czy jest coś, co mogę w to owinąć, co bada tylko ruch sieciowy?
Oli
I myślałem, że przesadzam, ale okazuje się, że jestem bardziej cierpliwy niż sobie przypisuję. Właśnie uruchomiłem centrum oprogramowania time. 1m.55.410s. Auć.
Oli
Zwykle po prostu uruchamiam maszynę wirtualną i próbuję ją tam odtworzyć podczas uruchamiania tcpdumplub wireshark. Ale byłoby miło mieć na to sposób. Zapytałem: askubuntu.com/q/11709/721
Kees Cook
0

Spotykam ten sam problem. Kiedy po raz pierwszy otwieram centrum oprogramowania, jest ono otwierane szybko. Potem go zamykam, ale okazuje się, że proces centrum oprogramowania nie zostaje zabity. Przy drugim otwarciu otworzy się długo. Metoda polega na tym, że zabijam proces centrum oprogramowania ręcznie po zamknięciu centrum oprogramowania.

Używam arch Ubuntu11.04 amd64 w Thinkpad W500.

waterloo2005
źródło