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

解決ubuntu升級軟件scons的錯誤

日期:2017/3/1 13:52:47   编辑:關於Linux
解決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/目錄下,然後重新運行升級命令即可。
Copyright © Linux教程網 All Rights Reserved