2016年9月29日 星期四

安裝CentOS 7,Python 3.5,VIM的過程記錄

小弟目前在進行財務報表分析的時候都透過excel的web query功能抓取個家公司財務報表,然後再依據相關準則進行excel畫圖表及邏輯自我解析,這樣的方法其實還滿不錯的,可以在很短的時間內達到分析之目的,而且圖表的方式可以讓人家更直覺的了解資訊的好壞。通常,我會有一個最新版的excel內建了web query及相關圖表,當我看到一家有興趣的公司時,我會複製此excel進行驗證後另存成新檔案,藉此跟別人分享這家公司的看法。但我遇到下列的問題:

  1. 當自己學習到新的檢驗方法時,並加入excel後,要逐一調整舊有已存excel設定,無法修正後就應用到先前所儲存的公司分析檔案,如要一一更新其實滿辛苦的
  2. excel的分享有時候會跟用戶的環境有關,有時候會需要花時間告知對方,沒有像網頁如此般的方便
  3. 無法達到自動化驗證功能,這功能在目前個大網站上又沒有類似的,或者是需要額外加入會員收費的。例如我想要找出3個月的營收平均數剛好突破12個月營收平均數的公司,這類資訊我無法透過excel一家家公司來計算(那會瘋掉)
以上第三個問題是我最想要改善的,因為台灣雖小但2千多間公司要一家家看,那真的實在太沒有效率了,因此我想要將這部分的功能自動化。初期的目標是能夠先將資料抓下來,然後計算財務報表相關數字,並將自己選股的概念部份實作來;長期目標是能夠將分析的作業透過big data技術運算,並透過網站的方式跟大家分享。

哈哈,短期目標定下來了,因此我就將MAC安裝VM來進行實驗,而今天要跟大家分享的就是環境安裝及設定的過程拉。這些程序大致分成:
  1. Centos 7安裝(version 7.2.1511)
  2. python安裝(version 3.5.2)
  3. vim安裝及設定(version 8.0.16)
python是程式語言,可以跨平台且是一個簡潔有效率的語言,而我會選擇他主要是因為未來big data這邊有許多模組也都支援python。而vi是linux系統中內建的文字編輯器,vim就是他的加強版,而vim的官方網站也認為他是很棒的程式語言編輯器,因為他有許多plugin可以進行編輯時的加強作業,基本的包含了關鍵字識別,auto completion ,還有debug及語法檢查功能。好吧~這就是我的基本作業組成,請繼續往下看^_^

[CentOS 7安裝]

環境上是在MAC,因此我希望透過vm的方式來進行測試驗證,可以跑的vm包含了,virtualBox,vmware fusio,parallel三套,只有virtualBox不用錢,因此首選就是它了。至於要選用的作業系統,其實ubuntu或centos都可以。我自己是首選ubuntu,但很難過的是他在安裝的過程中竟然一直在VM環境上裝不起來,而centos7是可以一次到位的。網路上描述透過virturlbox安裝作業系統的文章許多,小弟就將自己參考的Link分享出來。
  • 透過virtualbox安裝,過程中有兩個關於網路設定的注意事項是:
    1. 在網路與主機設定的功能上,請要點選"開啟",不然預設安裝完畢後是不會開啟網路的。你就必須要透過cmd的方式來開啟,如果你不小心沒有開啟網路,請你參考 [這裡] 來手動開啟網路。
    2. 預設vitualbox上的網路是使用NAT設定,如果你的host os是可以上網的話,vm內的的作業系統就可以上網。但,在virtualBox的終端不是很好操作,包含貼上複製及操作上很不順手,因此我建議直接使用其他的ssh工具,例如putty或者Mac上的終端機登入到guest os進行作業。 因此你在virtual上的網路設定建議使用bridge(橋接介面卡,如下圖),這樣可以方便的連線了。在使用橋接模式後guest OS起來後會得到一個與host os同網段的IP,因此只要知道guest OS的IP後就可連線囉。不過,我發現只要每次到不同的環境時,我的Guest OS與Host OS都會拿到不同的IP網段,因此我每次都必須要再確認一次IP網段才有辦法連線。小弟有另外一個取得固定IP的方法,請參考[如何解決移動裝置上的virtualBox與Centos網路規劃設定]文章。

  • centOS 7的iso檔案請按 [這裡] 下載,建議使用DVD iso(大約4G)。小弟手賤選擇了minimal iso(不到700MB),然後自己要透過手動yum來安裝自己需要的軟體。不過minimal雖然基本,但是裡面的vim已經是7.4.16版本,而Python也已經是2.7.5的版本了。
我想在OS上面的安裝應該不會有什麼大問題,但建議大家在安裝後也使用virtualBox的快照功能新存起來一份,然後再進行後續的系統異動,並且每次設定後如果測試OK的話,也請記得快照起來喔,這樣你可以在安裝軟體時不用擔心系統亂七八糟>_<。只要自己想要返回先前的系統的話,都可以先將guest os關機後,再透過virtualBox的快照功能恢復喔。

[python 3安裝]

啊~不是有python2.7.5了?為什麼還要裝python3? Python是一個很特別的語言,當時出了3的版本以後,竟然來一個""向下相容,這是我第一次看到的事情,也代表作者的理念,你可以google一下大致就知道了,請看 [這裡]。我認為python是一個好語言,我喜愛他的語法,因此打算直接使用最新的版本,因此就直接使用3.5.X版本。

進入作業系統後打入python,可以得到系統的python資訊。如下:

