Ambari源码编译版本号问题

本文详细介绍了Ambari源码编译过程中遇到的版本号问题,包括Ambari Main系和Ambari Metrics系的版本号继承差异,以及版本号格式规范和验证。在编译Ambari Server时,由于Ambari Metrics模块版本号与其他模块不一致导致的编译错误。解决方案是统一Ambari Main系和Ambari Metrics系的版本号格式,并在编译前确保所有子模块版本号一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ambari子模块继承两套版本号

Ambari有很多个模块,最顶层的是Ambari Main(Ambari主模块)。大部分模块的版本号继承自Ambari Main,而Ambari Metrics及其下面的模块则未继承自Ambari Main,下面姑且分别称之为Ambari Main系和Ambari Metrics系。

Ambari Main系

Ambari > Ambari Project > Ambari Web/Server/Agent ……

Ambari Web/Server/Agent等模块都继承了Ambari Project模块的版本号,参见Ambari Server的pom.xml:

/ambari-branch-2.2.1/ambari-server/pom.xml

<parent>
    <groupId>org.apache.ambari</groupId>
    <artifactId>ambari-project</artifactId>
    <version>2.2.1.0.0</version>
    <relativePath>../ambari-project</relativePath>
</parent>

Ambari Project模块则又继承了Ambari Main的版本号,参见Ambari Project的pom.xml:

/ambari-branch-2.2.1/ambari-project/pom.xml

<parent>
    <groupId>org.apache.ambari</groupId>
    <artifactId>ambari</artifactId>
    <version>2.2.1.0.0</version>
</parent>

Ambari Metrics系

Ambari Metrics > Ambari Metrics Common/Collector/Monitor……

Ambari Metrics模块并未继承Ambari Main的版本号,Ambari Metrics的pom.xml中未配置<parent>标签:

/ambari-branch-2.2.1/ambari-metrics//pom.xml

Ambari Metrics Common/Collector/Monitor等模块则继承了Ambari Metrics模块的版本号,参见Ambari Metrics Common的pom.xml:

/ambari-branch-2.2.1/ambari-metrics/ambari-metrics-common/pom.xm

<parent>
    <artifactId>ambari-metrics</artifactId>
    <groupId>org.apache.ambari</groupId>
    <version>2.2.1.0.0</version>
</parent>

以我们下载的Ambari 2.2.1版本的源码为例,Ambari Main的原始版本号为2.2.1.0.0,Ambari Project/Web/Server/Agent/Metrics等模块的原始版本号也是2.2.1.0.0。
执行以下命令修改Ambari Main的版本号至2.2.1.1:

# cd /ambari/ambari-branch-2.2.1
# mvn versions:set -DnewVersion=2.2.1.1

然后查看各个模块的pom.xml发现,Ambari Project/Server/Agent等模块pom文件中版本号都已经更新为2.2.1.1,而Ambari Metrics模块的pom文件中版本号依然为2.2.1.0.0。

执行以下命令对Ambari Main进行编译:

# mvn -B install package rpm:rpm -DnewVersion=2.2.1.1
 -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl

编译结束后,可以发现
Ambari Web/Views等模块已经生成了版本号为2.2.1.1的rpm包:

/ambari-branch-2.2.1/ambari-web/target/rpm/ambari-web/RPMS/noarch/ambari-web-2.2.1.1-1.noarch.rpm

而Ambari Metrics模块生成的依然是版本号为2.2.1.0的rpm包:

/ambari-branch-2.2.1/ambari-metrics/target/rpm/ambari-metrics/RPMS/noarch/ambari-metrics-2.2.1.0-0.noarch.rpm

版本号格式规范

pom.xml文件中以正则表达式限定各模块的各种版本号格式。

parse-version

<execution>
    <id>regex-property</id>
    <goals>
    <goal>regex-property</goal>
    </goals>
    <configuration>
        <name>ambariVersion</name>
        <value>${project.version}</value>
        <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
        <replacement>$1.$2.$3.$4</replacement>
        <failIfNoMatch>false</failIfNoMatch>
    </configuration>
</execution>

parse-package-version

Ambari Main系

参见Ambari的pom.xml:

/ambari-branch-2.2.1/pom.xml

<execution>
  <id>parse-package-version</id>
  <goals>
        <goal>regex-property</goal>
  </goals>
  <configuration>
    <name>package-version</name>
    <value>${project.version}</value>
    <r
