rpmbuild淘宝datax代码,File not found问题解决

原创,转载请注明出处。

首先批评一下:淘宝开源了数据抽取的工具datax,但是他在开源之后后续技术支持简直惨不忍睹。技术文档完全不是一个业内技术航母应有的范儿,文档水准简直业余。个人觉得,你既然支持开源,起码也要尊重开源,随便搞了一个文档就想糊弄,要知道这个使用者带来很大问题,并花费很多时间。

在RHEL 6.2 rpmbulid datax源码包,出现报错信息:

[code="java"]
# rpmbuild -ba t_dp_datax_engine.spec
。。。。。
Processing files: t_dp_datax_engine-1.0.0-1.noarch
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/bin
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/conf
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/engine
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/common
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/libs
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/logs
error: File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/jobs


RPM build errors:
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/bin
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/conf
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/engine
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/common
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/libs
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/logs
File not found: /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64/home/taobao/datax/jobs
[/code]

我知道这是rhel 6.2的rpmbuild的buildroot的目录和rhel 5不一样。上述问题的解决方法:
修改t_dp_datax_engine.spec。
[code="java"]
# cat t_dp_datax_engine.spec
summary: engine provides core scheduler and data swap storage for DataX
Name: t_dp_datax_engine
Version: 1.0.0
Release: 1
Group: System
License: GPL
AutoReqProv: no
BuildArch: noarch

%define dataxpath /home/taobao/datax //改成%{buildroot}/home/taobao/datax
%define vdataxpath /home/taobao/datax //添加,其中vdataxpath下面要用

%description
DataX Engine provides core scheduler and data swap storage for DataX

%prep
cd ${OLDPWD}/../
export LANG=zh_CN.UTF-8
ant dist

%build

%install
dos2unix ${OLDPWD}/../release/datax.py

mkdir -p %{dataxpath}/bin
mkdir -p %{dataxpath}/conf
mkdir -p %{dataxpath}/engine
mkdir -p %{dataxpath}/common
mkdir -p %{dataxpath}/libs
mkdir -p %{dataxpath}/jobs
mkdir -p %{dataxpath}/logs

