Daftar paket membaca berlangsung selamanya

25

Saya sudah mencoba memperbarui barang-barang saya di komputer saya, dan sepertinya tidak bisa membaca daftar paket saya. Sepertinya setiap kali saya melakukannya sudo apt-get install *something* && sudo apt-get updatemacet di daftar paket bacaan, ini belum menjadi masalah sebelumnya. Ini spesifikasi dan yang lainnya:

  • Memori: 15,8 gb
  • Prosesor: AMD Phenom (tm) II x4 965 Prosesor x 4
  • Gambar: Gallium 0,4 pada AMD BARTS
  • Jenis OS: 32-bit
  • Netspeed: masukkan deskripsi gambar di sini
Dre
sumber
2
Hanya mengklarifikasi ... Anda berbicara tentang mengeksekusi sudo apt-get update, benar?
Jack
2
Di Software Sources, lihat apakah memilih server lain, dan bukannya server Anda saat ini, membantu.
Maaf karena tidak menulis lebih lanjut tentang masalah ini. Tapi ini masalahnya! setiap kali saya menjalankan sudo apt-get update, sudo apt-get upgrade atau 'sodu apt-get install sesuatu ' itu akan sampai pada akhirnya, tetapi butuh 30 menit untuk membaca melalui daftar. Saya sudah mencoba mengubah server, dan itu tidak membantu.
Dre
Apa spesifikasi komputer Anda dan koneksi internet Anda? Edit pertanyaan Anda dengan informasi baru, jangan tambahkan dalam komentar ...
Alvar
btw, mengapa Anda memiliki 32-bit pada spesifikasi itu? Itu tidak masuk akal. Saya tidak dapat memecahkan masalah Anda, berapa banyak server yang berbeda yang telah Anda coba? Jawaban ini mungkin membantu, askubuntu.com/a/44900/10698
Alvar

Jawaban:

22

Saya juga pernah melihatnya.

Saya tidak punya solusi, tetapi saya punya solusi ( echo 3 | sudo tee /proc/sys/vm/drop_caches) dan kemungkinan lebih banyak informasi sehingga seseorang dapat membawa penyelidikan lebih jauh.

Ini bukan masalah jaringan karena pada "Membaca daftar paket ..." , itu hanya membaca file dalam /var/lib/apt/lists/. SEBUAH:

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

memberi:

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>

Lihat bagaimana 8 readpanggilan sistem itu memakan waktu lebih dari 2 detik meskipun setiap panggilan individu membutuhkan waktu kurang dari 1 ms. Berjalan time apt-get updateatau melihat top, proses itu tidak sibuk di antara dua panggilan itu. Jadi mengapa penundaan itu?

Lalu saya lakukan:

echo t > /proc/sysrq-trigger

beberapa kali dan melihat hasilnya di 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

Jadi, tidak yakin apa artinya itu tetapi yang terlihat tentang penanganan kesalahan halaman, jadi menunjuk pada masalah manajemen memori potensial.

Saya kemudian mencoba:

echo 3 >/proc/sys/vm/drop_caches

Dan itu memang membuat masalah hilang.

Sekarang, ini sangat mirip dengan masalah kernel. Jadi, saya telah memperbarui ke kernel terbaru (3,8 backport dari raring) dan di situlah saya berada. Akan memperbarui jika masalah berlanjut dengan kernel yang lebih baru.

Edit

Masalahnya masih ada dengan kernel baru, meskipun tidak seburuk itu. Dan hal yang sama,

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

membersihkan masalah untuk sementara waktu. Saya hanya melihat itu terjadi pada laptop MSI (Nama Produk: CR61 2M / CX61 2OC / CX61 2OD).

Edit Desember 2015

Seperti yang dikonfirmasi oleh btrace aptitude/ apt-getmemang tampaknya melakukan beberapa I / O disk pada saat itu. Ini punya file sementara ( /var/cache/apt/pkgcache.bin.<random-chars>) dalam memori yang mengapa tidak ditampilkan dalam straceoutput.

Masih tidak dapat menjelaskan mengapa itu hanya terjadi pada beberapa mesin saja, mengapa menjatuhkan cache membantu, mengapa beralih ke 64bit membantu.

