سؤال كيف أقوم بإصلاح خطأ "مشكلة مع MergeList" أو "تعذر تحليل ملف الحالة" عند محاولة إجراء تحديث؟


أعطاني الكمبيوتر هذا الإخراج في نافذة:

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.

كيف يمكنني اصلاح هذا؟


342
2018-03-12 17:13


الأصل


إنها تحافظ على حيرتي في كيفية معالجة نظام التشغيل هذا لتحديثاته ، حتى الآن ، أن هذه الأشياء المماثلة مطلوبة بعد عدم إساءة الاستخدام الخاصة من قبل المستخدم. - matt


الأجوبة:


يجب على هذه الأوامر الطرفية حل مشكلتك:

أولا إزالة قائمة الدمج عن طريق فتح محطة (الصحافة السيطرة+البديل+تي لإطلاق) وتشغيل هذا الأمر *:

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

بعد ذلك ، أنشئ واحدة جديدة عن طريق تشغيل تحديث بسيط:

sudo apt-get update

هنا هو تقرير الشوائب (و آخر) لهذه المشكلة ، والتي تم إصلاحها الآن بحيث لا يجب إنشاء ملفات جديدة تالفة ، ولكن إذا كان لديك بالفعل الملفات المشوهة تحتاج إلى إزالتها كما هو موضح في هذا المنصب.


* الخيارات المستخدمة ل rm هي -v مطنب

-v ، --verbose                 شرح ما يجري القيام به

و -f فرض

-f، --force                 تجاهل الملفات والحجج غير الموجودة ، وعدم المطالبة مطلقًا

إذا كنت غير متأكد من أي وقت مضى حول سطر الأوامر أو الخيارات المستخدمة دائما تشير إلى صفحة دليل للقيادة. يمكن الوصول إلى هذه على الإنترنت من خلال البحث عن الرجل والأمر على سبيل المثال رجل rm أو يمكنك الوصول إلى نفس المعلومات عن طريق كتابة نفس الأمر بالضبط في المحطة على سبيل المثال man rm ستكون تعليمات الإقلاع عن التدخين في أسفل الجهاز مثل هذا

picture of man page options


473
2018-03-13 16:53



وجد شخص واحد أنه اضطر إلى القيام بهذين الخطوتين عدة مرات ، لكنها عملت في نهاية المطاف. - John S Gruber
من الغريب أن نضع -vf عند نهاية ال rm أمر. - Keith Thompson
لم يحل المشكلة بالنسبة لي. التحديث لا يزال يظهر لي هذا الخطأ. - marines
هذه مشكلة متكررة. لا يزال يحدث من حين لآخر. هل أي شخص على علم سبب هذه المشكلة؟ - Rushil
لقد قمت بتحرير الجواب لفهم القدرة @ جاسر - Allan


افتح Terminal وقم بتشغيل الأوامر التالية واحدًا في كل مرة:

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

أنظر أيضا:


80
2018-02-08 18:37



ماذا يفعل -vf؟ - speedox
speedox ، وفقا ل man rm، -v يعني "مطول" ، و -f يعني "القوة". بمعنى آخر ، قم بإزالة كافة الملفات المعينة دون المطالبة وإخبار المستخدم بما يقوم به. - fouric
في حالتي ، مجرد القيام sudo apt-get update حل المشكلة. أعتقد أن ألان ذكر إصدارات جديدة من apt تصحيح هذا تلقائيا ، لذلك ربما حاول التحديث فقط أولا. - ThorSummoner


لقد ثملتك عندما قمت بتحرير /var/lib/dpkg/status. قم باستعادتها من النسخة الاحتياطية التي قمت بها قبل تحريرها. بالطبع ، قمت بعمل نسخة احتياطية ، أليس كذلك؟

نظرًا لعدم إنشاء نسخة احتياطية ، عدِّلها مرة أخرى ، بحرص. حاول ألا تسبب المزيد من الضرر.

يمكنك استخدام /var/lib/dpkg/status.old كنقطة مرجعية. هذا هو نسخة احتياطية من status ملف من قبل آخر مرة dpkg كان يركض. يركض

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

