Leer la lista de paquetes lleva una eternidad

25

He estado tratando de actualizar mis cosas en mi máquina, y parece que no puede leer mi lista de paquetes. Parece que cada vez que lo hago sudo apt-get install *something* && sudo apt-get updatese atasca al leer la lista de paquetes, esto no ha sido un problema antes. Aquí están mis especificaciones y otras cosas:

  • Memoria: 15.8 gb
  • Procesador: AMD Phenom (tm) II x4 965 Procesador x 4
  • Gráficos: Gallium 0.4 en AMD BARTS
  • Tipo de sistema operativo: 32 bits
  • Velocidad de red : ingrese la descripción de la imagen aquí
Dre
fuente
2
Solo aclarando ... estás hablando de ejecutar sudo apt-get update, ¿correcto?
Jack
2
En Software Sources, vea si seleccionar otro servidor, en lugar del actual, ayuda.
Perdón por no escribir más sobre este problema. ¡Pero aquí está el trato! cada vez que ejecuto una actualización de sudo apt-get, sudo apt-get upgrade o 'sodu apt-get install algo ', eventualmente lo alcanzará, pero lleva 30 minutos leer la lista. He intentado cambiar el servidor, y eso no ayudó.
Dre
¿Cuáles son las especificaciones de su computadora y su conexión a Internet? Edite su pregunta con nueva información, no la agregue en los comentarios ...
Alvar
por cierto, ¿por qué tienes 32 bits en esa especificación? No tiene sentido. Sin embargo, no puedo resolver su problema, ¿cuántos servidores diferentes ha probado? Esta respuesta podría ayudar, askubuntu.com/a/44900/10698
Alvar

Respuestas:

22

También he visto eso.

No tengo una solución, pero tengo una solución ( echo 3 | sudo tee /proc/sys/vm/drop_caches) y potencialmente más información para que alguien pueda llevar la investigación más allá.

No es un problema de red porque en "Leer lista de paquetes ..." , solo está leyendo archivos /var/lib/apt/lists/. UNA:

strace -tt -T -fo strace.log apt-get update

da:

16394 14:43:03.921130 open("/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_precise_main_binary-i386_Packages", O_RDONLY|O_LARGEFILE) = 7 <0.000012>
[...]
16394 14:43:03.995238 read(6, "-3.1ubuntu2)\nConflicts: linux86\n"..., 32444) = 32444 <0.000111>
16394 14:43:05.787187 read(6, "c (<< 1:14.b.4-dfsg), erlang-exa"..., 32239) = 32239 <0.000069>
16394 14:43:05.788025 read(6, ".deb\nSize: 42130\nMD5sum: c7de671"..., 31695) = 31695 <0.000068>
16394 14:43:05.870734 read(6, "5: 29c4b395a92bdc12932f151c3643a"..., 31607) = 31607 <0.000071>
16394 14:43:05.890862 read(6, "e-pack-af-base\nFilename: pool/ma"..., 32538) = 32538 <0.000070>
16394 14:43:05.891425 read(6, "buntu-usb-live, ubuntu-dvd-live,"..., 32090) = 32090 <0.000066>
16394 14:43:05.891960 read(6, "cd9755b03ac2c9b8251125c7b6618\nDe"..., 32195) = 32195 <0.000034>
16394 14:43:06.043001 read(6, "rg>\nArchitecture: all\nVersion: 2"..., 32535) = 32535 <0.000072>

Vea cómo esas 8 readllamadas al sistema tomaron más de 2 segundos a pesar de que cada llamada individual toma menos de 1 ms. En ejecución time apt-get updateo mirando top, ese proceso no está ocupado entre esas dos llamadas. Entonces, ¿por qué la demora?

Entonces hice:

echo t > /proc/sysrq-trigger

