Güncelleme yapmaya çalışırken "MergeList ile ilgili bir sorun" veya "durum dosyası ayrıştırılamadı" hatasını nasıl düzeltirim?


355

Bilgisayar bu çıktıyı bir pencerede verdi:

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.

Bunu nasıl düzeltebilirim?


7
Bu işletim sisteminin güncellemelerini ne kadar garip bir şekilde ele aldığını, şu anda bile, kullanıcı tarafından özel bir suiistimal edilmeden sonra buna ve benzer şeylere ihtiyaç duyulduğuna şaşırtıyor.
Matt

Yanıtlar:


485

Bu terminal komutları probleminizi çözmelidir:

Önce bir terminal açarak Birleştirme Listesini kaldırın ( başlatmak için Ctrl+ Alt+ tuşlarına basın T) ve bu komutu çalıştırın *:

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

Ardından, basit bir güncelleme çalıştırarak yeni bir tane oluşturun:

sudo apt-get update

İşte şimdi düzeltilen ve bu nedenle yanlış biçimlendirilmiş yeni dosyalar oluşturmamalı olan, bu sorun için hata raporu (ve başka bir ), ancak zaten hatalı biçimlendirilmiş dosyalar varsa, bu yayında açıklandığı şekilde onları kaldırmanız gerekir.


* Rm için kullanılan seçenekler -vayrıntılı

-v, --verbose ne yapıldığını açıkla

ve -fkuvvet

-f, --force var olmayan dosyaları ve argümanları yoksay, asla sorma

Bir komut satırı ya da kullanılan seçeneklerden hiç emin değilseniz, her zaman komutun kılavuz sayfasına bakın . Bunlara internette insan aranarak, örneğin insanın rm komutu ile erişilebilir ya da terminale tamamen aynı komutu yazarak aynı bilgilere erişebilirsiniz, örneğin man rmsayfadan çıkmak için talimatlar terminalin altında olacaktır. bu

man sayfa seçeneklerinin resmi


8
Bir kişi bu iki adımı defalarca yapmak zorunda olduğunu, ancak sonunda çalıştığını tespit etti.
John S Gruber

5
Komutun -vfsonuna koymak garip rm.
Keith Thompson

6
Bu benim için sorunu çözmedi. güncelleme hala bu hatayı gösteriyor.
marines

1
Bu tekrarlayan bir sorundur. Arada bir oluyor. Bu sorunun nedeninin farkında olan var mı?
Rushil Paul

1
Anlama yeteneği için cevabı değiştirdim @jasser
Allan

82

Bir Terminal açın ve aşağıdaki komutları teker teker çalıştırın:

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

Ayrıca bakınız:


1
-vf ne yapar?
speedox

5
@speedox göre man rm, -v'ayrıntılı' anlamına gelir ve -fdemektir 'kuvvet'. Başka bir deyişle, belirtilen dosyaları sormadan kaldırın ve kullanıcıya ne yaptığını söyleyin.
fouric

Benim durumumda sadece sudo apt-get updatesorunu çözmek sorunu çözdü. Bence Allan, apt'nin yeni sürümlerinden otomatik olarak bunu düzelttiğinden bahsetti, o yüzden belki önce güncellemeyi dene.
ThorSummoner

23

Düzenlerken berbat ettin /var/lib/dpkg/status. Düzenlemeden önce yaptığınız yedekten geri yükleyin. Tabii ki bir yedekleme yaptın, değil mi?

Yedeklemediğiniz için tekrar dikkatlice düzenleyin . Daha fazla hasara yol açmamaya çalışın.

/var/lib/dpkg/status.oldReferans noktası olarak kullanabilirsiniz . Bu, statusdosyanın son dpkgçalıştırılmasından önceki bir yedeğidir. Çalıştırmak

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

farklılıkları görmek için. El ile yaptığınız değişiklikleri geri alın ve son dpkgçalıştırmada yapılan değişiklikleri saklayın .

Eğer gerçekten dosyayı onarmak için yönetemez kopyalayıp /var/lib/dpkg/status.oldüzerinde /var/lib/dpkg/status. İyi biçimlendirilmiş ancak güncel olmayan bir paket veritabanı elde edersiniz.

/var/lib/dpkg/statusNormal operasyonda asla düzenleme yapmanıza gerek yoktur . İşlerin ciddi şekilde yanlış gittiği durumlarda bile, /var/lib/dpkg/statusyönetici müdahalesi gerektiren bir şey değil. Sorunlarınız ne olursa olsun, crossplatformuibunları çözmenin daha iyi bir yolu olabilir. Şimdiye kadar düzenlemem gereken tek zaman /var/lib/dpkg/statusyukarı akış Packagesdosyasının kırıldığı zamandı .


Coz yardımcı olabilirseniz crossplatformui'yi kaldırmak için bahsettiğinizin daha iyi bir yolunu da bilmek isterim, onu çıkarmak için her türlü yolu denedim ve birçok çözüm bulmaya çalıştım ama yalnızca bahsettiğimden biri işe yaradı ...
Nirmik

1
@Nirmik Hakkında hiçbir fikir yok crossplatformui. Bunu ayrı bir soru olarak sorun. dpkgBirçok resmi olmayan kaynak dahil, on yıldan daha uzun bir süre kullanıldığında , statusdosyayı düzenlemek için çok nadiren ihtiyacım olduğunu ve yalnızca bozuk bir üçüncü taraf depo olduğu zaman söyleyebilirim .
Gilles,

