[Mac] 在 Mac 上安裝 yara-python

[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 也編譯安裝好呀…

有的話就不用搞這麼多步驟了…

 

 

 

 

(本頁面已被瀏覽過 180 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料