張小白使用CentOS 7.9源碼編譯openGauss 2.0.0企業版的試驗日記

      網友投稿 1032 2022-05-30

      一、楔子

      在編寫?張小白帶你使用CentOS 7.6安裝openGauss 2.0.1企業版?過程中,張小白曾經用CentOS 7.9版本做過試驗,但是在?gs_preinstall 執行的過程中,報了“該操作系統不支持”錯誤:

      當時,張小白在網上重新找了CentOS 7.6的鏡像下載,重做了操作系統,甚至曾經還因為下錯了版本(下成了 CentOS 7.7)又又白折騰了一回。

      不過,后來得知CentOS 7.9其實也是可以裝 openGauss的,只需要欺騙它一下:

      然后重新執行 gs_preinstall? 腳本:

      就可以通過了!后續的操作跟CentOS 7.6的操作完全相同,此處不再贅述,在張小白的文檔中都有詳細描述。

      張小白就用現在這個CentOS 7.9,感受一下 源碼編譯的過程。

      本文是張小白閱讀了官網?搭建編譯環境?部分內容做的體驗,如果中間有錯漏之處,問題僅在于張小白的閱讀能力不足 :)

      二、注意

      如您用的是一個全新的CentOS 7.9操作系統,那么?張小白帶你使用CentOS 7.6安裝openGauss 2.0.1企業版?提到的以下章節最好都做一下:

      二、更新yum源為國內源

      四、安裝Python3.6

      五、安裝系統軟件依賴

      六、系統環境設置

      1.關閉防火墻

      2.關閉SELINUX

      3.設置時區和時間

      4.設置網卡MTU

      5.更新hostname

      6.設置UTF-8字符集

      7.允許root用戶遠程登陸

      8.創建數據庫組

      9.修改系統參數sysctl.conf

      10.修改文件句柄

      三、編譯環境準備

      操作系統:CentOS 7.9虛擬機

      虛擬機內存:8G(在編譯過程中,曾因為參數導致的內存不足原因,將虛擬機內存擴大到32G,但其實只要參數合適,8G內存足以完成編譯,詳見下面的操作過程)

      張小白使用CentOS 7.9源碼編譯openGauss 2.0.0企業版的試驗日記

      虛擬機CPU:4核

      1、安裝操作系統依賴

      這部分由于在前文已有描述,僅需yum install安裝相關軟件即可:

      如果嚴格按照文檔要求,那么readline-devel的要求是不符合的。但是貌似在后續的編譯過程中,也沒因此報錯。

      2、環境清理

      由于本虛擬機是從已經安裝好的單機版CentOS 7.9的openGauss克隆來的。為避免以前的安裝的干擾,對現有環境做個清理:(聰明的讀者可以全然不顧這個過程,或者如果您曾經安裝過openGauss,可以用以下神操作讓安裝的事情貌似從未發生過。。。)

      rm -rf /opt/software/openGauss

      rm -rf /var/log/omm

      userdel omm

      rm -rf /home/omm

      rm -rf /root/gauss_om

      3、關閉swap分區

      如果沒有關閉swap分區,可能會導致在下面的編譯過程中,執行make -j的時候報內存不足的錯。

      4、獲取openGauss-server代碼包和依賴包

      先獲取openGauss的源碼倉的地址:

      打開?https://gitee.com/opengauss/openGauss-server

      點擊克隆后,在彈出的框中選擇復制:

      具體地址為:?https://gitee.com/opengauss/openGauss-server.git

      打開?https://gitee.com/opengauss/openGauss-third_party

      如法炮制,獲得地址:

      https://gitee.com/opengauss/openGauss-third_party.git

      使用終端執行以下語句:

      git clone https://gitee.com/opengauss/openGauss-server.git openGauss-server

      git clone?https://gitee.com/opengauss/openGauss-third_party.git?openGauss-third_party

      這里如果要獲取 openGauss 2.0.0的代碼,可加上-b 2.0.0的參數:

      關于第三方依賴軟件的編譯構建方式,可以選擇直接用openGauss團隊構建好的,也可以自行編譯。張小白決定先使用現成的,先把重點放在編譯openGauss的源碼上面:(等有空了再來重新編譯第三方依賴的源碼)

      wget?https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.0/openGauss-third_party_binarylibs.tar.gz

      tar -xzvf openGauss-third_party_binarylibs.tar.gz

      mv openGauss-third_party_binarylibs binarylibs

      5、源碼安裝gcc 7.3.0和cmake 3.18.6

      注:由于openGauss官方提供的第三方依賴包已經包含了gcc,可以忽略gcc相關依賴如gmp、mpfr、mpc、isl和gcc的源碼安裝部分。但有心的人還是建議熟悉下源碼安裝gcc的全過程。

      (1)安裝前檢查

      查看下gcc和g++的版本:4.8.5

      如果使用yum安裝cmake,版本是2.8,也不滿足要求。

      所以這些都需要源碼編譯安裝。

      (2)編譯gmp-6.1.1

      wget?http://ftp.gnu.org/gnu/gmp/gmp-6.1.1.tar.xz

      tar -xf gmp-6.1.1.tar.xz

      cd gmp-6.1.1

      ./configure --prefix=/usr/local/gmp-6.1.1

      make -j

      make install -j

      (3)編譯mpfr-4.0.2

      wget http://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.gz

      tar -xf mpfr-4.0.2.tar.gz

      cd mpfr-4.0.2

      ./configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.1

      make -j

      make install -j

      (4)編譯mpc-1.1.0

      wget?http://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz

      tar -xf mpc-1.1.0.tar.gz

      cd mpc-1.1.0

      ./configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.1 --with-mpfr=/usr/local/mpfr-4.0.2

      make -j

      make install -j

      (5)編譯isl-0.18

      wget?https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2

      tar -xf isl-0.18.tar.bz2

      cd isl*

      ./configure --prefix=/usr/local/isl-0.18 --with-gmp-prefix=/usr/local/gmp-6.1.1

      make -j

      make install -j

      (6)安裝gcc依賴包

      查看glibc的版本: yum list | grep glibc

      如果yum報錯可執行 python2 yum list | grep glibc

      安裝“安裝gcc”需要的依賴包:

      yum install gcc-c++ glibc-devel

      好像無需安裝。

      (7)編譯gcc 7.3.0

      下載gcc 7.3.0的源碼包:

      wget?http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

      解壓:

      tar -xzvf gcc-7.3.0.tar.gz

      設置LD_LIBRARY_PATH環境變量和C_INCLUDE_PATH環境變量:

      vi ~/.bashrc

      export LD_LIBRARY_PATH=/usr/local/gmp-6.1.1/lib:/usr/local/mpfr-4.0.2/lib:/usr/local/mpc-1.1.0/lib:/usr/local/isl-0.18/lib:${LD_LIBRARY_PATH}

      export C_INCLUDE_PATH=/usr/local/gmp-6.1.1/include:/usr/local/mpfr-4.0.2/include:/usr/local/mpc-1.1.0/include:/usr/local/isl-0.18/include:${C_INCLUDE_PATH}

      source ~/.bashrc

      cd gcc-7.3.0

      ./configure CFLAGS='-fstack-protector-strong -Wl,-z,noexecstack -Wl,-z,relro,-z,now' --prefix=/usr/local/gcc-7.3.0 --with-gmp=/usr/local/gmp-6.1.1 --with-mpfr=/usr/local/mpfr-4.0.2 --with-mpc=/usr/local/mpc-1.1.0 --with-isl=/usr/local/isl-0.18 --disable-multilib --enable-languages=c,c++

      make -j

      編譯過程中報內存不足了:

      可以去掉-j參數編譯,但這樣速度會降低很多

      (不帶-j參數的嘗試)

      這回好像沒報錯,只是時間要長一點,耐心等待編譯結束吧。。。

      (帶-j參數的嘗試)

      經過跟openGauss編譯專家的咨詢,make -j不帶數字,會一直加并發數。

      可以考慮指定值,一般設置為? cpu數 X 2。目前張小白虛擬機分配了4個CPU,故可以使用make -j8再試一次:

      這樣也能編譯成功。

      然后執行安裝:

      make install -j

      編譯完畢,檢查編譯結果:

      cd /usr/local/gcc-7.3.0/bin

      ./gcc --version

      ./g++ --version

      或者如果LANG設成中文的話:

      現在替換掉系統的gcc

      這樣,在任何目錄下,執行gcc和g++都是新的7.3.0的版本了。

      (8)編譯cmake 3.18.6

      獲取cmake源碼包:

      wget?https://github.com/Kitware/CMake/releases/download/v3.18.6/cmake-3.18.6.tar.gz

      tar -xzvf cmake-3.18.6.tar.gz

      cd cmake-3.18.6

      ./configure --prefix=/usr/local/cmake-3.18

      好像報錯了,說GLIBCXX_3.4.20找不到。

      搜了下,發現解決方法可能是升級libstdc++

      yum provides libstdc++.so.6

      yum install libstdc+±4.8.5-44.el7.i686

      按Y繼續:

      cd /usr/lib64

      rm libstdc++.so.6

      cp /usr/local/gcc-7.3.0/lib64/libstdc++.so.6.0.24 .

      ln -s libstdc++.so.6.0.24 libstdc++.so.6

      刪除解壓后的目錄,重新解壓,再重新configure:

      rm -rf?cmake-3.18.6

      tar -xzvf cmake-3.18.6.tar.gz

      ./configure --prefix=/usr/local/cmake-3.18.6

      又報了一個沒openssl的錯。

      安裝openssl-devel:

      yum install openssl-devel

      再來:

      ./configure --prefix=/usr/local/cmake-3.18.6

      make -j8

      。。。

      make install -j

      檢查版本:

      將CMAKE_ROOT加入環境變量:

      export CMAKE_ROOT=/usr/local/cmake-3.18.6

      export PATH=$CMAKE_ROOT/bin:$PATH

      source ~/.bashrc

      cmake -version

      6、修改Python默認版本

      將默認版本改為Python 3.6

      注意:這樣修改之后,yum直接執行會報錯,應使用python2 yum xxx來執行yum腳本。

      四、源碼編譯openGauss

      采用手工編譯方式:

      cd?openGauss-server

      先獲取自己的系統腳本:

      sh src/get_PlatForm_str.sh

      結果是?centos7.6_x86_64

      (在命令行)執行以下腳本:

      export CODE_BASE=/root/openGauss-server # openGauss-server的路徑 export BINARYLIBS=/root/binarylibs # binarylibs的路徑 export GAUSSHOME=$CODE_BASE/dest/ export GCC_PATH=$BINARYLIBS/buildtools/centos7.6_x86_64/gcc7.3/ export CC=$GCC_PATH/gcc/bin/gcc export CXX=$GCC_PATH/gcc/bin/g++ export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH

      其實張小白在這里發現了一個問題,就是盡管張小白辛辛苦苦的做了gcc 7.3.0的源碼編譯,但是上面的環境變量明顯又將gcc的路徑指向了?$BINARYLIBS/buildtools/centos7.6_x86_64/gcc7.3/ ,這可能表明,前面gcc源碼編譯過程有點浪費時間,直接用現成的就好了。

      編譯release版本:

      ./configure --gcc-version=7.3.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --with-readline --without-zlib

      make -s -j8

      注:-s是把一些信息不打印出來

      (如果直接使用make -sj 會報內存不足的錯)

      (使用make -s -j8試試)

      make -s -j8

      (不帶-j參數速度會有點慢,但是也可以編譯成功)

      make -s

      耐心等待一下。。

      。。。

      安裝:

      make install -sj

      查看編譯的結果——編譯后軟件安裝路徑為:$GAUSSHOME

      五、編譯后的驗證

      1、創建用戶omm、設置環境變量

      先建 omm的用戶:

      useradd omm -g dbgrp

      passwd omm

      在.bashrc中增加以下參數:

      export GAUSSHOME=/root/openGauss-server/dest/?##編譯結果的路徑

      export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH

      export PATH=$GAUSSHOME/bin:$PATH

      source ~/.bashrc

      2、初始化數據庫

      建立 數據文件目錄:

      mkdir ~/data

      chmod 777 /root

      chown -R omm /root/openGauss-server

      chgrp -R dbgrp?/root/openGauss-server

      gs_initdb -D /home/omm/data --nodename=db1

      3、啟動數據庫

      根據上面的提示,執行 gs_ctl start -D /home/omm/data -Z single_node -l /home/omm/log/opengauss.log

      檢查進程情況:

      檢查數據庫狀態:

      gs_ctl query -D /home/omm/data

      使用gsql進入命令行:

      gsql -d postgres

      4、數據庫操作驗證

      我們用?張小白帶你使用CentOS 7.6安裝openGauss 2.0.1企業版?的辦法做個驗證:

      先得修改密碼:

      ALTER ROLE omm PASSWORD 'Home@2021';

      然后試驗一些建庫,建表和查詢語句:

      好像沒啥問題。

      六、源碼編譯openGauss-OM

      源碼編譯完openGauss-server代碼倉之后,并沒有生成一個gs_om的管理工具。所以沒有辦法執行gs_om -t status這些命令。

      因為om的包需要編譯 openGauss-OM 代碼倉。

      打開?openGauss-OM的代碼倉地址:https://gitee.com/opengauss/openGauss-OM.git

      點擊克隆,復制地址,然后做git clone:

      根據代碼倉的readme文檔:

      由于第三方庫已經準備好了,應該可以直接執行下面的語句了:

      cd openGauss-OM

      chmod +x build.sh

      export BINARYLIBS_PATH=/root/binarylibs

      ./build.sh -3rd $BINARYLIBS_PATH

      openGauss-OM的編譯結果在package目錄下:

      解壓:

      解壓出來主要有3個目錄:script、simpleInstall、lib。

      gs_om在script目錄下。

      不過,并不是說將這個目錄下的內容拷貝到 前面已經裝好的openGauss-server/dest目錄下就可以了。

      openGauss的老師告訴我,需要先生成openGauss-server的安裝包、把這個om的gz包拷貝到安裝包所在的目錄,再按照 企業版安裝的方式安裝。

      企業版的安裝過程張小白在?https://www.modb.pro/db/111793?文檔已經有過詳細描述,那么下面要完成的事情是制作產品安裝包。

      七、制作和驗證openGauss-server產品安裝包

      1、制作openGuass-server產品安裝包

      可參考?產品安裝包編譯

      cd /root/openGauss-server

      sh build.sh -m release -3rd /root/binarylibs -pkg

      確實,制作過程中出現很多錯誤,很難相信這是制作成功了。到底對不對呢?試試就知道了,時間是檢驗真理的唯一標準。

      進入output目錄,確實生成了5個包:包含?symbol符號包(用來調試定位數據庫coredump問題)、libpq接口包(鏈接驅動的基礎,odbc、python驅動基于libpq)、openGauss-server包、tools工具包、upgrade升級包等等。

      將前面編譯好的 openGauss-OM的gz包拷貝過來:

      2、停止當前openGuass運行

      將現在的openGauss停掉:

      然后參考 張小白前一篇文檔?https://www.modb.pro/db/111793?開始安裝:

      3、清理openGauss安裝環境

      先清理現有環境(由于當前試驗的數據庫在 /home/omm/data下,跟企業版文檔中的目錄不一樣。也可以暫時不刪)

      mkdir -p /opt/software/openGauss

      chmod 755 -R /opt/software

      cd /opt/software/openGauss

      cp /root/openGauss-server/output/openGauss-2.0.0-CentOS-64bit.tar.bz2 .

      cp /root/openGauss-server/output/openGauss-2.0.0-CentOS-64bit.tar.sha256 .

      cp /root/openGauss-server/output/openGauss-2.0.0-CentOS-64bit.sha256 .

      cp /root/openGauss-OM/package/openGauss-2.0.0-CentOS-64bit-om.tar.gz .

      cp /root/openGauss-OM/package/openGauss-2.0.0-CentOS-64bit-om.sha256 .

      rm -rf /opt/huawei

      rm -rf /var/log/omm

      mv /home/omm /home/omm.old

      userdel omm

      4、準備安裝配置文件cluster_config.xml

      看一下當前的IP:192.168.111.131

      vi cluster_config.xml

      5、執行安裝前腳本

      tar -zxvf openGauss-2.0.0-CentOS-64bit-om.tar.gz

      cd script

      ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml

      (如果啟動有異常,可檢查 /etc/hosts中有沒有配置 db1的主機名,該IP是否跟cluster_config.xml的IP地址保持一致等等。)

      密碼輸入的是Home@2021

      6、執行安裝腳本

      切換到omm用戶:

      env檢查下GAUSS_ENV等環境變量:

      gs_install -X /opt/software/openGauss/cluster_config.xml --gsinit-parameter="--locale=zh_CN.utf8"

      安裝完畢。

      7、安裝后驗證

      gsql -d postgres -p 15400

      這些方式跟張小白的前一篇文字的實驗結果基本相同。可見 使用源碼編譯后制作的安裝包進行安裝,暫時沒有任何問題。

      八、后記和感謝

      在本文編寫過程中,得到了 @行塵、@劉圣熙、@Gauss松鼠會小助手 等專家的指點,為此特意表示感謝!

      (全文完,謝謝閱讀)

      CentOS Python 云數據庫 GaussDB(for openGauss) 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【讀書會第十二期】Java內存模型與線程
      下一篇:寫在國產接口管理工具ApiPost 5.2.5發布后的一些話
      相關文章
      亚洲综合成人网在线观看| 亚洲国产精品久久久久| 国产成人A亚洲精V品无码| 亚洲国产精品无码av| 久久精品亚洲一区二区三区浴池 | 亚洲av成人一区二区三区在线播放| 亚洲人成精品久久久久| 亚洲精品无码国产片| 亚洲精品偷拍无码不卡av| 久久久久亚洲AV成人网人人软件| 在线亚洲午夜片AV大片| 亚洲国产日韩一区高清在线| 亚洲AV无码码潮喷在线观看| 狠狠色婷婷狠狠狠亚洲综合| 亚洲精品无码AV中文字幕电影网站| 色老板亚洲视频免在线观| 亚洲精品线在线观看| 久久精品国产亚洲精品2020| 亚洲精品国产情侣av在线| 亚洲图片中文字幕| 日产亚洲一区二区三区| 亚洲码一区二区三区| 亚洲精品123区在线观看| 亚洲精品国产成人| 亚洲视频无码高清在线| 亚洲国产精品无码中文lv| 亚洲国产成人AV在线播放| 亚洲国产成人久久综合野外| 亚洲男同gay片| 亚洲综合一区国产精品| 亚洲AV无码男人的天堂| 亚洲午夜福利精品久久| 亚洲不卡无码av中文字幕| 国产亚洲精品线观看动态图| 亚洲成A∨人片在线观看不卡| 中文字幕亚洲色图| 2022年亚洲午夜一区二区福利| 亚洲国产成人久久精品app| 亚洲第一二三四区| 亚洲国产精品精华液| 亚洲乱码中文字幕综合234|