Pertanyaan Bagaimana cara memperbaiki kesalahan "Masalah dengan MergeList" atau "file status tidak dapat diuraikan" saat mencoba melakukan pembaruan?


Komputer memberi saya output ini di jendela:

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Bagaimana saya bisa memperbaiki ini?


342
2018-03-12 17:13


asal


Itu terus membingungkan saya bagaimana canggung sistem operasi ini menangani pembaruannya, bahkan sekarang, bahwa ini dan hal-hal serupa diperlukan setelah tidak ada penyalahgunaan khusus oleh pengguna. - matt


Jawaban:


Perintah terminal ini harus menyelesaikan masalah Anda:

Pertama, hapus Daftar Penggabungan dengan membuka terminal (Tekan Ctrl+Alt+T untuk memulai) dan jalankan perintah ini *:

sudo rm -vf /var/lib/apt/lists/*

Selanjutnya, buat yang baru dengan menjalankan pembaruan sederhana:

sudo apt-get update

Ini dia laporan bug (dan lain) untuk masalah ini, yang sekarang sudah diperbaiki sehingga seharusnya tidak membuat file cacat baru, namun jika Anda sudah memiliki file yang salah, Anda harus menghapusnya seperti yang dijelaskan dalam posting ini.


* Opsi yang digunakan untuk rm adalah -v verbose

-v, --verbose                 jelaskan apa yang sedang dilakukan

dan -f memaksa

-f, --force                 abaikan file dan argumen tidak ada, tidak pernah meminta

Jika Anda tidak yakin tentang baris perintah atau opsi yang digunakan selalu merujuk pada halaman manual untuk perintahnya. Ini dapat diakses di internet dengan mencari manusia dan perintah misalnya man rm atau Anda dapat mengakses informasi yang sama dengan mengetikkan perintah yang persis sama di terminal misalnya man rm instruksi untuk berhenti halaman akan berada di bagian bawah terminal seperti ini

picture of man page options


473
2018-03-13 16:53



Satu orang menemukan dia harus melakukan dua langkah ini beberapa kali, tetapi akhirnya berhasil. - John S Gruber
Ini aneh untuk menempatkan -vf pada akhir rm perintah. - Keith Thompson
Itu tidak menyelesaikan masalah bagi saya. pembaruan masih menunjukkan kepada saya kesalahan itu. - marines
Ini masalah berulang. Itu terus terjadi sesekali. Apakah ada yang tahu penyebab masalah ini? - Rushil
Saya telah mengedit jawaban untuk memahami kemampuan @jasser - Allan


Buka Terminal dan jalankan perintah berikut satu per satu:

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

Lihat juga:


80
2018-02-08 18:37



apa yang dilakukan -vf? - speedox
@speedox, menurut man rm, -v berarti 'verbose', dan -f berarti 'kekuatan'. Dengan kata lain, hapus semua file yang ditunjuk tanpa disuruh dan beri tahu pengguna apa yang dilakukannya. - fouric
Dalam kasus saya, hanya melakukan sudo apt-get update memperbaiki masalah. Saya pikir Allan menyebutkan versi yang lebih baru dari apt mengoreksi ini secara otomatis, jadi mungkin coba saja pembaruannya terlebih dahulu. - ThorSummoner


Anda mengacaukan ketika Anda diedit /var/lib/dpkg/status. Pulihkan dari cadangan yang Anda buat sebelum mengeditnya. Tentu saja, Anda membuat cadangan, bukan?

Karena Anda tidak membuat cadangan, edit lagi, hati-hati. Cobalah untuk tidak menyebabkan lebih banyak kerusakan.

Kamu dapat memakai /var/lib/dpkg/status.old sebagai titik referensi. Ini adalah cadangan dari status file dari sebelum terakhir kali dpkg dijalankan. Menjalankan

diff /var/lib/dpkg/status.old /var/lib/dpkg/status

untuk melihat perbedaannya. Batalkan perubahan yang Anda buat secara manual, dan simpan perubahan yang dibuat oleh yang terakhir dpkg menjalankan.

Jika Anda benar-benar tidak dapat memperbaiki file, salin /var/lib/dpkg/status.old lebih /var/lib/dpkg/status. Anda akan mendapatkan database paket yang sudah kadaluarsa, tetapi ketinggalan zaman.

Anda tidak perlu mengedit /var/lib/dpkg/status dalam operasi normal. Bahkan apa pun yang terjadi salah serius, /var/lib/dpkg/status bukan sesuatu yang cenderung membutuhkan intervensi administrator. Apapun masalahmu crossplatformui adalah, mungkin ada cara yang lebih baik untuk menyelesaikannya. Satu-satunya waktu yang pernah saya butuhkan untuk mengedit /var/lib/dpkg/status adalah saat hulu Packages file rusak.


23
2018-05-13 15:37



Saya juga ingin tahu cara yang lebih baik yang Anda sebutkan untuk menghapus crossplatformui jika Anda bisa membantu karena saya mencoba segala cara yang mungkin untuk menghapusnya dan mencoba menemukan banyak solusi tetapi hanya yang telah saya sebutkan telah berhasil ... - Nirmik
@Nirmik Tidak tahu tentang crossplatformui. Tanyakan itu sebagai pertanyaan terpisah. Saya dapat memberitahu Anda bahwa dalam lebih dari satu dekade menggunakan dpkg, termasuk banyak sumber tidak resmi, saya sangat jarang diperlukan untuk mengedit status file, dan hanya jika ada repositori pihak ketiga yang rusak. - Gilles
Oke ... Thanx banyak sekali lagi .... seperti yang Anda sarankan saya akan posting sebagai pertanyaan baru :) juga karena Anda tampaknya pengguna yang sangat maju saya ingin bertanya apakah Anda tahu apa-apa tentang membuat HOT tidak berfungsi -KTEYS bekerja ?? (kunci nirkabel saya bekerja) - Nirmik
Mencoba untuk menempatkan yang lama di tempat yang baru, tidak memperbaiki bagi saya. :-( - Stéphane Gourichon
re: {Anda mengacaukan ketika Anda mengedit / var / lib / dpkg / status} seperti untuk saya - tidak, saya tidak, saya belum menyentuh file ini :) Namun ini hanya solusi yang menyelesaikan masalah di saya kasus. Terima kasih. - ruslo


aku melakukannya

sudo apt-get clean
sudo apt-get update

dan itu berhasil.


18
2017-07-31 13:34



Tidak memperbaiki untuk saya. :-( - Stéphane Gourichon


Ikuti langkah 2-5 di Prosedur Pemecahan Masalah Package Manager biasanya memecahkan masalah ini.

Untuk Langkah 2, nonaktifkan semua PPA Anda. Anda dapat menghapus centang semuanya di Sumber Perangkat Lunak dengan cara yang sama seperti Anda tidak mencentang hanya satu; Lihat Bagaimana cara menonaktifkan PPA tertentu?. Anda dapat mengaktifkannya kembali nanti.

Untuk langkah 3, tutup semua program terbuka yang Anda bisa. Mungkin aman untuk menjaga browser web tetap terbuka sehingga Anda memiliki instruksi di depan Anda. Tetapi sangat penting untuk memastikan bahwa setiap manajer paket tidak berlari. Ini termasuk Pusat Perangkat Lunak, Pembaruan Perangkat Lunak (Update Manager di versi Ubuntu yang lebih lama), Synaptic, dan Gdebi. Ini juga termasuk utilitas manajemen paket command-line seperti apt-get, dpkg, dan aptitude.

Perhatikan bahwa jika pengguna lain login pada saat yang sama, mereka harus log off jika memungkinkan.

Untuk langkah 4, buka jendela terminal. Salah satu cara untuk melakukan ini yang bekerja tidak peduli apa pun lingkungan desktop yang Anda gunakan, adalah menekan Ctrl+Alt+T.

Untuk langkah 5, jalankan perintah ini di jendela terminal:

ubuntu-support-status
sudo grep -R proxy /etc/apt/*
grep proxy  /etc/environment
echo $http_proxy
echo $ftp_proxy
grep proxy /etc/bash.bashrc
grep proxy ~/.bashrc
cat /etc/apt/apt.conf
sudo fuser -vvv /var/lib/dpkg/lock
sudo fuser -vvv /var/cache/apt/archives/lock
cat /etc/lsb-release
uname -a
sudo rm /var/lib/apt/lists/lock 
sudo rm  /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status  ||  sudo cp /var/backups/apt.extended_states.0 /var/lib/dpkg/status
sudo mv /var/lib/dpkg/available /var/lib/dpkg/available-bad
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo rm /var/cache/apt/*.bin
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000
sudo dpkg --configure -a
sudo dpkg --clear-avail
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade
find /etc/apt -name '*.list' -exec bash -c 'echo -e "\n$1\n"; cat -n "$1"' _ '{}' \;

Saya menyalin kata demi kata itu dari PackageManagementTroubleshoootingProcedure pada 2 Maret 2014. Perintah-perintah tersebut telah berevolusi di masa lalu dan perintah yang direkomendasikan dalam artikel itu dapat diubah atau diperluas lagi di masa depan. Jadi Anda mungkin ingin bekerja dari langkah 5 di sana. (Artikel itu, dibuat / diedit oleh "Kontributor untuk wiki dokumentasi Ubuntu" - khususnya Mark Rijckenberg--aku s berlisensi CC-BY-SA 3.0, yang memungkinkan penyertaan di sini dengan atribusi yang tepat.)

Beberapa dari perintah tersebut berusaha memperbaiki masalah (dan mungkin juga menampilkan informasi diagnostik); yang lain menampilkan informasi berharga tentang masalah yang dapat Anda sertakan dalam pertanyaan Anda atau berikan kepada seseorang yang membantu Anda. (Atau, tergantung pada kemampuan Anda, dapat memungkinkan kamu untuk mendiagnosis dan menyelesaikannya.)

Seringkali ini memperbaikinya tetapi ketika itu tidak sering memberikan informasi yang cukup untuk memperbaikinya.

Anda tidak harus secara manual mengetikkan perintah-perintah itu; Anda dapat menyalin dan menempelkannya. Saya menyarankan untuk menempel dan menjalankan masing-masing secara terpisah. Ini membuatnya lebih jelas apa output dari perintah mana.


16
2017-11-28 02:36



Saya menyalin seluruh blok dan tempel, bukannya menjalankan satu demi satu. Meskipun beberapa perintah dalam hal ini tidak berguna dan beberapa perintah gagal, tetapi akhirnya itu membantu dalam kasus saya - phuclv


Saya juga melihat masalah ini terjadi ketika Anda memiliki terlalu banyak sumber di repositori Anda.

Coba solusi yang diposting di atas dan / atau mungkin juga ini yang kadang-kadang direkomendasikan pada launchpad:

sudo mv /var/lib/apt/lists /var/lib/apt/lists-old
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get update

Beri tahu kami cara Anda melakukannya.


11
2018-05-08 10:19



Terima kasih! Ini tidak bekerja dengan DSL tanpa makedir juga. - Doug


Saya mengalami kesalahan serupa:

Reading package lists... Error!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/dpkg/status
E: The package lists or status file could not be parsed or opened.

Saya mengikuti saran yang serupa untuk menyalin status-old.

$ head /var/lib/dpkg/status
$ head /var/lib/dpkg/status-old

Semua file status saya kosong karena suatu alasan. Untungnya, saya menemukan ada cadangan file-file ini:

$ ls -l /var/backups/dpkg.status.*
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.0
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.1.gz
-rw-r--r-- 1 root root 128168 Sep 20  2013 /var/backups/dpkg.status.2.gz
-rw-r--r-- 1 root root 112545 Sep 16  2013 /var/backups/dpkg.status.3.gz
-rw-r--r-- 1 root root 107767 Sep 14  2013 /var/backups/dpkg.status.4.gz
-rw-r--r-- 1 root root 107766 Sep 11  2013 /var/backups/dpkg.status.5.gz
-rw-r--r-- 1 root root  94583 Sep 11  2013 /var/backups/dpkg.status.6.gz

Saya sudah memeriksa cadangan terbaru ...

$ head /var/backups/dpkg.status.0

... tapi masih kosong. Jadi saya membuka ritsleting yang lebih tua ...

$ gunzip /var/backups/dpkg.status.1.gz
$ head /var/backups/dpkg.status.1

Kali ini ada konten. Jadi saya menyalinnya ...

$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status

Kemudian apt-get update berlari tanpa masalah.

Kredit masuk ke pos ini.


4
2018-04-11 22:43





Saya memiliki masalah yang sama dan mencoba semua pemecahan masalah yang disebutkan dalam jawaban lainnya. Anehnya satu-satunya perbaikan adalah langkah yang berbeda:

  • Buka Perangkat Lunak & pembaruan -> Perangkat Lunak Ubuntu -> Unduh Dari -> Lainnya-> Pilih Server Terbaik

  • Tunggu tesnya. Pada akhir tes, server terbaik akan dipilih, tidak harus yang terdekat atau server utama atau server untuk lokal Anda.

  • Sekarang Reload Repo data, Ini akan selesai dengan benar.


3
2017-11-11 04:12