unas pocas veces y miró el resultado en kern.log:

 apt-get         D 00000000     0 16790  12706 0x00000000
  e8695d30 00000086 f7bd5e6c 00000000 f7bd5e44 f74a6580 c1990e00 c1990e00
  efe46efe 000042cb f7b9de00 e71a7230 f74a6580 c107e116 00000000 00000000
  044aa200 00000000 00000000 00000000 00000000 e8695d0c e8695d0c c1038de8
 Call Trace:
  [<c107e116>] ? enqueue_entity+0x186/0x220
  [<c1038de8>] ? default_spin_lock_flags+0x8/0x10
  [<c15e13bd>] ? _raw_spin_lock_irqsave+0x2d/0x40
  [<c15e0533>] schedule+0x23/0x60
  [<c15deecf>] schedule_timeout+0x12f/0x290
  [<c1075c38>] ? ttwu_do_activate.constprop.86+0x58/0x70
  [<c1055190>] ? usleep_range+0x40/0x40
  [<c15e0846>] io_schedule_timeout+0x86/0xd0
  [<c15cef7d>] balance_dirty_pages.isra.17+0x3f5/0x4b4
  [<c15e118d>] ? _raw_spin_lock+0xd/0x10
  [<c1180781>] ? __set_page_dirty_buffers+0x81/0xb0
  [<c110deb5>] ? set_page_dirty+0x55/0x60
  [<c11812c9>] ? __block_page_mkwrite+0xe9/0x170
  [<c110f3ae>] balance_dirty_pages_ratelimited_nr+0xde/0x100
  [<c1126f53>] do_wp_page+0x503/0x830
  [<c1128ef7>] handle_pte_fault+0x267/0x2c0
  [<c1129c62>] handle_mm_fault+0x1e2/0x280
  [<c15e4988>] do_page_fault+0x158/0x4c0
  [<c104e4dc>] ? irq_exit+0x5c/0xa0
  [<c15e22d0>] ? do_debug+0x180/0x180
  [<c15e4830>] ? vmalloc_fault+0x195/0x195
  [<c15e1c53>] error_code+0x67/0x6c

Entonces, no estoy seguro de lo que eso significa, pero eso se ve sobre el manejo de fallas de página, por lo que apunta a un posible problema de administración de memoria.

Entonces probé un:

echo 3 >/proc/sys/vm/drop_caches

Y eso hizo que el problema desapareciera.

Ahora, se parece mucho a un problema del núcleo. Entonces, me actualicé al último kernel (3.8 backport de raring) y ahí es donde estoy. Se actualizará si el problema persiste con el kernel más nuevo.

Editar

El problema persiste con el nuevo núcleo, aunque no es tan malo. Y lo mismo

echo 3 | sudo tee /proc/sys/vm/drop_caches

aclara el problema por un tiempo. Solo he visto que eso sucede en las computadoras portátiles MSI (Nombre del producto: CR61 2M / CX61 2OC / CX61 2OD).

Editar diciembre de 2015

Según lo confirmado por btrace aptitude/ apt-getparece hacer algunas E / S de disco en ese momento. Tiene un archivo temporal ( /var/cache/apt/pkgcache.bin.<random-chars>) mmapped en la memoria, por lo que no se muestra en la stracesalida.

Todavía no puedo explicar por qué solo sucede en algunas máquinas, por qué es útil soltar cachés, por qué es útil cambiar a 64 bits.

Si alguien puede reproducirlo, una prueba interesante podría ser para ver si eso también sucede cuando se ejecuta en eatmydatao si se mueve /var/cache/apthacia tmpfso un disco RAM ayuda.

