패키지 목록을 읽는 데 시간이 오래 걸림


25

내 컴퓨터에서 물건을 업데이트하려고하는데 패키지 목록을 읽을 수없는 것 같습니다. 내가 할 때마다 sudo apt-get install *something* && sudo apt-get update패키지 목록을 읽는 데 걸리는 것처럼 보이지만 이전에는 문제가되지 않았습니다. 여기 내 사양과 그 밖의 내용이 있습니다.

  • 메모리 : 15.8 기가 바이트
  • 프로세서 : AMD Phenom (tm) II x4 965 프로세서 x 4
  • 그래픽 : AMD BARTS의 Gallium 0.4
  • OS 유형 : 32 비트
  • Netspeed : 여기에 이미지 설명을 입력하십시오

2
분명히 말하면 ... 실행 sudo apt-get update에 대해 이야기하고 있습니까?
Jack

2
에서 Software Sources현재 서버 대신 다른 서버를 선택하면 도움이되는지 확인하십시오.

이 문제에 대해 더 많이 쓰지 않아서 죄송합니다. 그러나 여기에 거래가 있습니다! sudo apt-get 업데이트, sudo apt-get 업그레이드 또는 'sodu apt-get install something '을 실행할 때마다 결국에는 도착하지만 목록을 읽는 데 30 분 정도 걸립니다. 나는 서버 변경을 시도했지만 도움이되지 않았습니다.
Dre

컴퓨터 및 인터넷 연결의 사양은 무엇입니까? 새로운 정보로 질문을 편집해도 댓글에 추가되지 않습니다 ...
Alvar

btw, 왜 그 사양에 32 비트가 있습니까? 그것은 말도 안돼. 그래도 문제를 파악할 수 없습니다. 몇 개의 다른 서버를 사용해 보셨습니까? 이 답변은 도움이 될 것입니다. askubuntu.com/a/44900/10698
Alvar

답변:


22

나는 또한 그것을 보았다.

해결책이 없지만 해결책 ( echo 3 | sudo tee /proc/sys/vm/drop_caches)과 잠재적으로 더 많은 정보가 있으므로 누군가 더 이상 조사를 할 수 있습니다.

"패키지 목록 읽기 중 ..." 에서 파일을 읽는 중이므로 네트워크 문제가 아닙니다 /var/lib/apt/lists/. 에이:

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

제공합니다 :

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>

read각 개별 호출에 1ms 미만의 시간이 걸리더라도 8 개의 시스템 호출이 2 초 동안 어떻게 걸 렸는지 확인하십시오 . 를 실행 time apt-get update하거나보고 top있으면 두 프로세스간에 해당 프로세스가 사용 중이 아닙니다. 왜 지연이됩니까?

그런 다음 :

echo t > /proc/sysrq-trigger

몇 번이고 다음과 같은 결과를 보았습니다 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

따라서 그 의미가 무엇인지 확실하지 않지만 페이지 결함 처리에 대해 살펴보면 잠재적 인 메모리 관리 문제를 지적합니다.

나는 다음을 시도했다 :

echo 3 >/proc/sys/vm/drop_caches

그로 인해 문제가 해결되었습니다.

이제는 커널 문제처럼 보입니다. 그래서 나는 최신 커널 (에서 3.8 백 포트로 raring)을 업데이트 했으며 그것이 내가있는 곳입니다. 최신 커널에서 문제가 지속되면 업데이트됩니다.

편집하다

새 커널에서는 문제가 지속되지만 나쁘지는 않습니다. 그리고 같은 것

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

잠시 동안 문제를 해결합니다. MSI 랩탑에서만 발생하는 것을 보았습니다 (제품 이름 : CR61 2M / CX61 2OC / CX61 2OD).

2015 년 12 월 수정

btrace aptitude/에 의해 확인 된 것처럼 그 apt-get당시 일부 디스크 I / O를 수행하는 것으로 보입니다. /var/cache/apt/pkgcache.bin.<random-chars>메모리에 임시 파일 ( )이 핑핑되어 strace출력에 표시되지 않는 이유가 있습니다 .

