更新时间:2022-05-12 GMT+08:00
分享

编译ovirt-engine

编译前需要根据如下链接安装编译环境工具链。

https://gitee.com/openkylin/ovirt-engine/tree/4.4.0.2-dev/

配置编译环境

  1. 安装java-11。

    1
    2
    yum install java-11-openjdk.aarch64 -y
    yum install java-11-openjdk-devel.aarch64 -y
    

  2. 配置java、javac。

    1
    2
    alternatives --config java
    alternatives --config javac
    

    选择java-11-openjdk.aarch64对应的序号,截图示例java-11-openjdk的编号是2。

  3. 验证Maven版本。

    1
    mvn -v | head -1
    

  4. 配置JAVA_HOME。

    1. 配置JAVA_HOME路径。
      1
      2
      export JAVA_HOME=/lib/jvm/java-11
      source ~/.bashrc
      
    2. 查看java版本信息。
      1
      mvn -v | grep "Java version: "
      

安装moduler_el8 rpm包

  1. 进入“/opt/ovirt/centos/8.1.1911/PowerTools/os/”目录。

    1
    cd /opt/ovirt/centos/8.1.1911/PowerTools/os/
    

  2. 安装assertj-core包。

    1
    rpm --reinstall assertj-core-3.8.0-2.module_el8.0.0+30+832da3a1.noarch.rpm mockito-1.10.19-17.module_el8.0.0+30+832da3a1.noarch.rpm cglib-3.2.4-7.module_el8.0.0+30+832da3a1.noarch.rpm hamcrest-1.3-23.module_el8.0.0+30+832da3a1.noarch.rpm junit-4.12-9.module_el8.0.0+30+832da3a1.noarch.rpm hamcrest-core-1.3-23.module_el8.0.0+30+832da3a1.noarch.rpm objectweb-asm-6.2-5.module_el8.0.0+30+832da3a1.noarch.rpm  objenesis-2.6-2.module_el8.0.0+30+832da3a1.noarch.rpm easymock-3.5-4.module_el8.0.0+30+832da3a1.noarch.rpm qdox-2.0-3.M9.module_el8.0.0+30+832da3a1.noarch.rpm
    

  3. 安装javapackages-local包。

    1
    rpm --reinstall javapackages-tools-5.3.0-2.module_el8.0.0+30+832da3a1.noarch.rpm javapackages-filesystem-5.3.0-2.module_el8.0.0+30+832da3a1.noarch.rpm xmvn-install-3.0.0-21.module_el8.0.0+30+832da3a1.noarch.rpm xmvn-subst-3.0.0-21.module_el8.0.0+30+832da3a1.noarch.rpm javapackages-filesystem-5.3.0-2.module_el8.0.0+30+832da3a1.noarch.rpm xmvn-api-3.0.0-21.module_el8.0.0+30+832da3a1.noarch.rpm xmvn-core-3.0.0-21.module_el8.0.0+30+832da3a1.noarch.rpm beust-jcommander-1.71-5.module_el8.0.0+30+832da3a1.noarch.rpm javapackages-local-5.3.0-2.module_el8.0.0+30+832da3a1.noarch.rpm python3-javapackages-5.3.0-2.module_el8.0.0+30+832da3a1.noarch.rpm xmvn-resolve-3.0.0-21.module_el8.0.0+30+832da3a1.noarch.rpm apache-commons-compress-1.18-1.module_el8.0.0+30+832da3a1.noarch.rpm
    

  4. 安装maven-enforcer-plugin包。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /opt/ovirt/centos/8.1.1911/AppStream/os/
    rpm --reinstall jackson-annotations-2.9.9-1.module_el8.1.0+233+b2be703e.noarch.rpm jackson-core-2.9.9-1.module_el8.1.0+233+b2be703e.noarch.rpm jackson-databind-2.9.9.2-1.module_el8.1.0+233+b2be703e.noarch.rpm
    cd /opt/ovirt/centos/8.1.1911/PowerTools/os/
    rpm --reinstall apache-commons-lang-2.6-21.module_el8.0.0+30+832da3a1.noarch.rpm
    rpm --reinstall maven-enforcer-plugin-1.4.1-8.module_el8.0.0+30+832da3a1.noarch.rpm maven-enforcer-api-1.4.1-8.module_el8.0.0+30+832da3a1.noarch.rpm maven-enforcer-rules-1.4.1-8.module_el8.0.0+30+832da3a1.noarch.rpm maven-plugin-testing-harness-3.3.0-12.module_el8.0.0+30+832da3a1.noarch.rpm  plexus-containers-container-default-1.7.1-8.module_el8.0.0+30+832da3a1.noarch.rpm maven-artifact-transfer-0.9.0-4.module_el8.0.0+30+832da3a1.noarch.rpm maven-common-artifact-filters-3.0.1-4.module_el8.0.0+30+832da3a1.noarch.rpm maven-dependency-tree-3.0-5.module_el8.0.0+30+832da3a1.noarch.rpm plexus-i18n-1.0-0.11.b10.4.module_el8.0.0+30+832da3a1.noarch.rpm plexus-archiver-3.6.0-1.module_el8.0.0+30+832da3a1.noarch.rpm plexus-io-3.0.0-2.module_el8.0.0+30+832da3a1.noarch.rpm bsh-2.0-13.b6.module_el8.0.0+30+832da3a1.noarch.rpm log4j12-1.2.17-22.module_el8.0.0+30+832da3a1.noarch.rpm xbean-4.8-1.module_el8.0.0+30+832da3a1.noarch.rpm xz-java-1.8-2.module_el8.0.0+30+832da3a1.noarch.rpm jline-2.14.6-2.module_el8.0.0+30+832da3a1.noarch.rpm bsf-2.4.0-30.module_el8.0.0+30+832da3a1.noarch.rpm
    rpm --reinstall plexus-containers-container-default-1.7.1-8.module_el8.0.0+30+832da3a1.noarch.rpm maven-project-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-plugin-annotations-3.5.1-4.module_el8.0.0+30+832da3a1.noarch.rpm maven-artifact-manager-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm  maven-artifact-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-model-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-plugin-registry-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm    maven-profile-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-settings-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-plugin-registry-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm
    rpm --reinstall plexus-archiver-3.6.0-1.module_el8.0.0+30+832da3a1.noarch.rpm plexus-io-3.0.0-2.module_el8.0.0+30+832da3a1.noarch.rpm xz-java-1.8-2.module_el8.0.0+30+832da3a1.noarch.rpm
    rpm --reinstall maven-project-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-artifact-manager-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-artifact-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-model-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-plugin-registry-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-profile-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-settings-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-artifact-2.2.1-59.module_el8.0.0+30+832da3a1.noarch.rpm maven-plugin-annotations-3.5.1-4.module_el8.0.0+30+832da3a1.noarch.rpm
    yum install ovirt-jboss-modules-maven-plugin.noarch -y
    