Tamam ... Bir kez daha çok teşekkür ederim .... önerdiğin gibi yeni bir soru olarak gönderirim :) çok ileri düzey bir kullanıcı gibi göründüğün gibi SICAK olmayan bir şey yapmanın hakkında bir şey biliyorsan sana sormak isterim -TAMAMALAR işe yarıyor mu? (kablosuz anahtarım çalışmıyor)
Nirmik

Eskiyi yenisine yerleştirmeye çalıştım, benim için düzelmedi. :-(
Stéphane Gourichon

1
re: {Benim için olduğu gibi / var / lib / dpkg / status} 'ı düzenlediğinde berbat ettin - hayır, hayır, ben bu dosyaya dokunmadım :) Ancak bu benim sorunumu çözen tek çözüm durum. Teşekkür ederim.
ruslo


16

Paket Yöneticisi Sorun Giderme Prosedürü'ndeki 2-5 adımlarını takip etmek genellikle bu sorunu çözer.

2. adım için tüm PPA'larınızı devre dışı bırakın. Yazılım Kaynaklarında bunların tümünü, yalnızca birini seçmiş olduğunuz gibi kaldırabilirsiniz; bkz belirli bir PPA nasıl devre dışı bırakılır? . Onları daha sonra yeniden etkinleştirebilirsiniz.

İçin 3. adımda yapabilirsiniz tüm açık programları kapatın. Web tarayıcınızı açık tutmak büyük olasılıkla güvenlidir, böylece talimatlarınız önünüzde olur. Ancak, herhangi bir paket yöneticisinin çalışmadığından emin olmak özellikle önemlidir . Buna Yazılım Merkezi, Yazılım Güncelleyici (Ubuntu'nun eski sürümlerinde Güncelleme Yöneticisi), Synaptic ve Gdebi dahildir. Aynı zamanda gibi komut satırı paket yönetim yardımcı programlarını içeren apt-get, dpkgve aptitude.

Eğer unutmayın diğer kullanıcıların aynı anda oturum açmış olan mümkünse, onlar oturumu kapatın gerekir.

İçin aşama 4'te , bir terminal penceresi açılır. Hangi masaüstü ortamını kullanırsanız kullanın, bunu yapmanın bir yolu da Ctrl+ Alt+ tuşlarına basmaktır T.

5. adım için bu komutları terminal penceresinde çalıştırın:

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"' _ '{}' \;

2 Mart 2014 tarihinde PackageManagementTroubleshoootingProcedure'daki sözlü ifadeyi kopyaladım . Bu komutlar geçmişte gelişti ve bu makalede önerilen komutlar gelecekte tekrar değiştirilip genişletilebilir . Yani orada 5. adımdan itibaren çalışmak isteyebilirsiniz . (O makale, yaratılan / düzenlenen "Ubuntu belgeleme wiki Katkıda" tarafından - özellikle Mark Rijckenberg --is CC-BY-SA 3.0 lisanslı . Sahibinin uygun olan buradan eklenmesini sağlar)

Bu komutlardan bazıları sorunu gidermeye çalışır (ayrıca tanılama bilgilerini de gösterebilir); diğerleri, sorunuza ekleyebileceğiniz veya başka bir şekilde size yardımcı olacak birisine sağlayabileceğiniz sorun hakkında değerli bilgiler gösterir. (Veya becerilerinize bağlı olarak, tanı koymanıza ve çözmenize olanak sağlayabilir .)

Genellikle bu sorunu giderir, ancak çalışmadığı zamanlarda düzeltmek için yeterli bilgi verir.

Bu komutları manuel olarak yazmak zorunda değilsiniz; kopyalayıp yapıştırabilirsiniz. Yine de her birini ayrı ayrı yapıştırıp çalıştırmanızı tavsiye ederim. Bu, hangi komutun hangi çıktıya ait olduğunu daha net gösterir.


Teker teker çalıştırmak yerine tüm bloğu kopyalayıp yapıştırdım. Her ne kadar
buradaki

11

Bu sorunun, depolarınızda çok fazla kaynak bulunduğunda ortaya çıktığını da gördüm.

Yukarıda yayınlanan çözümü ve / veya belki de piyasaya sürülen bazı sayfalarda önerilenleri deneyin:

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

Nasıl geçtiğinizi bize bildirin.


Teşekkür ederim! Bu DSL ile de makedir olmadan çalışmadı.
Doug

4

Benzer bir hatayla karşılaşıyordum:

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.

Kopyalamak için benzer önerileri takip ettim status-old.

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

Durum dosyalarımın tümü bir nedenden dolayı boştu. Neyse ki, bu dosyaların yedekleri olduğunu öğrendim:

$ 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

En son yedeği kontrol ettim ...

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

... ama yine de boştu. Bu yüzden eski birini açtım ...

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

Bu sefer içerik vardı. Bu yüzden kopyaladım ...

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

Sonra apt-get updatesorunsuz koştu.

Kredi bu yazıya gider.


3

Aynı sorunu yaşadım ve diğer cevaplarda belirtilen tüm sorun giderme yöntemlerini denedim. Garip bir şekilde tek düzeltme farklı bir adımdı:

  • Yazılım ve güncellemeler -> Ubuntu Yazılımı -> İndirme -> Diğer-> En İyi Sunucuyu Seçin

  • Testleri bekleyin. Testlerin sonunda en iyi sunucu seçilecektir, mutlaka en yakın sunucuya ya da ana sunucuya ya da bulunduğunuz yerdeki sunucuya değil.

  • Şimdi Repo verilerini yeniden yükle, Düzgün bitecek.

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.