Paket listesini okumak sonsuza kadar sürer


25

Makinemdeki eşyalarımı güncellemeye çalışıyorum ve paket listemi okuyamıyor gibi görünüyor. Bunu her yaptığımda, sudo apt-get install *something* && sudo apt-get updatepaket listesini okurken sıkışıp kalıyor gibi gözüküyor , bu daha önce sorun olmamıştı. İşte benim özellikleri ve ne değil:

  • Bellek: 15.8 gb
  • İşlemci: AMD Phenom (tm) II x4 965 İşlemci x 4
  • Grafikler: AMD BARTS'de Gallium 0.4
  • İşletim sistemi türü: 32 bit
  • Net hızı : görüntü tanımını buraya girin

2
Sadece açıklığa kavuşturmak ... yürütmekten bahsediyorsun sudo apt-get update, doğru mu?
Jack,

2
In Software Sourcesbunun yerine mevcut birinin, başka bir sunucuyu seçtikten olmadığını görmek, yardımcı olur.

Bu sorun hakkında daha fazla yazmadığım için üzgünüm. Ama işte anlaşma! her zaman bir sudo apt-get güncellemesi, sudo apt-get yükseltme veya 'sodu apt-get bir şey yükle' komutunu çalıştırdığımda sonuçta elde edecek, ancak listeyi okumak için 30 dakika sürecek. Sunucu değiştirmeyi denedim ve bu işe yaramadı.
Dre,

Bilgisayarınızın ve internet bağlantınızın özellikleri nelerdir? Sorunuzu yeni bilgilerle düzenleyerek yorumlara eklemeyin ...
Alvar

btw, neden bu şartnamede 32 bit var? Hiç bir anlamı yok. Sorunu çözemiyorum, kaç tane sunucu denedin? Bu cevap yardımcı olabilir, askubuntu.com/a/44900/10698
Alvar

Yanıtlar:


22

Bunu da gördüm.

Bir çözümüm yok, ancak echo 3 | sudo tee /proc/sys/vm/drop_cachesbirisinin soruşturmayı daha da ileriye götürmesi için bir geçici çözüm ( ) ve potansiyel olarak daha fazla bilgiye sahibim .

Bu bir ağ meselesi değil çünkü "Paket listesi okunuyor ..." da sadece içindeki dosyaları okuyor /var/lib/apt/lists/. A:

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

verir:

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>

readHer bir görüşme 1 ms'den daha az sürse bile, bu 8 sistem çağrısının 2 saniyede nasıl sürdüğünü görün . Çalışmak time apt-get updateveya bakmak top, bu işlem bu iki çağrı arasında yoğun değildir. Peki neden gecikti?

Sonra yaptım:

echo t > /proc/sysrq-trigger

Birkaç kez ve sonucu baktı 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

Bu nedenle, bunun ne anlama geldiğinden emin değilsiniz ancak sayfa hatalarının ele alınmasına bakar, bu nedenle potansiyel bir bellek yönetimi sorununa işaret eder.

Sonra denedim:

echo 3 >/proc/sys/vm/drop_caches

Ve bu problemi çözdü.

Şimdi, bir çekirdek sorunu gibi görünüyor. Bu yüzden, en son çekirdeğe (3.8 destekli raring) güncelleme yaptım ve bulunduğum yer burası. Sorun yeni çekirdekte devam ederse güncellenir.

Düzenle

Sorun yeni çekirdeğin içinde olduğu kadar kötü olmasa da devam ediyor. Ve aynı şey,

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

sorunu bir süre temizler. Bunun yalnızca MSI dizüstü bilgisayarlarda olduğunu gördüm (Ürün Adı: CR61 2M / CX61 2OC / CX61 2OD).

Aralık 2015'i düzenle

btrace aptitude/ Tarafından onaylandığı gibi apt-get, zamanda bir miktar disk G / Ç yapıyor gibi görünmektedir. /var/cache/apt/pkgcache.bin.<random-chars>Hafızada gizlenmiş geçici bir dosya ( ) var, bu yüzden straceçıktıda gösterilmiyor.