لمعرفة الاختلافات. التراجع عن التغييرات التي أجريتها يدويًا ، واحتفظ بالتغييرات التي أجريتها آخر dpkg يركض.

إذا كنت لا تستطيع حقاً إصلاح الملف ، فقم بنسخه /var/lib/dpkg/status.old على /var/lib/dpkg/status. سوف تحصل على قاعدة بيانات حزمة جيدة التشكيل ، ولكنها قديمة.

لا تحتاج أبدًا إلى التعديل /var/lib/dpkg/status في التشغيل العادي. حتى الأمور تبدو خاطئة بشكل خطير ، /var/lib/dpkg/status ليس شيئًا يميل إلى التدخل الإداري. مهما كانت مشكلتك مع crossplatformui كانت ، ربما هناك طريقة أفضل لحلها. المرة الوحيدة التي احتجت فيها لتحرير /var/lib/dpkg/status كان عندما المنبع Packages تم كسر الملف.


23
2018-05-13 15:37



وأود أيضا أن تعرف الطريقة الأفضل التي ذكرتها لإزالة crossplatformui إذا كان يمكن أن تساعد Coz حاولت كل طريقة ممكنة لإزالتها وحاولت إيجاد حلول كثيرة ولكن فقط لقد ذكرتها عملت ... - Nirmik
Nirmik لا توجد فكرة عن crossplatformui. اطلب ذلك كسؤال منفصل. استطيع ان اقول لكم انه في اكثر من عقد من استخدام dpkg، بما في ذلك العديد من المصادر غير الرسمية ، نادرًا جدًا ما أحتاج إلى تحرير status الملف ، وفقط عندما يكون هناك مستودع طرف ثالث مكسور. - Gilles
حسنا ... ثناكس مرة أخرى الكثير .... كما تقترح سأقوم بنشرها كسؤال جديد :) كما يبدو أنك مستخدم متقدم للغاية أود أن أسألك إذا كنت تعرف أي شيء عن جعل غير فعال HOT -KTEYS العمل؟ (العمل اللاسلكي الأساسي الخاص بي) - Nirmik
حاول أن يضع القديم بدلا من الجديد ، لم يصلح بالنسبة لي. :-( - Stéphane Gourichon
إعادة: {لقد ثمل عندما قمت بتحرير / var / lib / dpkg / status} بالنسبة لي - لا ، أنا لست كذلك ، لم ألمس هذا الملف :) لكن هذا هو الحل الوحيد الذي يحل المشكلة في قضية. شكرا لكم. - ruslo


فعلت

sudo apt-get clean
sudo apt-get update

وعملت.


18
2017-07-31 13:34