编译ovirt-engine-api-model源码

  1. Maven代理配置,修改/etc/maven/settings.xml文件,添加如下配置。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?xml version="1.0"?>
    <settings xmlns="http://maven.apache.org/POM/4.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
              http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
            <mirror>
                    <id>ovirt-maven-repository</id>
                    <name>oVirt artifactory proxy</name>
                    <url>http://artifactory.ovirt.org/artifactory/ovirt-mirror</url>
                    <mirrorOf>*</mirrorOf>
            </mirror>
            <mirror>
                    <id>root-maven-repository</id>
                    <name>Official maven repo</name>
                    <url>http://repo.maven.apache.org/maven2</url>
                    <mirrorOf>*</mirrorOf>
            </mirror>
    </mirrors>
    <proxies>
    <proxy>
          <id>optional</id>
          <active>true</active>
          <protocol>http</protocol>
          <host>$proxyHost</host>
          <port>$proxyPort</port>
          <username>$account</username>
          <password>$password</password>
          <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>
    </proxies>
    </settings>
    
    • 此处$proxyHost、$proxyPort、$account、$password需根据实际情况替换。同时注意$password密码当中有特殊字符直接使用,不需要转义。
    • 如果使用的代理为cntlm类不需要账号密码类代理,仅需要配置$proxyHost和$proxyPort。为防止报Not Authorized by proxy错误,需要删除Maven配置文件 “/etc/maven/settings.xml”中的如下两行:
      1
      2
      <username>$account</username>
      <password>$password</password>
      

  2. 下载编译ovirt-engine-api-model源码。

    1
    2
    3
    4
    5
    6
    7
    8
    cd /opt/ovirt/
    rm -rf ovirt-engine-api-model
    git clone https://gitee.com/openkylin/ovirt-engine-api-model.git
    cd ovirt-engine-api-model
    git checkout -b 4.4.15-dev origin/4.4.15-dev
    mkdir -p /root/.gem/jruby/1.9
    unset JAVA_HOME
    mvn clean install -DskipTests
    

    编译安装前需先取消JAVA11配置,编译完成后,参考配置编译环境章节恢复JAVA11配置。