Jika seseorang dapat mereproduksinya, tes yang menarik bisa untuk melihat apakah itu juga terjadi ketika berjalan di bawah eatmydataatau jika pindah /var/cache/aptke tmpfsatau ramdisk membantu.

Stéphane Chazelas
sumber
1
Pada 5 April 2014, saya dapat mengonfirmasi bahwa masalahnya masih ada. Diuji pada: Linux Mint 16, 32 bit, berjalan pada prosesor 64 bit, Lenovo W520, dan: Kubuntu 12.10 32 bit, lagi berjalan pada perangkat keras 64 bit, desktop yang dibuat khusus. (dan solusi / solusi yang disarankan di sini juga berfungsi :))
Ferenc Deak
@ Fritzone, saya ingat melihat masalah yang dilaporkan di tempat lain di mana orang mengatakan bahwa beralih ke OS 64bit memperbaiki masalah.
Stéphane Chazelas
Saya berencana untuk kembali ke OS 64 bit juga. Sebelumnya, pada desktop saya memiliki versi 64 bit 12,10 dan tidak punya masalah seperti ini.
Ferenc Deak
Masalahnya masih ada di ubuntu 14.04 :-(. Solusi Anda dengan echo 3 hingga drop_caches berhasil. Ini terjadi setelah beberapa perilaku Inkscape yang sangat tidak jelas dengan clipboard tidak benar berbenturan dengan Netbeans ketika telah membuka 100 kotak pesan atau lebih ... Meskipun Inkscape terbunuh, itu meninggalkan beberapa kekacauan dalam sistem yang benar-benar melambat untuk membaca paket
Palo
Saya melihatnya kadang-kadang juga, dan solusi tidak bekerja untuk saya. Ini adalah sistem operasi 64 bit di sini, pada laptop samsung dengan ram i7 dan 8G. Hanya reboot yang membuat masalah hilang. Aneh.
Rmano
5

Saran di http://antti-juhani.kaijanaho.fi/newblog/archives/521 telah mempercepat saya beberapa kali di berbagai komputer:

sudo dpkg --clear-avail
sudo sync-available

(Blog juga merekomendasikan sudo dpkg --forget-old-unavailantara 2 langkah tetapi tampaknya sudah usang dan tidak diperlukan lagi.)

Beni Cherniavsky-Paskin
sumber
4

Ikuti langkah-langkahnya:

  • Bersihkan cache:

    sudo apt-get clean
    
  • Pindahkan sources.listsehingga apttidak bisa menggunakannya:

    mv /etc/apt/sources.list /etc/apt/sources.list1 && sudo apt-get update
    
  • Pindahkan kembali lalu perbarui:

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

Juga periksa dan hapus semua AKP dan jalur sumber yang tidak Anda butuhkan.

pecah
sumber
1

Di sistem saya, penyebabnya adalah nilai yang salah dalam LANGUAGE=variabel lingkungan. Itu harus memiliki nilai seperti en:fr:de, dan tidak 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=

Saat dijalankan (melalui strace), apt-get updateperintah akan berdentang saat read()panggilan berlangsung. Butuh waktu lama untuk mengeksekusi, dan memakan semua siklus yang tersedia dari satu inti 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

Jika saya menetapkan LANGUAGE=ke nilai yang benar (seperti en), semuanya kembali normal lagi:

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
sumber
Oh, dan tentu saja saya sendiri menempatkan nilai yang salah di sana beberapa tahun yang lalu. Lucunya, apt itu bekerja dengan sempurna sampai kemarin, setelah saya apt-get upgrade sistem (Debian sid).
shkitch
Saya tiba-tiba menemukan ini pada instalasi Debian Jessie 32-bit yang telah bekerja selama bertahun-tahun (puluhan tahun?). Tidak ada yang berubah dalam konfigurasi mesin, tetapi tiba-tiba mulai terjadi. Saya tidak memiliki LANGUAGE = diatur ke apa pun. Mengaturnya ke "en" atau menggunakan C untuk semua variabel lokal LC_ * belum membantu.
Brad Spencer