Stéphane Chazelas
fuente
1
El 5 de abril de 2014 puedo confirmar que el problema aún existe. Probado en: Linux Mint 16, 32 bit, ejecutándose en un procesador de 64 bit, Lenovo W520, y: Kubuntu 12.10 32 bit, nuevamente ejecutándose en hardware de 64 bit, escritorio personalizado. (y la solución / solución sugerida aquí también funciona :))
Ferenc Deak
@fritzone, recuerdo haber visto el problema reportado en otro lugar donde la gente decía que cambiar a un sistema operativo de 64 bits solucionó el problema.
Stéphane Chazelas
También planeo volver a un sistema operativo de 64 bits. Antes, en el escritorio tenía una versión de 64 bits de 12.10 y no tenía problemas como este.
Ferenc Deak
El problema todavía existe en ubuntu 14.04 :-(. Su solución con echo 3 para drop_caches funcionó. Esto ha sucedido después de un comportamiento muy defectuoso de Inkscape con el portapapeles chocando incorrectamente con Netbeans cuando ha abierto 100 msgboxes más o menos ... Aunque Inkscape murió, dejó un poco de desorden en el sistema que totalmente se ralentizó apt-get lectura de los paquetes.
Palo
También lo veo en algún momento, y la solución no me funciona. Aquí es un sistema operativo de 64 bits, en una laptop Samsung con i7 y 8G ram. Solo un reinicio hace que el problema desaparezca. Extraño.
Rmano
5

El consejo en http://antti-juhani.kaijanaho.fi/newblog/archives/521 me lo ha acelerado varias veces en varias computadoras:

sudo dpkg --clear-avail
sudo sync-available

(El blog también recomendó sudo dpkg --forget-old-unavailentre los 2 pasos, pero aparentemente está en desuso y ya no es necesario).

Beni Cherniavsky-Paskin
fuente
4

Sigue los pasos:

  • Limpiar caché:

    sudo apt-get clean
    
  • Mover el sources.listmodo aptno puede usarlo:

    mv /etc/apt/sources.list /etc/apt/sources.list1 && sudo apt-get update
    
  • Muévalo hacia atrás y luego actualice:

    mv /etc/apt/sources.list1 /etc/apt/sources.list && sudo apt-get update 
    

También verifique y elimine cualquier PPA y líneas de origen que no necesite.

rupert
fuente
1

En mi sistema, la causa era un valor incorrecto en la LANGUAGE=variable de entorno. Debe contener valores como en:fr:de, y no en_US.UTF-8,sl_SI.UTF-8:

root@fik:~
# locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8,sl_SI.UTF-8
LC_CTYPE=sl_SI.UTF-8
LC_NUMERIC=sl_SI.UTF-8
LC_TIME=sl_SI.UTF-8
LC_COLLATE=sl_SI.UTF-8
LC_MONETARY=sl_SI.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=sl_SI.UTF-8
LC_NAME=sl_SI.UTF-8
LC_ADDRESS=sl_SI.UTF-8
LC_TELEPHONE=sl_SI.UTF-8
LC_MEASUREMENT=sl_SI.UTF-8
LC_IDENTIFICATION=sl_SI.UTF-8
LC_ALL=

Cuando se ejecuta (via strace), el apt-get updatecomando clonks en la read()llamada. Tarda años en ejecutarse y consume todos los ciclos disponibles de un núcleo de CPU:

root@fik:~
# strace apt-get update
[snip]
read(5, "form, hardware::opengl, implemen"..., 32146) = 32146
read(5, " Maintainers <pkg-bluetooth-main"..., 32658) = 32658
read(5, ": 17569748\nMD5sum: 9c20d52f9a0d5"..., 32200) = 32200
brk(0x55ac79212000)                     = 0x55ac79212000
read(5, "scription-md5: ca1156b27bec24d4c"..., 32469) = 32469
read(5, " Boost.Math Library\nMulti-Arch: "..., 32477) = 32477
read(5, "epends: libc6 (>= 2.4), lsb-base"..., 32648) = 32648
^C--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
strace: Process 18452 detached

Si configuro LANGUAGE=un valor correcto (como en), todo vuelve a la normalidad nuevamente:

root@fik:~
# export LANGUAGE=en

root@fik:~
# locale
LANG=en_US.UTF-8
LANGUAGE=en
LC_CTYPE=sl_SI.UTF-8
LC_NUMERIC=sl_SI.UTF-8
LC_TIME=sl_SI.UTF-8
LC_COLLATE=sl_SI.UTF-8
LC_MONETARY=sl_SI.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=sl_SI.UTF-8
LC_NAME=sl_SI.UTF-8
LC_ADDRESS=sl_SI.UTF-8
LC_TELEPHONE=sl_SI.UTF-8
LC_MEASUREMENT=sl_SI.UTF-8
LC_IDENTIFICATION=sl_SI.UTF-8
LC_ALL=

root@fik:~
# apt-get update
Hit:1 http://ftp.at.debian.org/debian experimental InRelease
Ign:3 http://ftp.at.debian.org/debian jessie InRelease                                                      
Hit:4 http://ftp.at.debian.org/debian jessie-updates InRelease  
Hit:5 http://ftp.at.debian.org/debian jessie-backports InRelease                                                                             
Hit:6 http://ftp.at.debian.org/debian sid InRelease                                                                    
Hit:7 http://ftp.at.debian.org/debian stretch InRelease                               
Hit:8 http://ftp.at.debian.org/debian stretch-updates InRelease                                             
Hit:9 http://ftp.at.debian.org/debian jessie Release                                  
Hit:2 http://screenshots.getdeb.net xenial-getdeb InRelease                           
Hit:10 http://security.debian.org jessie/updates InRelease      
Hit:11 http://security.debian.org stretch/updates InRelease
Reading package lists... Done 
shkitch
fuente
Ah, y por supuesto puse el valor incorrecto allí hace unos años. Curiosamente, apt funcionaba perfectamente hasta ayer, después de II apt-get upgrade 'd el sistema (Debian sid).
shkitch
De repente me encontré con esto en una instalación de 32 bits de Debian Jessie que ha estado funcionando durante años (¿décadas?). Nada cambia en la configuración de la máquina, pero de repente comenzó a suceder. Sin embargo, no tengo LANGUAGE = configurado en nada. Configurarlo en "en" o usar C para todas las variables locales de LC_ * todavía no ayudó.
Brad Spencer