编译ovirt-engine源码

  1. 下载ovirt-engine源码。

    1
    2
    3
    cd /opt/ovirt/
    git clone -b 4.4.0.2-dev https://gitee.com/openkylin/ovirt-engine.git
    cd ovirt-engine
    

  2. 配置Maven代理,在“automation/build-artifacts.sh”文件中添加如下内容。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    <proxies>
    <proxy>
    <id>optional</id>
    <active>true</active>
    <protocol>http</protocol>
    <host>$proxyHost</host>
    <port>$proxyPort</port>
    <username>$account</username>
    <password>$password</password>
    <nonProxyHosts>localhost</nonProxyHosts>
    </proxy>
    </proxies>
    

    • 部分模块采用mvn源码编译安装的方式,需要通过代理访问Maven中心仓,此处提前配置。其中$proxyHost、$proxyPort、$account、$password配置需根据实际情况替换。
    • 注意$password密码当中有特殊字符可直接使用,不需要转义。
    • 如果使用的代理为cntlm类不需要账号密码类代理,仅需要配置$proxyHost和$proxyPort。为防止报Not Authorized by proxy错误,需要删除Maven配置文件 “/etc/maven/settings.xml”中的如下两行:
      1
      2
      <username>$account</username>
      <password>$password</password>
      

  3. 执行编译。

    1
    2
    3
    ulimit -n 10240
    sed -i "s/BUILD_LOCALES=0/BUILD_LOCALES=1/g" automation/build-artifacts.sh
    sudo ./automation/build-artifacts.sh
    

    首次执行该脚本编译ovirt-engine失败是正常的,会报"Platform linux:aarch64 not supported"异常。该错误是由于mvn中心仓中sass低版本不支持aarch64,需要修改成高版本支持。忽略此处异常,继续往下执行操作会修复并重新编译。

    1
    2
    3
    4
    libsassFile=`find ~/.m2/repository/ -name libsass* | grep pom | grep -v ".sha"`
    version=`grep "jsass" $libsassFile -A 1 | grep "version" | awk -F">" '{print $2}' | awk -F"<" '{print $1}'`
    sed -i "s/$version/5.10.3/g" $libsassFile
    ./automation/build-artifacts.sh
    

更新ovirt-engine-local repo

  1. 更新ovirt-engine-repo源文件。

    1
    2
    3
    4
    cp /opt/ovirt/ovirt-engine/exported-artifacts/*rpm /opt/ovirt/ovirt-engine-repo/
    cd /opt/ovirt/ovirt-engine-repo/
    rm -rf ovirt-engine-*src.rpm
    createrepo_c .
    

  2. 更新yum。

    1
    2
    yum clean all
    yum makecache
    

安装ovirt-engine rpm包

  1. 安装依赖包。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    cd /opt/ovirt/centos/8.1.1911/PowerTools/os/
    rpm --reinstall apache-commons-compress-1.18-1.module_el8.0.0+30+832da3a1.noarch.rpm apache-commons-jxpath-1.3-29.module_el8.0.0+30+832da3a1.noarch.rpm
    yum install apache-commons-configuration -y
    yum install collectd-disk collectd-postgresql collectd-write_http collectd-write_syslog -y
    yum install liblognorm -y
    yum install python3-m2crypto -y
    yum install python3-daemon -y
    cd /opt/ovirt/ovirt-engine-repo/
    rpm -ivh python3-ovirt-engine-lib-*rpm
    yum install ovirt-cockpit-sso -y
    yum install ovirt-ansible-roles -y
    

  2. 安装PostgreSQL系列依赖。

    1
    2
    3
    yum install postgresql-contrib -y
    yum install postgresql-jdbc -y
    yum install postgresql-server -y
    

  3. 安装Python3系列依赖。

    1
    2
    yum install python3-dnf-plugin-versionlock -y
    yum install python3-mod_wsgi -y
    

  4. 安装Rsyslog系列依赖。

    1
    yum install rsyslog-elasticsearch rsyslog-mmjsonparse rsyslog-mmnormalize -y
    

  5. 安装ovrit-engine。

    1. 安装依赖包。
      1
      2
      3
      4
      5
      yum install snmp4j ws-commons-util xmlrpc-client -y
      yum install ovirt-web-ui -y
      yum install ovirt-engine-websocket-proxy -y
      cd /opt/ovirt/centos/8.1.1911/PowerTools/os
      rpm --reinstall slf4j-jdk14-1.7.25-4.module_el8.0.0+30+832da3a1.noarch.rpm
      
    2. 通过localinstall 安装本地编译出来的ovirt-engine 系列包。
      1
      2
      cd /opt/ovirt/ovirt-engine-repo/
      yum localinstall ovirt-engine* -y
      
    3. 创建hugetlbfs系统组。
      1
      groupadd -r hugetlbfs
      

分享:

    相关文档

    相关产品

close