cp ${OLDPWD}/../jobs/sample/*.xml %{dataxpath}/jobs
cp ${OLDPWD}/../release/*.py %{dataxpath}/bin/

cp -r ${OLDPWD}/../conf/*.properties %{dataxpath}/conf
cp -r ${OLDPWD}/../conf/*.xml %{dataxpath}/conf

cp -r ${OLDPWD}/../build/engine/*.jar %{dataxpath}/engine

cp -r ${OLDPWD}/../build/common/*.jar %{dataxpath}/common
cp ${OLDPWD}/../c++/build/libcommon.so %{dataxpath}/common

cp -r ${OLDPWD}/../libs/commons-io-2.0.1.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/commons-lang-2.4.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/dom4j-2.0.0-ALPHA-2.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/jaxen-1.1-beta-6.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/junit-4.4.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/log4j-1.2.16.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/slf4j-api-1.4.3.jar %{dataxpath}/libs
cp -r ${OLDPWD}/../libs/slf4j-log4j12-1.4.3.jar %{dataxpath}/libs

%post
chmod -R 0777 %{dataxpath}/jobs //改成chmod -R 0777 %{vdataxpath}/jobs
chmod -R 0777 %{dataxpath}/logs //改成chmod -R 0777 %{vdataxpath}/logs

%files
%defattr(0755,root,root)
%{dataxpath}/bin // 改成%{vdataxpath}/bin
%{dataxpath}/conf //改成%{vdataxpath}/conf
%{dataxpath}/engine //改成%{vdataxpath}/engine
%{dataxpath}/common //改成%{vdataxpath}/common
%{dataxpath}/libs //改成%{vdataxpath}/libs
%attr(0777,root,root) %dir %{dataxpath}/logs //改成%attr(0777,root,root)
%{vdataxpath}/logs
%attr(0777,root,root) %dir %{dataxpath}/jobs //改成 %attr(0777,root,root) %{vdataxpath}/jobs


%changelog
* Fri Aug 20 2010 meining
- Version 1.0.0
[/code]


编译结果:
[code="java"]
# rpmbuild -ba t_dp_datax_engine.spec
。。。
Processing files: t_dp_datax_engine-1.0.0-1.noarch
Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64
Wrote: /root/rpmbuild/SRPMS/t_dp_datax_engine-1.0.0-1.src.rpm
Wrote: /root/rpmbuild/RPMS/noarch/t_dp_datax_engine-1.0.0-1.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.y3UwSl
+ umask 022
+ cd /root/rpmbuild/BUILD
+ /bin/rm -rf /root/rpmbuild/BUILDROOT/t_dp_datax_engine-1.0.0-1.x86_64
+ exit 0
[/code]

至于rpmbuil的SPEC文件的定义参数含义,可以参考:
http://fedoraproject.org/wiki/How_to_create_an_RPM_package#.25install_section


以上是我解决的问题。还有一个我没能解决的问题是:
编译符合我环境的oraclewriter。
datax的文档是怎么写的:
由于Oracle最终通过jni调用oci机制导入数据, 默认情况下,DataX提供基于Intel x86_64 liboraclewriter.so包。如果你使用的平台硬件和默认情况不匹配,需要编译oraclewriter C++代码,liboraclewriter.so需要libiconv库的支持,请先检查该库是否存在。具体编译过程如下:
1) 进入 DataX源码中的c++/src/oracledumper/src/ 目录
2) 输入make命令即可编译
3) 将当前目录下编译完成的liboraclewriter.so 拷贝至/home/taobao/datax/plugins/目录下,覆盖默认的liboraclewriter.so即可

在rhel5.4的基础上面我进行了编译,虽然也是OK的,但是其中需要注意的是:
*这一步是要在oracle软件安装的那一台机器上上面去编译,并且环境变量中指定ORACLE_HOME
*要指明LD_LIBRARY_PATH
*其中还要安装libiconv库。

但是在我rhel6.2的上面上,怎么都不编译成功。
我做了以下修改trunk/c++/src/oracledumper/src/Makefile,修改的原因他是找不到jni.h.
修改如下:
[code="java"]
# cat Makefile
INCLUDE=-I../include //添加 -I${ORACLE_HOME}/jdk/include -I${ORACLE_HOME}/jdk/include/linux
LIBS=-lclntsh -liconv -L../lib -L${ORACLE_HOME}/lib -L../../../../libs/
CC=g++
OBJS=liboraclewriter.so
CFLAGS=-shared -fPIC -Wl,-rpath=/home/taobao/datax/libs
CPP=common.cpp dumper.cpp oradumper.cpp strsplit.cpp com_taobao_datax_plugins_writer_oraclewriter_OracleWriterJni.cpp

OBJS: $(CPP)
$(CC) $(INCLUDE) -o $(OBJS) $(CPP) $(CFLAGS) $(LIBS)
clean:
rm -rf $(OBJS)
[/code]


可是最终我还是卡在这里了:
[code="java"]
# make
g++ -I../include -I/home/oracle/database/product/10.2.0/db_1/jdk/include -I/home/oracle/database/product/10.2.0/db_1/jdk/include/linux -o liboraclewriter.so common.cpp dumper.cpp oradumper.cpp strsplit.cpp com_taobao_datax_plugins_writer_oraclewriter_OracleWriterJni.cpp -shared -fPIC -Wl,-rpath=/home/taobao/datax/libs -lclntsh -liconv -L../lib -L/home/oracle/database/product/10.2.0/db_1/lib -L../../../../libs/
oradumper.cpp: In member function ?.irtual void OraDumper::RunDump(const char*)?.
oradumper.cpp:305: error: invalid conversion from ?.onst char*?.to ?.har*?
oradumper.cpp:312: warning: deprecated conversion from string constant to ?.har*?
oradumper.cpp:314: warning: deprecated conversion from string constant to ?.har*?
make: *** [OBJS] Error 1
[/code]
这我就无能无力了,cpp代码不是我强项。

现在只能希望在rhel5.4的版本生成的liboraclewriter.so在rhel6.2上面能用。不然就得联系淘宝的开发人员了。
我的总结,淘宝datax对目前rhel6的支持还不够,希望跟他们联系了,能解决这个问题,晚上这个很好开源软件。

最后还是对淘宝表示敬意,希望各方面都做的像一个领导者。
rpmbuild -ba --buildroot ./UBE/ ./UBEngine-mami/SPECS/test.spec Processing files: UBEngine-mami-1.0.0.0.b007-rtos208.8.0.aarch64 error: Directory not found: /UBE/etc/mdc error: Directory not found: /UBE/etc/mdc/base-plat error: Directory not found: /UBE/etc/mdc/base-plat/aosservice error: File not found: /UBE/etc/mdc/base-plat/aosservice/IAM_server_startup.yaml error: Directory not found: /UBE/etc/mdc/base-plat/process-manager error: File not found: /UBE/etc/mdc/base-plat/process-manager/baseService.yaml error: File not found: /UBE/etc/mdc/base-plat/process-manager/bin_hash.cfg error: File not found: /UBE/etc/mdc/base-plat/process-manager/procmgr_cfg.yaml error: File not found: /UBE/etc/mdc/base-plat/process-manager/startup_procmgr.yaml error: Directory not found: /UBE/etc/mdc/base-plat/resconfig error: File not found: /UBE/etc/mdc/base-plat/resconfig/resource_config.fc error: File not found: /UBE/etc/mdc/sstoowner_vfs_cfg.yaml error: File not found: /UBE/lib64/libgroup_client.so error: File not found: /UBE/lib64/libgroup_owner.so error: File not found: /UBE/lib64/libparse_depend.so error: File not found: /UBE/lib64/libsstoowner.so error: File not found: /UBE/lib64/libunified_timer.so error: Directory not found: /UBE/usr/bin/mdc error: Directory not found: /UBE/usr/bin/mdc/base-plat error: Directory not found: /UBE/usr/bin/mdc/base-plat/aosservice error: File not found: /UBE/usr/bin/mdc/base-plat/aosservice/iammgr error: Directory not found: /UBE/usr/bin/mdc/base-plat/process-manager error: File not found: /UBE/usr/bin/mdc/base-plat/process-manager/process-manager error: Directory not found: /UBE/usr/lib/systemd/system error: File not found: /UBE/usr/lib/systemd/system/ubcm.service error: File not found: /UBE/usr/lib64/libeasy_comm.so error: File not found: /UBE/usr/lib64/libeasy_comm.so.0.1.0.0 error: File not found: /UBE/usr/lib64/libeasy_comm.so.1 error: File not found: /UBE/usr/lib64/libheartbeat.so error: File not found: /UBE/usr/lib64/libiam.so error: File not found: /UBE/usr/lib64/libiam.so.0.1.0.0 error: File not found: /UBE/usr/lib64/libiam.so.1 error: File not found: /UBE/usr/lib64/libpfstat_base.so error: File not found: /UBE/usr/lib64/libxshmem.so error: File not found: /UBE/usr/lib64/libxshmem.so.1 error: File not found: /UBE/usr/lib64/libxshmem.so.1.3.0.1 error: File not found: /UBE/usr/lib64/libyaml-0.so.2 error: File not found: /UBE/usr/lib64/libyaml-0.so.2.0.9 error: File not found: /UBE/usr/lib64/libyaml.so error: Directory not found: /UBE/usr/local/include/mami error: Directory not found: /UBE/usr/local/include/mami/mamiapi error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_acl.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_api.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_def.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_devm.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_drm.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_errno.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_event.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_ipc.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_irt.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_linkcom.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_nl.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_port.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_qos.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_route.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_tpl.h error: File not found: /UBE/usr/local/include/mami/mamiapi/mami_ubmem.h error: Directory not found: /UBE/usr/local/lib64/mami error: File not found: /UBE/usr/local/lib64/mami/libascend_protobuf.so error: File not found: /UBE/usr/local/lib64/mami/libascend_protobuf.so.3.13.0.0 error: File not found: /UBE/usr/local/lib64/mami/libbase_module.so error: File not found: /UBE/usr/local/lib64/mami/libc_sec.so error: File not found: /UBE/usr/local/lib64/mami/libmami.so error: File not found: /UBE/usr/local/lib64/mami/libmami_route_mng.so error: File not found: /UBE/usr/local/lib64/mami/libmami_route_tbl_cfg.so error: Directory not found: /UBE/usr/local/lib64/mami/module error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubacl.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ublinkcom.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubmdrm.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubmem.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubmirt.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubnl.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubport.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubqos.so error: File not found: /UBE/usr/local/lib64/mami/module/libmami_ubtpl.so error: Directory not found: /UBE/usr/local/mami error: Directory not found: /UBE/usr/local/mami/conf error: File not found: /UBE/usr/local/mami/conf/mami_dev_ctrl.yaml error: File not found: /UBE/usr/local/mami/conf/mami_dev_mng.yaml error: File not found: /UBE/usr/local/mami/conf/mami_user.yaml error: File not found: /UBE/usr/local/mami/drv_auth.ko error: File not found: /UBE/usr/local/mami/drv_xshmem.ko error: File not found: /UBE/usr/local/mami/mami_dev_ctrl.bin error: File not found: /UBE/usr/local/mami/mami_dev_mng.bin error: File not found: /UBE/usr/local/mami/mami_linkcom.ko error: File not found: /UBE/usr/local/mami/mami_mctrlq.ko error: File not found: /UBE/usr/local/mami/mami_sys_init.sh error: File not found: /UBE/usr/local/mami/mami_ubdevm.ko error: File not found: /UBE/usr/local/mami/mami_ubfabric.ko error: Directory not found: /UBE/usr/local/mami/script error: File not found: /UBE/usr/local/mami/script/check_version_required.awk error: File not found: /UBE/usr/local/mami/script/cleanup.sh error: File not found: /UBE/usr/local/mami/script/common_func.inc error: File not found: /UBE/usr/local/mami/script/common_func_v2.inc error: File not found: /UBE/usr/local/mami/script/common_func_v3.inc error: File not found: /UBE/usr/local/mami/script/common_installer.inc error: File not found: /UBE/usr/local/mami/script/common_interface.bash error: File not found: /UBE/usr/local/mami/script/common_interface.csh error: File not found: /UBE/usr/local/mami/script/common_interface.fish error: File not found: /UBE/usr/local/mami/script/filelist.csv error: File not found: /UBE/usr/local/mami/script/help.info error: File not found: /UBE/usr/local/mami/script/install_common_parser.sh error: File not found: /UBE/usr/local/mami/script/mami_common_func.inc error: File not found: /UBE/usr/local/mami/script/multi_version.inc error: File not found: /UBE/usr/local/mami/script/rpm_post_opt.sh error: File not found: /UBE/usr/local/mami/script/rpm_preun_opt.sh error: File not found: /UBE/usr/local/mami/script/rpm_start.sh error: File not found: /UBE/usr/local/mami/script/run_install.sh error: File not found: /UBE/usr/local/mami/script/run_start.sh error: File not found: /UBE/usr/local/mami/script/run_uninstall.sh error: File not found: /UBE/usr/local/mami/script/script_operator.inc error: File not found: /UBE/usr/local/mami/script/start_mami.sh error: File not found: /UBE/usr/local/mami/script/stop_mami.sh error: File not found: /UBE/usr/local/mami/script/ube_config_user.sh error: File not found: /UBE/usr/local/mami/script/version_cfg.inc error: File not found: /UBE/usr/local/mami/script/version_compatiable.inc error: Directory not found: /UBE/usr/share/doc/UBEngine-mami-1.0.0.0.b007 warning: File not found: /UBE/usr/share/doc/UBEngine-mami-1.0.0.0.b007/mami.spec 为什么我把文件放在位置里面了还是现实找不到
最新发布
07-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值