Yine de neden sadece bazı makinelerde olduğunu, neden önbellek bırakmanın yardımcı olduğunu, neden 64 bit'e geçmenin yardımcı olduğunu açıklayamıyor.

Birisi onu yeniden üretebilirse, ilginç bir test, bunun altında çalışırken eatmydatami yoksa /var/cache/aptüzerine tmpfsmi giderken ya da bir ramdisk'in yardım edip etmediğini görmek için olabilir .


1
5 Nisan 2014'te, sorunun hala var olduğunu onaylayabilirim. Test edildi: Linux Mint 16, 32 bit, 64 bit işlemcide çalışıyor, Lenovo W520 ve: Kubuntu 12.10 32 bit, yine 64 bit donanımda, özel yapım masaüstünde çalışıyor. (ve burada önerilen çözüm / geçici çözüm de çalışır :))
Ferenc Deak

@fritzone, insanların 64bit işletim sistemine geçmenin sorunu çözdüğünü söylediği başka bir yerde bildirilen sorunu gördüğümü hatırlıyorum.
Stéphane Chazelas

Ben de 64 bit işletim sistemine dönmeyi planlıyorum. Daha önce, masaüstünde 12.10'un 64 bit sürümüne sahiptim ve bunun gibi bir sorunum yoktu.
Ferenc Deak

Sorun hala ubuntu 14.04'te var :-(. Drop_caches'e eko 3 ile çözümünüz işe yaradı. Bu, Inkscape'in panodaki hatalı bir şekilde Netbeans ile 100 msgbox veya daha fazla açtığı zaman ... öldürüldü, sistemde bir miktar karışıklık bıraktı ve paketleri okuyarak apt-get'i tamamen yavaşlattı
Palo

Ben de bazen görüyorum ve geçici çözüm benim için çalışmıyor. İ7 ve 8G ram özellikli bir samsung dizüstü bilgisayarda 64 bitlik bir işletim sistemi. Sadece bir yeniden başlatma sorunu giderir. Tuhaf.
Rmano

5

Http://antti-juhani.kaijanaho.fi/newblog/archives/521 adresindeki tavsiye, çeşitli bilgisayarlarda birkaç kez benim için hızlandırdı:

sudo dpkg --clear-avail
sudo sync-available

(Blog ayrıca sudo dpkg --forget-old-unavail2 adım arasında önerildi , ancak görünüşe göre kullanımdan kaldırıldı ve artık gerekli değil.)


4

Adımları takip et:

  • Önbelleği temizle:

    sudo apt-get clean
    
  • Taşı sources.listyüzden aptbunu kullanamazsınız:

    mv /etc/apt/sources.list /etc/apt/sources.list1 && sudo apt-get update
    
  • Geri taşı sonra güncelle:

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

Ayrıca ihtiyaç duymadığınız PPA'ları ve kaynak hatlarını da kontrol edip kaldırın.


1

Sistemimdeki sebep, LANGUAGE=ortam değişkeninde yanlış bir değerdi . Aşağıdaki gibi değerleri tutmalı en:fr:deve 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=

Çalıştığında (ile strace), apt-get updatekomut aramayı klonlar read(). Yürütülmesi uzun sürüyor ve bir CPU çekirdeğinin mevcut tüm döngülerini yiyor:

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=Doğru bir değere (örneğin en) ayarlarsam , her şey tekrar normale döner:

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 

Oh, ve elbette yanlış değeri kendime birkaç yıl önce koydum. Yeterince tuhaf, apt sistemi II apt-get upgrade'den sonra (Debian sid) düne kadar kusursuz çalışıyordu .
shkitch

Bu aniden, yıllardır çalışan, 32 yıllık bir Debian Jessie kurulumunda karşılaştığım. Makine yapılandırmasındaki hiçbir şey değişmedi, ancak aniden gerçekleşmeye başladı. LANGUAGE = hiçbir şeye ayarlı değil. Bunu "en" olarak ayarlamak ya da tüm LC_ * yerel değişkenleri için C kullanmak henüz işe yaramadı.
Brad Spencer,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.