编译ovirt-engine
编译前需要根据如下链接安装编译环境工具链。
https://gitee.com/openkylin/ovirt-engine/tree/4.4.0.2-dev/
配置编译环境
- 安装java-11。
1 2
yum install java-11-openjdk.aarch64 -y yum install java-11-openjdk-devel.aarch64 -y
- 配置java、javac。
1 2
alternatives --config java alternatives --config javac
选择java-11-openjdk.aarch64对应的序号,截图示例java-11-openjdk的编号是2。
- 验证Maven版本。
1
mvn -v | head -1
- 配置JAVA_HOME。
- 配置JAVA_HOME路径。
1 2
export JAVA_HOME=/lib/jvm/java-11 source ~/.bashrc
- 查看java版本信息。
1
mvn -v | grep "Java version: "
- 配置JAVA_HOME路径。
安装moduler_el8 rpm包
- 进入“/opt/ovirt/centos/8.1.1911/PowerTools/os/”目录。
1
cd /opt/ovirt/centos/8.1.1911/PowerTools/os/
- 安装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
- 安装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
- 安装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源码
- 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>
- 下载编译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
编译ovirt-engine源码
- 下载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
- 配置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>
- 执行编译。
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
- 更新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 .
- 更新yum。
1 2
yum clean all yum makecache
安装ovirt-engine rpm包
- 安装依赖包。
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
- 安装PostgreSQL系列依赖。
1 2 3
yum install postgresql-contrib -y yum install postgresql-jdbc -y yum install postgresql-server -y
- 安装Python3系列依赖。
1 2
yum install python3-dnf-plugin-versionlock -y yum install python3-mod_wsgi -y
- 安装Rsyslog系列依赖。
1
yum install rsyslog-elasticsearch rsyslog-mmjsonparse rsyslog-mmnormalize -y
- 安装ovrit-engine。
- 安装依赖包。
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
- 通过localinstall 安装本地编译出来的ovirt-engine 系列包。
1 2
cd /opt/ovirt/ovirt-engine-repo/ yum localinstall ovirt-engine* -y
- 创建hugetlbfs系统组。
1
groupadd -r hugetlbfs
- 安装依赖包。