<think>好的,我现在需要帮助用户了解如何编译Ambari源码。根据用户提供的引用内容,我需要整理出一个清晰的步骤指南。首先,我应该回顾用户给出的四个引用,看看它们提供了哪些关键信息。 引用[1]提到在Redhat上编译ambari-2.7.4的整个过程,包括编译准备、编译步骤和异常处理。这可能涵盖环境准备、源码修改、编译命令以及常见问题解决。引用[3]给出了具体的下载和解压命令,使用的是ambari 2.4.0版本的源码。这可能说明不同版本的Ambari编译步骤上可能有差异,需要注意版本的选择。引用[2]提到了下载node-8.6.0-linux-x64.tar.gz到特定目录,这可能是在解决依赖问题中的一个步骤,说明在编译过程中可能需要手动处理某些依赖项。引用[4]则涉及到环境变量的配置,使用mvn命令检查版本,这提示编译需要Maven,并且版本要正确配置。 接下来,我需要将这些信息整合成一个结构化的编译步骤。首先,用户需要准备环境,包括安装必要的工具如JDK、Maven、Python、RPM构建工具等。然后下载并解压源码,根据不同的版本选择对应的源码包。接着,配置环境变量,尤其是Maven的配置,确保依赖下载正确。可能还需要修改源码配置,比如调整pom.xml中的仓库地址或依赖版本。然后进行编译,使用mvn命令,但可能会遇到依赖下载问题,需要手动下载并放置到指定目录。最后,处理可能出现的异常,比如网络问题导致的依赖下载失败,或者版本不兼容的情况。 需要注意的是,用户提供的引用中有不同版本的Ambari(2.7.4和2.4.0),需要指出版本差异可能带来的步骤变化。另外,手动下载依赖并放置到Maven本地仓库的步骤可能对于新手来说比较复杂,需要详细说明路径和操作方法。同时,环境变量的配置是否正确会影响编译过程,必须强调检查步骤。 用户可能遇到的问题包括依赖下载慢或失败、环境配置错误、版本不兼容等。需要提前在步骤中提醒用户注意这些点,并在常见问题部分给出解决方案,比如更换Maven镜像源,手动下载依赖,检查环境变量等。 最后,生成的相关问题应该围绕编译过程中可能遇到的挑战、不同版本的编译差异、环境配置的重要性以及编译后的安装步骤展开,帮助用户全面了解整个流程。</think>### Ambari源码编译步骤指南 #### 一、环境准备 1. **系统要求**:需基于Redhat/CentOS系统,建议使用干净的环境以减少依赖冲突[^1]。 2. **安装基础工具**: ```bash yum install -y git tar gcc make rpm-build python-devel openssl-devel ``` 3. **配置Java与Maven**: - 安装JDK 1.8+并配置环境变量。 - 安装Maven 3.6+,通过`mvn --version`验证版本,并配置`~/.m2/settings.xml`使用阿里云镜像加速依赖下载[^4]。 #### 二、源码下载与解压 根据版本需求选择源码包: - **Ambari 2.7.4**:需从Apache镜像站获取(引用未提供直接链接,需用户自行搜索)。 - **Ambari 2.4.0**: ```bash wget http://archive.apache.org/dist/ambari/ambari-2.4.0/apache-ambari-2.4.0-src.tar.gz tar xfvz apache-ambari-2.4.0-src.tar.gz [^3] ``` #### 三、依赖配置与编译 1. **手动处理依赖**(若自动下载失败): - 示例:将`node-8.6.0-linux-x64.tar.gz`下载到`/root/.m2/repository/com/github/eirslett/node/8.6.0/`[^2]。 2. **编译命令**: ```bash cd ambari-{version}-src mvn -B clean install rpm:rpm -DskipTests -Dpython.ver="python>=2.6" [^1] ``` - `-DskipTests`跳过测试以加快编译速度。 - 若遇到Python版本错误,需指定`-Dpython.ver`参数。 #### 四、异常处理 1. **依赖下载失败**: - 手动下载缺失文件至Maven本地仓库对应路径。 - 检查`pom.xml`中仓库配置,可替换为国内镜像源。 2. **环境变量问题**: - 执行`source ~/.bash_profile`刷新配置[^4]。 3. **RPM打包失败**: - 确认`rpm-build`工具已安装。 #### 五、编译输出 编译成功后,RPM包生成路径: ```bash ls ambari-{version}-src/ambari-server/target/rpm/ambari-server/RPMS/noarch/ ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值