修復 Ubuntu 中的 「Unable to parse package file」 錯誤

2020-05-13 16:20:00

過去,我已經討論了許多 Ubuntu 更新錯誤。如果你使用命令列更新 Ubuntu,那可能會遇到一些“錯誤”。

其中一些“錯誤”基本上是內建功能,可防止對系統進行不必要的更改。在本教學中,我不會涉及那些細節。

在本文中,我將向你展示如何解決在更新系統或安裝新軟體時可能遇到的以下錯誤:

Reading package lists… Error!E: Unable to parse package file /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InReleaseE: The package lists or status file could not be parsed or opened.

在 Debian 中可能會遇到類似的錯誤:

E: Unable to parse package file /var/lib/apt/extended_states (1)

即使遇到 The package cache file is corrupted 也完全不必驚慌。這真的很容易“修復”。

在基於 Ubuntu 和 Debian 的 Linux 發行版中處理 “Unable to parse package file” 錯誤

以下是你需要做的。仔細檢視 Ubuntu 報錯檔案的名稱和路徑。

Reading package lists… Error!E: Unable to parse package file /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InReleaseE: The package lists or status file could not be parsed or opened.

例如,上面的錯誤是在報 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease 檔案錯誤。

這讓你想到這個檔案不正確。現在,你需要做的就是刪除該檔案並重新生成快取。

sudo rm <file_that_is_not_parsed>

因此,這裡我可以使用以下命令:sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease,然後使用 sudo apt update 命令重建快取。

給初學者的分步指導

如果你熟悉 Linux 命令,那麼可能知道如何使用絕對路徑刪除檔案。對於新手使用者,讓我指導你安全刪除檔案。

首先,你應該進入檔案目錄:

cd /var/lib/apt/lists/

現在刪除無法解析的檔案:

sudo rm archive.ubuntu.com_ubuntu_dists_bionic_InRelease

現在,如果你再次執行更新,將重新生成 apt 快取。

sudo apt update

有很多檔案無法解析?

如果你在更新系統時有一個或兩個檔案無法解析,那麼問題不大。但是,如果系統報錯有十個或二十個此類檔案,那麼一一刪除它們就太累了。

在這種情況下,你可以執行以下操作來刪除整個快取,然後再次生成它:

sudo rm -r /var/lib/apt/lists/*sudo apt update

解釋這為何能解決問題

/var/lib/apt 是與 apt 軟體包管理器相關的檔案和資料的儲存目錄。/var/lib/apt/lists 是用於儲存系統 source.list 中指定的每個軟體包資源資訊的目錄。

簡單點來說,/var/lib/apt/lists 儲存軟體包資訊快取。當你要安裝或更新程式時,系統會在此目錄中檢查該軟體包中的資訊。如果找到了該包的詳細資訊,那麼它將進入遠端倉庫並實際下載程式或其更新。

當你執行 sudo apt update 時,它將構建快取。這就是為什麼即使刪除 /var/lib/apt/lists 目錄中的所有內容,執行更新也會建立新的快取的原因。

這就是處理檔案無法解析問題的方式。你的系統報某個軟體包或倉庫資訊以某種方式損壞(下載失敗或手動更改 sources.list)。刪除該檔案(或所有檔案)並重建快取即可解決此問題。

仍然有錯誤?

這應該能解決你的問題。但是,如果問題仍然存在,或者你還有其他相關問題,請在評論欄告訴我,我將盡力幫助你。