لم يصلح لي. :-( - Stéphane Gourichon


اتباع الخطوات 2-5 في مدير حزمة استكشاف الأخطاء وإصلاحها يحل عادة هذه المشكلة.

إلى عن على الخطوة 2، تعطيل الكل PPAs الخاص بك. يمكنك إلغاء تحديد كل منهم في "مصادر البرامج" بالطريقة نفسها التي تقوم بإلغاء تحديدها واحد فقط؛ نرى كيفية تعطيل PPA معين؟. يمكنك إعادة تمكينها لاحقًا.

إلى عن على الخطوه 3أغلق أي برامج مفتوحة يمكنك. من المحتمل أن يكون آمنًا للحفاظ على متصفح الويب الخاص بك مفتوحًا بحيث يكون لديك تعليماتك أمامك. ولكن من المهم بشكل خاص التأكد من وجود أي مديري حزم لا يعمل. وهذا يشمل مركز البرامج ، ومُحدِّث البرامج (مدير التحديث في الإصدارات الأقدم من أوبونتو) ، و Synaptic ، و Gdebi. ويشمل أيضا المرافق إدارة حزمة سطر الأوامر مثل apt-get، dpkgو aptitude.

لاحظ أنه إذا مستخدمين آخرين يتم تسجيل الدخول في نفس الوقت ، يجب عليهم تسجيل الخروج إن أمكن.

إلى عن على الخطوة 4، افتح نافذة طرفية. طريقة واحدة للقيام بذلك تعمل بغض النظر عن بيئة سطح المكتب التي تستخدمها ، هي الضغط السيطرة+البديل+تي.

إلى عن على الخطوة 5قم بتشغيل هذه الأوامر في نافذة المحطة الطرفية:

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

لقد قمت بنسخ هذه المحاضر حرفيًا من PackageManagementTroubleshoootingProcedure في 2 مارس 2014. تطورت هذه الأوامر في الماضي والأوامر الموصى بها في هذه المقالة يمكن تغييره أو توسيعه مرة أخرى في المستقبل. لذلك قد ترغب في العمل من الخطوة 5 هناك. (هذه المقالة ، خلق / تحرير بواسطة "المساهمين في ويكي وثائق أوبونتو" - خاصة مارك ريكنبرغ--هو مرخص CC-BY-SA 3.0، والذي يسمح بالتضمين هنا مع الإحالة الصحيحة.)

بعض هذه الأوامر تحاول إصلاح المشكلة (وقد تظهر أيضًا معلومات تشخيصية) ؛ يعرض الآخرون معلومات قيمة حول المشكلة التي يمكنك تضمينها في سؤالك أو تقديم أي شيء آخر إلى شخص يساعدك. (أو ، اعتمادا على مهاراتك ، قد تمكن أنت لتشخيصها وحلها.)

غالبًا ما يعمل ذلك على إصلاحه ، ولكن عندما لا يكون ذلك غالبًا ما يقدم معلومات كافية لإصلاحه.

ليس عليك كتابة تلك الأوامر يدويًا ؛ يمكنك نسخها ولصقها. أوصي لصق وتشغيل كل واحد على حدة ، على الرغم من. هذا يجعلها أكثر وضوحا ما هو الإخراج من أي أوامر.


16
2017-11-28 02:36



لقد قمت بنسخ الكتلة بأكملها ولصقها بدلاً من تشغيل واحد تلو الآخر. على الرغم من أن عدة أوامر في هذا غير مجدية وفشلت بعض ، ولكن في النهاية أنها تساعد في حالتي - phuclv


لقد رأيت أيضًا هذه المشكلة تحدث عندما يكون لديك العديد من المصادر في عمليات الشراء الخاصة بك.

جرب الحل المنشور أعلاه و / أو ربما أيضًا هذا الموصى به أحيانًا على لوحة بدء التشغيل:

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

دعونا نعرف كيف تحصل على.


11
2018-05-08 10:19



شكرا! هذا لم يعمل مع DSL دون makedir كذلك. - Doug


كنت أواجه خطأ مشابه:

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.

لقد اتبعت اقتراحات مماثلة للنسخ status-old.

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

جميع ملفات حالتي كانت فارغة لسبب ما. لحسن الحظ ، وجدت أن هناك نسخ احتياطية من هذه الملفات:

$ 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

راجعت أحدث نسخة احتياطية ...

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

... لكنه كان لا يزال فارغًا. لذلك قمت بفك ضغط أحد كبار السن ...

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

هذه المرة كان هناك محتوى. لذلك أنا نسخها ...

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

ثم apt-get update ركض دون مشاكل.

الائتمان يذهب إلى هذا المنصب.


4
2018-04-11 22:43





واجهت نفس المشكلة وحاولت جميع استكشاف الأخطاء وإصلاحها المذكورة في إجابات أخرى. ومن الغريب أن الإصلاح الوحيد كان خطوة مختلفة:

  • انتقل إلى البرامج والتحديثات -> برامج Ubuntu -> تنزيل من -> Other-> Select Best Server

  • انتظر الاختبارات. في نهاية الاختبارات ، سيتم اختيار أفضل خادم ، وليس بالضرورة أقرب واحد ولا الخادم الرئيسي أو الخادم الخاص بك.

  • الآن إعادة تحميل Repo البيانات ، وسوف ينتهي بشكل صحيح.


3
2017-11-11 04:12