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中输入,会自动安装)也能正常使用,皆大欢喜。

 

总结

  在低版本的系统上,可能会有各类各样想不到的坑。再次作个记录留做备忘,也给未来可能踩坑的同窗借鉴经验。

相关文章
相关标签/搜索