歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 解決Ubuntu升級軟件scons的錯誤

解決Ubuntu升級軟件scons的錯誤

日期:2017/2/28 14:38:51   编辑:Linux教程

首先看看遇到的什麼錯誤,這是在從Ubuntu 13.04升級到13.10的過程中遇到的,如下:

Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/py_compile.py", line 183, in <module>
sys.exit(main())
File "/usr/lib/python2.7/py_compile.py", line 165, in main
compile(filename, doraise=True)
File "/usr/lib/python2.7/py_compile.py", line 136, in compile
os.rename(path_tmp, cfile)
OSError: [Errno 21] Is a directory
dpkg: error processing scons (--configure):

子進程 已安裝 post-installation 腳本 返回了錯誤號 101

在處理時有錯誤發生:

scons

看了上面信息,首先想到的就是google一下,看有沒有解決方案,找了一會兒感覺希望不大,所以就開始想辦法自己解決,還好是python腳步,而且有詳細的traceback,至於什麼scons,網上找找很多的,反正就是一個自動化生成編譯工程的工具。

下面詳細描述一下自己解決這個問題的過程和思路:

通過上面的traceback定位到文件/usr/lib/python2.7/py_compile.py的行數,我的是136.對應出錯的函數是 os.rename(path_tmp, cfile),而且給出了很詳細的出錯信息,說是一個目錄,python的rename函數要求兩個都是文件。知道這一點,我在源碼中os.rename函數之前加入了兩行代碼,分別是print path_tmp 和print cfile。最終通過這兩句代碼輸出了錯誤的文件名路徑,然後進入路徑查看果然對應的重命名文件是一個目錄(目標文件名已經存在,而且是一個目錄),所以就報錯了。其中還有兩個,當然自己也不知道這兩個空目錄是怎麼來的,找到問題了就簡單多了澀,把對應的空目錄刪除掉,重新安裝一切就ok了。

解決問題關鍵是找對思路,不然浪費很多時間還不一定能夠有效的解決問題,隨便在說一下自己升級ubuntu軟件經常遇到的一個錯誤和解決方案,

問題是:失敗的下載某一個升級的軟件包(deb包),失敗信息會把具體的url連接給出。

解決方案:手動下載,通過wget url,基本上都不會失敗。然後把所有下載的包拷貝到/var/cache/apt/archives/目錄下,然後重新運行升級命令即可。

Windows 7下硬盤安裝Ubuntu 13.10圖文教程 見 http://www.linuxidc.com/Linux/2013-10/91565.htm

Ubuntu 13.10 下載、安裝、配置 整理匯總 頁面 http://www.linuxidc.com/Linux/2013-10/91564.htm

Ubuntu 13.10配置root登錄 http://www.linuxidc.com/Linux/2013-11/92238.htm

Ubuntu 13.10使用fcitx輸入法 http://www.linuxidc.com/Linux/2013-10/91704.htm

Ubuntu 13.10 編譯安裝Wine 1.7 http://www.linuxidc.com/Linux/2013-10/91667.htm

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

Copyright © Linux教程網 All Rights Reserved