Windows 2003上 SaltStack/Salt 和 psutil 可能存在的問題及解決

  今天把salt安裝在windows 2003上,發現沒法啓動,隨之而來的是一個有一個的坑,讓咱們一塊兒逐個排查。html

問題一(salt沒法啓動)

  salt沒法啓動,錯誤結果如圖:java

解決

  這種錯誤徹底無厘頭呀,本着相信salt的原則,咱們看看python能不能正常啓動,由此產生新的問題。python

 

問題二(python沒法啓動)

  啓動C:\salt\bin\python,發現仍舊沒法啓動。這就奇怪了,我有理由相信這多是salt自帶的python的問題。那麼從Python的官網下載個新包Python2.7.12看看,安裝後發現官網的Python啓動正常。莫非是初始化了一些環境變量?回過頭來再去看salt中的python能不能用,奇蹟般地好了~c++

 解決

  從新安裝一次官網的Python,而後再啓動salt中的python試試。windows

  緣由在於,這臺windows 2003原來裝過python,但可能由於後來卸載不完全,以及中間各類軟件安裝影響了一些環境變量,致使salt中python沒法正常啓動。api

 

問題三(缺乏MSCVCR100.dll)

  既然python啓動問題已經搞定,那就再去啓動salt-minion吧。此次開啓debug模式,看看可否正常啓動,啓動不了也會有詳細信息。執行C:\salt\salt-minion-debug.bat,結果沒過多久報了這個錯:debug

 

解決

  既然windows 2003這位老先生明確告訴咱們缺乏了MSVCR100.dll這個動態連接庫,那就找到它吧。這個庫是vc++2010裏的,因此從微軟的官網下載Microsoft Visual C++ 2010 可再發行組件包 (x86), 安裝完畢後,再啓動salt-minion就不會報錯了。htm

 

問題四(psutil中 ‘from . import _psutil_windows as cext’ 報錯)

  因爲項目中用到psutil,天然想到要檢驗下salt自帶的python第三方psutil可否正常使用,結果很遺憾:圖片

  這是什麼鬼?不能導入的緣由太模糊了吧,dll導入失敗?!哪一個dll?ip

  去報錯相應的目錄下看看吧,也就是C:\salt\bin\lib\site-packages\psutil\下,發現要導入的_psutil_windows包實際上是_psutil_windows.pyd這個連接庫。導入這個連接庫失敗,那麼就看看這個連接庫到底連接了什麼東西。

  使用dependency walker去瞅瞅,發現是這樣的問題:

解決

  把缺失的這兩個dll(msvcr90.dll, msjava.dll)補上?補上後仍然有問題,看下文。

 

問題五(At least one module has an unresolved import ...)

  補上兩個dll後,還顯示一個錯誤:

  根據圖片中的顯示,大概是iphlpapi.dll和kernel32.dll的導入或被導入出現了問題。可是這兩個是系統的呀,能奈之何?

  先無論這個錯誤,嘗試運行下python,而後import psutil,看看會不會報錯:

  看來仍是老錯誤,沒法避免。

  會不會是salt預裝的psutil有問題?去C:\salt\bin\scripts\下,pip uninstall psutil卸載掉再重裝試試,結果仍是不行。

  這就很是奇怪,突發奇想該不會是高版本的psutil不支持低版本的系統致使的吧?因而再次卸載掉psutil,裝了個1.x版本試驗了下,結果能夠了。

解決

  安裝一個低版本的psutil試試,注意你用到的psutil的功能在低版本中可能不存在。

 

問題六(salt模塊依賴的wmi能夠用嗎?)

  從salt官網上看到關於windows 2003這樣的描述:

  貌似是wmi須要額外安裝。

  那就先看看wmi能不能正常導入吧:

  很好,wmi庫能夠正常導入,項目要用到的wmic(第一次在cmd中輸入,會自動安裝)也能正常使用,皆大歡喜。

 

總結

  在低版本的系統上,可能會有各類各樣想不到的坑。再次作個記錄留做備忘,也給未來可能踩坑的同窗借鑑經驗。

相關文章
相關標籤/搜索