更新を試みるときに「MergeListの問題」または「ステータスファイルを解析できませんでした」エラーを修正するにはどうすればよいですか?


355

コンピューターはこの出力をウィンドウに表示しました:

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.

どうすれば修正できますか?


7
このオペレーティングシステムがその更新をどのように扱いにくいのか、今でも、ユーザーによる特別な誤用がなくてもこれや同様のものが必要であることに困惑し続けます。
マット

回答:


485

次の端末コマンドで問題を解決できます。

まず、ターミナルを開いて(マージするにはCtrl+ AltキーTを押して)マージリストを削除し、次のコマンドを実行します*:

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

次に、簡単な更新を実行して新しいものを生成します。

sudo apt-get update

以下に、この問題のバグレポート(および別のレポート)を示します。この問題は修正され、新しい不正なファイルを作成しないようになりました。


* rmに使用されるオプションは-v冗長です

-v、-verboseは何が行われているかを説明します

そして-f

-f、-force存在しないファイルと引数を無視し、プロンプトを表示しない

コマンドラインや使用されているオプションがわからない場合は、常にコマンドのマニュアルページを参照してください。これらはmanとrmなどのコマンドを検索することでインターネット上でアクセス できます。たとえば、端末で正確に同じコマンドを入力して同じ情報にアクセスできます。たとえばman rm、ページを終了するための指示は端末の下部にこの

マニュアルページオプションの画像


8
ある個人は、これらの2つのステップを複数回行う必要がありましたが、最終的には機能することを発見しました。
ジョンSグルーバー

5
コマンドの-vf最後に置くのは奇妙rmです。
キーストンプソン14年

6
それは私にとって問題を解決しませんでした。更新ではまだそのエラーが表示されます。
海兵隊14

1
これは繰り返し発生する問題です。それは時々起こり続けます。誰もがこの問題の原因を知っていますか?
ラッシルポール

1
私は理解能力@jasser-
アラン

82

ターミナルを開き、次のコマンドを一度に1つずつ実行します。

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

こちらもご覧ください:


1
-vfは何をしますか?
speedox

5
@speedoxは、によればman rm-v「冗長」を-f意味し、「力」を意味します。つまり、プロンプトを表示せずに指定されたすべてのファイルを削除し、ユーザーにその実行内容を伝えます。
-fouric

私の場合、sudo apt-get update問題を修正するだけです。アランはaptの新しいバージョンがこれを自動的に修正すると述べたと思うので、最初にアップデートを試してみてください。
ThorSummoner

23

あなたが編集したときに失敗しました/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ファイルが壊れたときだけでした。


また、私は...あなたが私はそれを削除するためにあらゆる可能な方法を試してみましたが、多くのソリューションを見つけることを試みたが、私が述べてきただけに働いているだって助けることができればcrossplatformuiを削除するために言及したより良い方法を知りたいのですが
Nirmik

1
@Nirmikについてはわかりませんcrossplatformui。別の質問として質問してください。dpkg多くの非公式ソースを含め、10年以上使用してきたstatusが、壊れたサードパーティのリポジトリがある場合にのみ、ファイルを編集する必要はほとんどありませんでした。
ジル

さて...もう一度ありがとう....あなたが提案するように、新しい質問として投稿することを提案します:)また、非常に高度なユーザーのように見えるので、機能しないHOTの作成について何か知っているかどうか尋ねたいと思います-KTEYSの仕事?? (私のワイヤレスキーは動作しません)
ニルミック

新しいものの代わりに古いものを置いてみましたが、私のために修正しませんでした。:-(
ステフェイン・グーリッホン

1
re:{/ var / lib / dpkg / statusを編集したときに台無しになりました}-私はそうではありません、私はこのファイルに触れていません:)しかし、これは私の問題を解決する唯一の解決策です場合。ありがとうございました。
ruslo


16

通常、パッケージマネージャーのトラブルシューティング手順の手順2〜5に従って、この問題を解決します。

以下のためのステップ2、無効にすべてのあなたのPPAを。1つだけチェックを外すのと同じ方法で、ソフトウェアソースですべてのチェックを外すことができます。特定のPPAを無効にする方法をご覧ください。後で再度有効にすることができます。

以下のためのステップ3は、することができ開いているプログラムをすべて閉じます。Webブラウザを開いたままにしておくと、指示が目の前にあるので、おそらく安全です。ただし、パッケージマネージャーが実行されいないことを確認することが特に重要です。これには、Software Center、Software Updater(Ubuntuの古いバージョンのUpdate Manager)、Synaptic、およびGdebiが含まれます。それはまたのようなコマンドラインのパッケージ管理ユーティリティが含まれapt-getdpkgaptitude

他のユーザーが同時にログオンしている場合、可能であればログオフする必要があることに注意してください。

ためのステップ4、ターミナルウィンドウを開きます。使用するデスクトップ環境に関係なく機能するこれを行う1つの方法は、Ctrl+ Alt+ を押すことですT

以下のためにステップ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"' _ '{}' \;

これらのコマンドは、2014年3月2日にPackageManagementTroubleshoootingProcedureからそのままコピーしました。これらのコマンドは過去に進化しており、その記事の推奨コマンドは将来変更または拡張される可能性があります。したがって、ステップ5から作業することもできます。(その記事、作成/編集した「UbuntuのドキュメントWikiへの貢献者」で-特にマークRijckenbergが --is CC-BY-SA 3.0のライセンス。適切な帰属をここに含めることができます)

これらのコマンドの一部は、問題の修正を試みます(また、診断情報を表示する場合があります)。他の人は、あなたが質問に含めることができるか、そうでなければあなたを助ける誰かに提供できる問題に関する貴重な情報を表示します。(または、スキルによっては、診断して解決できる場合があります。)

多くの場合、これにより修正されますが、修正されない場合は、修正するのに十分な情報が提供されることがよくあります。

これらのコマンドを手動で入力する必要はありません。それらをコピーして貼り付けることができます。ただし、それぞれを個別に貼り付けて実行することをお勧めします。これにより、どのコマンドからの出力がより明確になります。


1つずつ実行する代わりに、ブロック全体をコピーして貼り付けました。これのいくつかのコマンドは役に立たず、いくつかは失敗しましたが、最終的には私の場合に役立ちます
-phuclv

11

リポジトリにソースが多すぎる場合にも、この問題が発生するのを見てきました。

上記のソリューションを試してみてください。また、ランチパッドで推奨されることもあります。

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

乗車方法をお知らせください。


ありがとうございました!これは、makedirなしではDSLでも機能しませんでした。
ダグ

4

私は同様のエラーに遭遇していました:

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、問題なく実行されました。

クレジットはこの投稿にあります。


3

私は同じ問題を抱えており、他の回答に記載されているすべてのトラブルシューティングを試しました。奇妙なことに、唯一の修正は異なるステップでした。

  • ソフトウェアとアップデート-> Ubuntuソフトウェア->ダウンロード元->その他->サーバーの選択を選択します。

  • テストを待ちます。テストの最後に、最適なサーバーが選択されます。必ずしも最も近いサーバーでも、メインサーバーでも、ロケールのサーバーでもありません。

  • Repoデータをリロードし、適切に終了します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.