[Mac] 在 Mac 上安裝 yara-python
之前用過 Homebrew 在 Mac 上安裝 yara,
而 python 裡面 import yara 也都成功,
因此一直以為 Homebrew 會幫忙裝好 yara-python 這個模組,
今天才發現不是…
問題的發現點在於執行 yara -v 可以看到是目前最新的 3.3.0 版本,
可是在 python 裡 import yara 後,yara 裡面卻沒有文件裡提到的,
像是 SyntaxError, Error 等等成員,跟同事裝在 Linux 上的狀態不同,
反倒是有 yara.YaraSyntaxError 這個怪東西…
testuser@localhost ~ $ yara -v yara 3.3.0 testuser@localhost ~ $ python Python 2.7.6 |Anaconda 1.9.1 (x86_64)| (default, Jan 10 2014, 11:23:15) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import yara >>> dir(yara) ['CALLBACK_ABORT', 'CALLBACK_CONTINUE', 'INCLUDE_PATH', 'Rules', 'YARA_RULES_ROOT', 'YaraSyntaxError', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '__warningregistry__', 'compile', 'libyara_wrapper', 'load_rules', 'preprocessor', 'rules', 'version']
在網路上搜尋了一下,看起來這個 YaraSyntaxError 是 yara 1.7 才有的東西,
這才發現,我是之前曾經用 pip install yara 裝了 yara for python,
但問題是 pip 上面的 yara 只到 1.7 版本而已~~
看來 Homebrew 雖然可以幫忙裝 yara binary,可是並沒有安裝 yara-python 模組,
還是自己來吧~
參考資料:yara: Compiling and installing YARA
1. 從 Homebrew 和 pip 移除掉舊的 yara
為了確保沒有舊的或壞的 yara 在搞怪,全部移除吧:
brew uninstall --force yara pip uninstall yara
2. 下載 yara 原始碼
到 yara 官網 下載最新的原始碼,我抓的是 v3.3.0.tar.gz,
抓下來後解開:
tar zxvf yara-3.3.0.tar.gz
3. 編譯與安裝 yara
解開後的目錄裡有個 build.sh,直接執行看看:
testuser@localhost ~/Downloads/yara-3.3.0 $ sh build.sh ./bootstrap.sh: line 2: autoreconf: command not found build.sh: line 3: ./configure: No such file or directory make: *** No targets specified and no makefile found. Stop.
嗯… 出現了 autoreconf 找不到的錯誤…
不過用 brew list autoconf 看一下,我的 Homebrew 裡明明就有裝好 autoconf:
(沒有的話,可以用 brew install autoconf)
testuser@localhost ~/Downloads/yara-3.3.0 $ brew list autoconf /usr/local/Cellar/autoconf/2.69/bin/autoconf /usr/local/Cellar/autoconf/2.69/bin/autoheader /usr/local/Cellar/autoconf/2.69/bin/autom4te /usr/local/Cellar/autoconf/2.69/bin/autoreconf /usr/local/Cellar/autoconf/2.69/bin/autoscan /usr/local/Cellar/autoconf/2.69/bin/autoupdate /usr/local/Cellar/autoconf/2.69/bin/ifnames /usr/local/Cellar/autoconf/2.69/share/autoconf/ (42 files) /usr/local/Cellar/autoconf/2.69/share/emacs/ (4 files) /usr/local/Cellar/autoconf/2.69/share/man/ (9 files)
有可能是路徑找不到,把路徑/usr/local/Cellar/autoconf/2.69/bin 加到路徑再執行,
就沒有問題了:
jeff_lai@tw-jefflai3 ~/Downloads/yara-3.3.0 $ PATH=$PATH:/usr/local/Cellar/autoconf/2.69/bin sh ./build.sh glibtoolize: putting auxiliary files in '.'. glibtoolize: copying file './ltmain.sh' glibtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. glibtoolize: copying file 'm4/libtool.m4' glibtoolize: copying file 'm4/ltoptions.m4' glibtoolize: copying file 'm4/ltsugar.m4' glibtoolize: copying file 'm4/ltversion.m4' glibtoolize: copying file 'm4/lt~obsolete.m4' ......
build.sh 執行完後,yara 就編譯好了,
執行 make install 就能將 yara 裝起來,裝好後執行一下 yara 確定可以用:
jeff_lai@tw-jefflai3 ~/Downloads/yara-3.3.0 $ make install Making install in libyara ........ jeff_lai@tw-jefflai3 ~/Downloads/yara-3.3.0 $ yara -v yara 3.3.0
不過這時候 yara-python 還沒有編譯,因此這時在 python 裡面 import yara 還是會失敗的~
4. 編譯與安裝 yara-python
進到 yara 原始碼目錄,再進到一個叫 yara-python 的目錄,
執行 python setup.py build 編譯,python setup.py install 安裝~
注意這一步得要步驟 3 有成功編譯成 yara 才行,不然這邊是無法繼續的:
cd yara-python/
python setup.py build
python setup.py install
接下來到 python 裡面試一下,可以成功 import yara 了,
而且 yara 裡面也有目前最新的 SyntaxError, Error 等等成員囉~
testuser@localhost ~/Downloads/yara-3.3.0/yara-python $ python Python 2.7.6 |Anaconda 1.9.1 (x86_64)| (default, Jan 10 2014, 11:23:15) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import yara >>> dir(yara) ['CALLBACK_ABORT', 'CALLBACK_CONTINUE', 'Error', 'SyntaxError', 'TimeoutError', 'WarningError', '__doc__', '__file__', '__name__', '__package__', 'compile', 'load']
心底謎之聲:為啥 brew install yara 沒能幫忙把 yara-python 也編譯安裝好呀…
有的話就不用搞這麼多步驟了…
3 thoughts on “[Mac] 在 Mac 上安裝 yara-python”
在执行sh build.sh的时候,会报错:Can’t exec “aclocal”: No such file or directory at /usr/local/share/autoconf/Autom4te/FileUtils.pm line 326.吧。
需要安装autoconf,automake,libtool,才能完整地执行build.sh
感謝您的資訊~
可能因為我先前在裝其他套件時,
就已經裝了這些東西,所以我沒有遇到問題。