여전히 일부 컴퓨터에서만 발생하는 이유, 캐시 삭제가 도움이되는 이유, 64 비트로 전환하는 것이 도움이되는 이유는 여전히 설명 할 수 없습니다.

누군가가 그것을 재현 할 수 있다면, 흥미로운 테스트에서 실행 때 또한 발생하는 경우 볼 수 eatmydata또는 이동하는 경우 /var/cache/apttmpfs램 디스크 도움 또는.


1
2014 년 4 월 5 일에 문제가 여전히 존재 함을 확인할 수 있습니다. 테스트 대상 : Linux Mint 16, 32 비트, 64 비트 프로세서, Lenovo W520에서 실행 및 Kubuntu 12.10 32 비트, 64 비트 하드웨어, 사용자 정의 내장 데스크탑에서 다시 실행 (그리고 여기에 제안 된 솔루션 / 해결 방법도 작동합니다 :))
Ferenc Deak

@ fritzone, 사람들이 64 비트 OS로 전환하면 문제가 해결되었다고 말하는 곳에서 문제 가보고 된 것을 기억합니다.
Stéphane Chazelas

64 비트 OS로 다시 전환 할 계획입니다. 이전에는 데스크톱에서 12.10의 64 비트 버전을 사용했으며 이와 같은 문제는 없었습니다.
Ferenc Deak

문제는 여전히 우분투 14.04에 존재합니다 :-(. echo 3을 사용하여 drop_caches에 대한 솔루션이 작동했습니다. 이것은 100 msgboxes 정도를 열 때 Netbeans와 클립 보드가 잘못 충돌 한 Inkscape의 매우 버그가있는 행동 후에 발생했습니다 ... 잉크 스케이프 . 사망했다, 그것은 완전히 apt-get을 패키지를 읽고 둔화 시스템의 일부 엉망 왼쪽
팔로

나는 언젠가 그것을보고, 해결 방법이 나에게 도움이되지 않습니다. i7 및 8G 램이 장착 된 삼성 노트북의 64 비트 운영 체제입니다. 재부팅 만하면 문제가 해결됩니다. 기묘한.
Rmano


4

다음 단계를 수행하십시오.

  • 캐시 정리 :

    sudo apt-get clean
    
  • 이동 sources.list그래서는 apt사용할 수 없습니다 :

    mv /etc/apt/sources.list /etc/apt/sources.list1 && sudo apt-get update
    
  • 다시 이동 한 다음 업데이트하십시오.

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

또한 필요없는 PPA 및 소스 라인을 확인하고 제거하십시오.


1

내 시스템에서 원인은 LANGUAGE=환경 변수의 값이 잘못되었습니다 . 그것은 다음과 같은 값을 유지해야 en:fr:de하고,하지 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=

를 통해 (을 통해 strace) 실행되면 apt-get update명령이 read()호출에서 종료됩니다. 실행하는 데 오랜 시간이 걸리고 하나의 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

LANGUAGE=올바른 값 (예 :)으로 설정 하면 en모든 것이 다시 정상으로 돌아갑니다.

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 

물론 몇 년 전에 나는 그 자체로 잘못된 가치를 두었습니다. 재미있게도, apt 는 II apt-get upgrade 'd the system (Debian sid) 이후 어제까지 완벽하게 작동했습니다 .
shkitch

몇 년 동안 일해온 Debian Jessie의 32 비트 설치에서 갑자기이 문제가 발생했습니다 (수십 년?). 머신 구성에는 아무런 변화가 없지만 갑자기 발생하기 시작했습니다. 그래도 LANGUAGE =를 아무것도 설정하지 않았습니다. "en"으로 설정하거나 모든 LC_ * 로캘 변수에 C를 사용하면 아직 도움이되지 않았습니다.
Brad Spencer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.