OxOffice Online 社群版編譯說明
如果想編譯在 GitHub 上最新版本的 OxOffice Online 社群版本,請參考本文件說明該如何建立 OxOffice Online 社群版的編譯環境及編譯流程。
- 在 CentOS 7 環境下編譯 OxOOL
- 在 Ubuntu 18.04 環境下編譯 OxOOL
- 在 CentOS 7 環境下編譯 OxOffice Online v4 社群版
- 在 Rocky Linux 8 環境下編譯 OxOffice Online v4 社群版
- 在 Ubuntu 20.04 環境下編譯 OxOffice Online v4 社群版
在 CentOS 7 環境下編譯 OxOOL
- 請參考 在 CentOS 7 環境下安裝(社群版) 這篇文章的 CentOS 7 安裝 OxOOL 套件的過程,但在關閉 SELinux 後請重新開機,並以一般使用者的身份登入(打包時請勿使用 root 使用者身份打包)。
- 先關閉原本安裝的 OxOOL
sudo systemctl stop oxool
sudo systemctl disable oxool
- 安裝編譯 OxOOL 要用的套件
sudo yum install epel-release -y
sudo yum update -y
sudo yum install git yum-utils libpcap libcap-devel poco-devel ccache python36-polib python36-lxml -y
sudo yum install libtool gcc-c++ fontconfig-devel cppunit-devel pam-devel rpm-build -y
- 安裝並設定 Node.js
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install nodejs -y
- 將 OxOOL 源始碼 clone 回來
git clone https://github.com/OSSII/oxool-community.git
- 開始編譯 OxOOL 套件
cd oxool-community
./autogen.sh
./configure
make dist
rpmbuild -tb oxool-x.x.x.tar.gz #在做完以上步驟後,clone 下來的目錄內應會有一個檔名類似 oxool-3.2.11.tar.gz 的壓縮檔,將後面的 oxool-x.x.x.tar.gz 代換為此檔的檔名即可
- 編譯完成的 rpm 會放在以下路徑
~/rpmbuild/RPMS/x86_64
套件直接就可以拿來安裝~編譯完成。
在 Ubuntu 18.04 環境下編譯 OxOOL
- 請參考 在 Ubuntu 18.04 環境下安裝(社群版) 這篇文章的 Ubuntu 18.04 安裝 OxOOL 套件的過程。
- 先關閉原本安裝的 OxOOL
sudo systemctl stop oxool
sudo systemctl disable oxool
- 安裝 git 指令
sudo apt install git -y
- 將 OxOOL 源始碼 clone 回來
git clone https://github.com/OSSII/oxool-community.git
- 安裝 Ubuntu 18.04 編譯環境所需的套件
cd oxool-community
./install_build_require_ubuntu.sh
- 安裝並設定 Node.js
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
- 編譯及測試執行 OxOOL
切換到 oxool-cummunity 程式的主目錄下,開始編譯程式。
cd oxool-community
./autogen.sh # 過程中若是提示找不到 fontconfig,請安裝 libfontconfig1-dev;若提示缺少 Poco 標頭,則請安裝 libpoco-dev
make -j2
如果成功就會看到以下訊息請您輸入編譯帳號的密碼:
[sudo] password for oxoffice:
輸入後,會繼續編譯直到完成,然後輸入以下指令測試是否能運行成功:
make run
如果看到以下訊息,就代表已經可以成功測試了。
Ready to accept connections on port 9980.
- 打包 OxOOL deb 套件
請在專案的根目錄執行
debuild -b -uc -us # 若您已先執行過上面的編譯動作,在執行此步驟前請先在您的 oxool-community 目錄執行 git clean -fdx 指令,如此才能正常打包
最後打包的 deb 結果會生成在專案的上層目錄
cd ..
ls oxool_3.x.x-1.community_amd64.deb
套件直接就可以拿來安裝~編譯完成。
在 CentOS 7 環境下編譯 OxOffice Online v4 社群版
請先下載並安裝最新版本的 CentOS 7,然後執行以下指令更新系統與安裝必要的軟體包(此處是以一般使用者身份登入為準,且編譯時不建議使用 root 身份),其中 devtoolset-11 是用來安裝較新版本的 GCC 套裝軟體,數字為 GCC 的主要版本,請至少使用 GCC 8 以上的版本。
sudo yum upgrade -y
sudo yum install vim net-tools unzip wget -y
cd /etc/yum.repos.d
sudo wget http://www.oxoffice.com.tw/rpm/el/oxool-community-v4-centos7.repo
sudo yum install epel-release -y
sudo yum upgrade -y
sudo yum install git yum-utils libpcap libcap-devel libgit2-devel poco-devel ccache python36-devel python36-polib python36-lxml -y
sudo yum install libtool gcc-c++ fontconfig-devel cppunit-devel pam-devel rpm-build -y
sudo yum install oxoffice* poco* gumbo* -y
sudo yum install centos-release-scl
sudo yum install devtoolset-11
停用 SELinux
vim /etc/selinux/config # vim 可代換成任何您慣用的文字編輯器
# 尋找 SELinux=enforcing 此行並將 enforcing 改為 disabled 或 permissive 並存檔離開
安裝並設定 Node.js
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install nodejs -y
將 OxOffice Online v4 社群版的原始碼 clone 下來
git clone https://github.com/OSSII/oxool-community.git
cd oxool-community
git checkout v4
編譯 OxOffice Online v4 社群版(此處的 devtoolset-11 需根據上面選擇安裝的版本而定)
scl enable devtoolset-11 bash
./autogen.sh
./configure
make dist
rpmbuild -tb oxool-x.x.x.tar.gz
編譯完成的 RPM 軟體包會放在以下路徑
~/rpmbuild/RPMS/x86_64
此處的 RPM 軟體包即可用來安裝。
在 Rocky Linux 8 環境下編譯 OxOffice Online v4 社群版
請先安裝 Rocky Linux 8(可參照Rocky Linux 8 基本安裝),然後執行以下指令更新系統與安裝必要的軟體包(此處是以一般使用者身份登入為準,且編譯時不建議使用 root 身份)
sudo dnf config-manager --set-enabled powertools
sudo dnf upgrade -y
sudo dnf install vim net-tools unzip wget -y
cd /etc/yum.repos.d
sudo wget http://www.oxoffice.com.tw/rpm/el/oxool-community-v4-el8.repo
sudo dnf install epel-release -y
sudo dnf upgrade -y
sudo dnf install git yum-utils libpcap libcap-devel libgit2-devel poco-devel ccache python3-devel python3-polib python3-lxml -y
sudo dnf install libtool gcc-c++ fontconfig-devel cppunit-devel pam-devel rpm-build -y
sudo dnf install oxoffice* poco* gumbo* -y
停用 SELinux
vim /etc/selinux/config # vim 可代換成任何您慣用的文字編輯器
# 尋找 SELinux=enforcing 此行並將 enforcing 改為 disabled 或 permissive 並存檔離開
安裝並設定 Node.js
sudo dnf module enable nodejs:18 -y
sudo dnf install nodejs -y
將 OxOffice Online v4 社群版的原始碼 clone 下來
git clone https://github.com/OSSII/oxool-community.git
cd oxool-community
git switch v4
編譯 OxOffice Online v4 社群版
./autogen.sh
./configure
make dist
rpmbuild -tb oxool-x.x.x.tar.gz
編譯完成的 RPM 軟體包會放在以下路徑
~/rpmbuild/RPMS/x86_64
此處的 RPM 軟體包即可用來安裝。
在 Ubuntu 20.04 環境下編譯 OxOffice Online v4 社群版
請先安裝 Ubuntu 20.04(可參照 Ubuntu Server 20.04 基本安裝),然後執行系統更新並安裝必要的軟體包
sudo apt update
sudo apt upgrade -y
sudo apt install vim openssh-server net-tools curl git -y
# 如果有重新啟動服務的提示,請選擇 yes 即可
curl http://www.oxoffice.com.tw/deb/OSSII-2022.key | sudo apt-key add
cd /etc/apt/sources.list.d/
sudo wget http://www.oxoffice.com.tw/deb/oxool-community-v4-focal.list
sudo apt update
sudo apt install oxoffice* libpoco-dev libgumbo-dev
安裝更多編譯時需要的軟體包
sudo apt update
sudo apt install -y build-essential libsqlite3-dev libcurl4-openssl-dev libcppunit-dev libcap-dev libcap2-bin libgit2-dev libtool libpng-dev automake m4 wget curl autoconf pkg-config openssl libgumbo-dev ccache fontconfig libfontconfig1-dev libpam-dev
sudo apt install -y devscripts debhelper dh-systemd dh-exec
sudo apt install -y libodbc1 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5
sudo apt install -y hunspell
sudo apt install -y python3-polib python3-lxml
安裝並設定 Node.js
cd ~
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
將 OxOffice Online v4 社群版的原始碼 clone 下來
cd ~
git clone https://github.com/OSSII/oxool-community.git
cd oxool-community
git switch v4
編譯 OxOffice Online v4 社群版
debuild -b -uc -us
編譯好的 deb 軟體包會放在編譯用目錄的上層
cd ..
ls oxool_4.x.x-1.community_amd64.deb
此處的 DEB 軟體包即可用來安裝。
注意:若您在編譯過程中遇到 Node.js/npm 的記憶體不足問題,可在專案根目錄下依序執行以下指令:
cd loleaflet
npm install
cd archived-packages
npm install
cd ..
touch node_modules
如此即可避開此問題。