=====================================
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
=====================================
基本就可以知道CentOS 7已經內建了python2.7版本,但python3呢?很抱歉再minimal ISO上面是沒有內建的,必須自己手動安裝。因此我找尋了一下網路安裝python的文章,請看 [這裡] ,這篇文章描述了安種安裝python3的方法,我看了一下,覺得2~3的方法比較簡單,因為不用自己編譯(第一種方法),因此直覺就使用第2方法(Install Python3 from EPEL Repository),基本的指令如下:
  1. sudo yum install epel-release 
  2. sudo yum install python34 
  3. curl -O https://bootstrap.pypa.io/get-pip.py 
  4. sudo /usr/bin/python3.4 get-pip.py
以上這四個指令都可以正常運作,也可將python3安裝到centos上,一點問題也沒有。但,我在vim的整合上卻發現問題,使用centOS內建的vim 7.4.16版本時,他並不支援python2及python3,至於檢查的方法可以輸入vim --version,他會告訴你他有支援哪些語言。你可以發現預設的vim並不支援Python,包含2~3都沒有,圖中的-python3代表不支援python3。#__@,哭哭。那我的vim整合Python要怎麼辦啊?

好吧,那我自己重新安裝vim總可以吧?因此依照官方網站的安裝方法,請看 [這裡] 執行以下指令(這些指令執行後取得最新版本8.0):
  1. git clone https://github.com/vim/vim.git
  2. cd vim/src
  3. make
  4. make install
哈哈~悲慘的事情還是持續著,因為vim還是無法認識python?!
就這樣子小弟一直安裝,一直測試終於搞定了!基本上的程序是這樣的,需要先安裝python後在安裝vim,這樣vim才可以認識python>_<,而且建議都是使用make install的方式執行,只不過官方的文件都以最簡單的設定來安裝,因此忽略了許多個人化的設定。小弟將最後成功的指令提供如下:
  1. sudo yum install yum-utils
  2. sudo yum-builddep python
  3. curl -O  https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz
  4. tar xf Python-3.5.2.tar.xz
  5. cp Python-3.5.2
  6. ./configure --enable-shared
  7. make
  8. make install

以上的第6步驟的參數非常重要,一定要加上enable-shared,因為這樣建出來的library才可以讓其他的應用程式參考執行!小弟一開始建立的時候都沒有輸入此參數,在安裝完python後可以透過python --version來確認版本且執行,而且在vim的configure階段也可以看到他認出python3,以為已經OK了,沒有到在後續vim整合設定的時候還是出錯。因此請記得一定要加入--enable-shared喔。

基本上如果你沒有加入此參數並進行安裝的話,在/usr/local/lib下看到的檔案會是libpython3.5m.a.1.0,而非libpython3.5m.so.1.0。因此你可以自己檢查一下喔。

但,以上的步驟安裝完後你執行python3的時候,會出現以下的錯誤。
================================================
$ python3
python3: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
================================================
你可以輸入以下command來檢查python3的library連接情況,你可以發現系統無法找到libpython3.5m.so.1.0這個檔案。
================================================
$ ldd /usr/local/bin/python3
linux-vdso.so.1 =>  (0x00007ffdfe367000)
libpython3.5m.so.1.0 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fcbf15cb000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fcbf13c7000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fcbf11c4000)
libm.so.6 => /lib64/libm.so.6 (0x00007fcbf0ec1000)
libc.so.6 => /lib64/libc.so.6 (0x00007fcbf0aff000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcbf17f1000)
================================================
這個問題主要是因為系統不會去usr/loccal/lib目錄下找尋檔案,因此你可透過以下的指令來設定,最簡單是直接在bash下執行export LD_LIBRARY_PATH=/usr/local/lib,然後你的python3就可以執行了,但這樣的問題是你每次重新登入後都會發生問題,因此建議你將此指令加入到/etc/bashrc檔案中,這樣不管是哪個用戶都可以享用這個福利拉。

以上說明到這裡已經完成了python3的安裝,那python2怎麼辦?可以這樣重新安裝2嗎?小第想說一不做二不休,就給他依樣畫葫蘆完成了python2.7.12版本安裝了,在vim的整合上一點問題也沒有。但,另一個災難發生了,因為CentOS的軟體安裝套件yum是使用python寫的,而且是基本是設定依存2.7.5版本,而我手賤更新後,yum就無法執行了。情況如下:
================================================
$ yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.12 (default, Sep 27 2016, 00:25:08) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq
================================================
以上這個問題雖然網路上有些解法,但我這邊試不出來,因此只好GG放棄了,也就是說我的系統中依然使用預設的2.7.6版本,因此在後續的vim設定中,只專注在python3上的整合。

[vim 8安裝]

哇~~好棒棒,終於進展到最後一個vim的步驟了,基本上依照官方做法是一定會失敗的,因此請你依據以下的方法來安裝。
如果你先前已經有安裝vim的話,請你進入下載的vim目錄,並輸入rm src/auto/config.cache,將先前的設定暫存檔案清除,然後再執行以下的步驟喔。

  1. git clone https://github.com/vim/vim.git
  2. cd vim
  3. ./configure --prefix=/usr/local --enable-multibyte --enable-python3interp --with-features=huge 
  4. make
  5. make install
基本上再第三個步驟的時候你應該要可以看到以下的文字,代表vim認得python3的相關資訊,並且會支援他喔,如下圖

完成以動作後,你可以進入vim然後執行:python3 import sys; print(sys.version)指令,你應該可以看到以下的內容,那就真是恭喜你完成了相關設定。
3.5.2 (default, Sep 27 2016, 09:15:11) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]

沒有留言:

張貼留言