解決ubuntu升級軟件scons的錯誤
首先看看遇到的什麼錯誤,這是在從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/目錄下,然後重新運行升級命令即可。