修復Ubuntu中的 “Unable to parse package file” 錯誤
摘要:例如,上面的錯誤是在報 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease 文件錯誤。因此,這裏我可以使用以下命令: sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease ,然後使用 sudo apt update 命令重建緩存。
過去,我已經討論了許多 Ubuntu 更新錯誤 。如果你 使用命令行更新 Ubuntu ,那可能會遇到一些“錯誤”。
其中一些“錯誤”基本上是內置功能,可防止對系統進行不必要的更改。在本教程中,我不會涉及那些細節。
在本文中,我將向你展示如何解決在更新系統或安裝新軟件時可能遇到的以下錯誤:
Reading package lists… Error! E: Unable to parse package file /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease E: 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_InRelease E: 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
)。刪除該文件(或所有文件)並重建緩存即可解決此問題。