當 Ubuntu 在年初推出 16.04 版本時, 因為許多舊型的 AMD 電腦顯示卡無法內建支援, 因此仍然停留在 Ubuntu 14.04 LTS 的使用, 但是隨著 Solvespace 與 PyQt5 相關應用程式的開發需要, Python 3.4 與 PyQt4 已經不敷使用, 因此從今天開始, 利用實體或虛擬安裝的方式, 將 KMOL 機械設計專題的主要程式開發系統, 定調採用 Ubuntu 16.04 版本.

基本程式開發策略

OnShape 推出之前, KMOL 機械設計專題為了在 FreeCADSolvespace 之外, 能夠採用 PTC Creo 與 Solidworks, 因此除了在 Ubuntu 建構程式開發系統之外, 還利用 NetBeans 與 MinGW, 在 Windows 7 與 Windows 10 64 位元環境中建立可攜的程式開發系統, 但是隨著 Windows 10 越發強勢地主導自動更新, KMOL 機械設計專題決定要在 Ubuntu 環境中, 以 cmake 及 mingw-w64 開發 Windows 10 適用的套件, 換言之, 從今以後, Windows 操作系統只是 KMOL 機械設計專題的執行平台而非開發平台.

理想的程式開發環境

假如實體主機無法直接安裝 Ubuntu 16.04, 建議仍安裝 Ubuntu 14.04 與 Virtualbox, 並且在 Virtualbox 中配置 64 位元的虛擬 Ubuntu 16.04 或 Windows 10 執行環境.

有鑑於一台實體主機將經常要開啟一個實體的 Ubuntu 14.04 與兩個虛擬操作系統, 因此除了要俱備 Vti 相關虛擬技術的支援外, 記憶體必須 12GB 以上, 而硬碟則是 1TB 以上較佳.

當然, 因為這一台主機仍必須執行至少一套虛擬 Windows 10 64 位元操作系統, 因此必須購買相應合法的 Windows 操作系統使用授權.

Ubuntu 14.04 主機的安裝

當實體主機進行 Ubuntu 14.04 Server 操作系統安裝時, 僅需選擇安裝 OpenSSH server 加上 ubuntu-desktop 即可, 之後可以安裝 gcin 中文輸入系統、git、pip3、PyQt4、pelican、Markdown 以及 Leo Editor 等模組, 目的在於可以處理與 Github 相關倉儲的資料更新.

基本步驟如下:

  1. sudo apt-get install gcin git python3-pip python-pyqt4
  2. git clone https://github.com/leo-editor/leo-editor.git
  3. 將 leo-editor 目錄下的 leo 檔案複製到 /usr/local/lib/python3.4/dist-packages 目錄下
  4. 利用 python3 launchLeo.py 啟動 Leo Editor
  5. sudo pip3 install pelican Markdown

因為 gcin 在 Ubuntu 14.04 操作系統環境下, 可以直接支援 PyQt4 程式的中文輸入, 因此只要選用 gcin 後重新開機即可.

Ubuntu 16.04 實體或虛擬主機安裝

Ubuntu 16.04 Server 操作系統的安裝, 雖然步驟與 14.04 大致相同, 但是因為要作為 CMake 與 PyQt5 程式開發之用, 因此除了必要的程式模組採 apt 安裝外, 其他的 Qt5、sip、PyQt5、qscintilla2 與 eric6 等, 都直接從原始碼編譯連結後進行安裝.

首先, 利用 apt purge 徹底移除 Ubuntu 16.04 內建的 sip 4.17.1 舊版本:

sudo apt purge python3-sip python3-sip-dev

移除 sip 前後, 可以利用 sip -V 確認版次.

接著安裝, Solvespace 與程式庫開發所需的各種套件:

apt-get install libpng-dev libjson-c-dev libfreetype6-dev \
                libfontconfig1-dev libgtkmm-2.4-dev libpangomm-1.4-dev \
                libcairo2-dev libgl-dev libglu-dev cmake swig \
                python3-dev python3-pip pyqt5-dev mingw-w64

然後安裝 Pyslvs-PyQt5 所需要的 peewee ORM 模組, 以及產生靜態網誌所需的 pelican 與 Markdown:

sudo pip3 install peewee pelican Markdown

接著下載 http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run, 安裝 Qt5.7:

然後利用 gedit ~/.bashrc, 編輯 .bashrc, 加入:

1
2
3
export QTDIR=/opt/Qt5.7.0/5.7/gcc_64/ 
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib 
export PATH=${QTDIR}/bin:${PATH}

然後以 source ~/.bashrc 讓設定生效.

要確認 Qt 版次, 使用:

qmake -v

接下來下載 http://www.riverbankcomputing.com/software/sip/download , 然後以下列指令安裝 sip 4.18.1:

1
2
3
python3 configure.py 
make
sudo make install

如同前面移除 sip 4.17.1 時相同, 利用 sip -V 確認系統中 sip 的版本, 假如要確認 Python3 導入時使用的 sip 版本, 利用下列程式碼檢查:

1
2
import sip
print(sip, sip.SIP_VERSION_STR)

PyQt5 的安裝步驟與 sip 相同, 從 http://www.riverbankcomputing.com/software/pyqt/download5 下載原始碼之後:

1
2
3
python3 configure.py 
make
sudo make install

至於 qscintilla 的安裝, 牽涉3個步驟, 首先從 http://www.riverbankcomputing.com/software/qscintilla/download 下載原始碼:

步驟一:

1
2
3
4
cd Qt4Qt5
qmake qscintilla.pro
make
sudo make install

步驟二:

1
2
3
4
cd ../designer-Qt4Qt5
qmake designer.pro
make
sudo make install

步驟三:

1
2
3
4
cd ../Python
python3 configure.py --pyqt=PyQt5
make
sudo make install

接下來則安裝 eric6, 從 http://eric-ide.python-projects.org/eric-download.html 下載原始碼後, 以 sudo python3 install.py 進行安裝, 並以 eric6 開啟.

安裝 Leo Editor

因為前面已經安裝 PyQt5, 因此只要從 https://github.com/leo-editor/leo-editor.git 取得 Leo Editor 的原始碼, 並將 leo 目錄複製到 /usr/local/lib/python3.5/dist-packages 目錄中即完成安裝, 啟動 Leo Editor, 則以 python3 launchLeo.py, 或者將 python3 launchLeo.py 放入可執行的 leo 檔案中, 以 ./leo& 啟動.

安裝 fcitx 中文輸入

由於目前 gcin 對於 PyQt5 的支援較不完全, 因此在 Ubuntu 16.04 操作系統中, 採用 fcitx 作為中文輸入的套件:

sudo apt install fcitx fcitx-chewing

表示將採用 fcitx 中文輸入法中的酷音輸入套件.

酷音輸入法的使用牽涉3個步驟, 第1步驟就是上方的套件安裝, 而第2步驟就是進入系統設定中的 language support, 將原先內建的 ibus 改為 fcitx, 而第3步驟則是在輸入 configure 時, 加入 chewing 中文輸入法, 並且將原先的切換鍵 space 改為 ctrl+space.

完成上述步驟的安裝與設定後, 就可以利用 Leo Editor 及 eric6 來開發 Solvespace 與 api 應用, 包含所有相關系統原始碼的倉儲位於 https://github.com/mdecourse/solvespack, 以 submodule 設定的相同倉儲則位於: https://github.com/mdecourse/solvk.


Comments

comments powered by Disqus