1. 程式人生 > >Ubuntu16.04 報錯資訊處理

Ubuntu16.04 報錯資訊處理

系統版本:Ubuntu 16.04LTS

1.提示系統更新升級,報錯 /boot空間不足

2.根據網路,為獲得/boot 空間,選擇刪除多餘的核心檔案

2.1 查詢系統當前核心

輸入指令
uname -a
獲得結果
Linux xplanet-Aspire-E1-471G 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
加粗部分為版本號。

2.2檢視系統現有核心檔案

輸入指令
dpkg –get-selections |grep linux-image


輸出結果
ii linux-image-4.4.0-31-generic 4.4.0-31.50 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-4.4.0-78-generic 4.4.0-78.99 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-31-generic 4.4.0-31.50 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP

可以看到,除了當前使用的4.4.0.72核心,系統內還有4.4.0.31、4.4.0.78兩個核心。

2.3 清除多餘核心檔案

輸入指令
sudo apt-get remove linux-image-4.4.0-31-generic

正常情況下,4.4.0-31-generic會被刪除,但我的程式出現了 報錯

報錯資訊
File “/usr/bin/pyclean”, line 63
except (IOError, OSError), e:
^
SyntaxError: invalid syntax
dpkg:警告:子程序 舊的 pre-removal 指令碼 返回錯誤狀態 1


dpkg: 現在嘗試使用新軟體包所帶的指令碼…
File “/usr/bin/pyclean”, line 63
except (IOError, OSError), e:
^
SyntaxError: invalid syntax
dpkg: 處理歸檔 /var/cache/apt/archives/apport_2.20.1-0ubuntu2.5_all.deb (–unpack)時出錯:
子程序 新的 pre-removal 指令碼 返回錯誤狀態 1
Traceback (most recent call last):
File “/usr/bin/pycompile”, line 35, in
from debpython.version import SUPPORTED, debsorted, vrepr, \
File “/usr/share/python/debpython/version.py”, line 24, in
from ConfigParser import SafeConfigParser
ImportError: No module named ‘ConfigParser’
dpkg:清理時出錯:
子程序 已安裝 post-installation 指令碼 返回錯誤狀態 1
在處理時有錯誤發生:
/var/cache/apt/archives/apport_2.20.1-0ubuntu2.5_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

共有三個報錯:

  1. 子程序 舊的 pre-removal 指令碼 返回錯誤狀態 1
  2. 子程序 新的 pre-removal 指令碼 返回錯誤狀態 1
  3. 子程序 已安裝 post-installation 指令碼 返回錯誤狀態 1

2.3.1 解決“ pre-removal指令碼 返回錯誤狀態1 的報錯”

根據網路,執行

sudo gedit /var/lib/dpkg/status

“找到Package: ,比如Package: vsftpd
刪除這部分的描述,刪到下個Package: XXX前就好。
存檔後,再進行操作就OK了”

我打開了status文件,尋找linux 核心對應的package,只找到了一個linux-base的package,刪掉了對應描述,失手沒有備份。

執行以下命令,繼續刪除核心

sudo apt-get autoremove linux-image-4.4.0-31-generic

報錯如下
您可能需要執行“apt-get -f install”來糾正下列錯誤:
下列軟體包有未滿足的依賴關係:
initramfs-tools : 依賴: linux-base 但是它將不會被安裝
linux-image-extra-4.4.0-31-generic : 依賴: linux-image-4.4.0-31-generic 但是它將不會被安裝
E: 有未能滿足的依賴關係。請嘗試不指明軟體包的名字來執行“apt-get -f install”(也可以指定一個解決辦法)。

看來我的package刪錯了。
依據提示,執行

sudo apt-get -f install

再次報錯,這次的錯誤資訊有

序號 錯誤
1 子程序 舊的 pre-removal 指令碼 返回錯誤狀態 1
2 子程序 新的 pre-removal 指令碼 返回錯誤狀態 1
3 ImportError: No module named ‘ConfigParser’
4 子程序 已安裝 post-installation 指令碼 返回錯誤狀態 1

發現一個新的 錯誤,No module named ‘ConfigParser’

2.3.2 解決報錯ImportError: No module named ‘ConfigParser’

經查詢,報錯原因是因為
在Python 3中, ConfigParser 被重新命名為 configparser
而我使用到的package 不支援pyhton3,沒有更新。

之前因為學習需要,我將系統預設的Python2改為指向Python3,導致了這一問題。

2.3.3設定Python2與Python3的切換

執行以下指令,設定Python2和Python3作為alteratives

sudo update-alternatives –install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives –install /usr/bin/python python /usr/bin/python3 150

以後可以隨時使用以下指令來更換Python2和Python3

sudo update-alternatives –config python

得到如下輸出

選擇 路徑 優先順序 狀態
————————————————————————
* 0 /usr/bin/python3 150 自動模式
1 /usr/bin/python2 100 手動模式
2 /usr/bin/python3 150 手動模式
要維持當前值[*]請按<回車鍵>,或者鍵入選擇的編號:

輸入對應編號就可以啦。

2.3.4 解決“子程序 已安裝 post-installation 指令碼 返回錯誤狀態 1”

更改了預設的Python版本後,
重新執行指令,仍然報錯,但是隻剩下
子程序 已安裝 post-installation 指令碼 返回錯誤狀態 1
這一類錯誤了。
解決方法
執行如下指令

sudo rm /var/lib/dpkg/info/包的名稱

sudo rm /var/lib/dpkg/info/linux-image-extra-4.4.0-75-generic.*

錯誤解決

2.3.5 繼續清除核心

解決以上報錯後,執行

sudo apt-get -f install

發現沒有報錯了

執行

sudo apt-get remove linux-image-4.4.0-75-generic

順利完成刪除

根據情況,繼續刪除不需要的核心檔案,

刪除完成後,檢視核心檔案

dpkg -l ‘linux-image-*’|grep ‘^ii’

輸出
ii linux-image-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP

只剩下了一個版本的核心。

/boot 資料夾獲得了新的空間。

3.更新系統

在“關於這臺計算機”中
選擇 檢查更新
進行更新,順利完成。