編譯ant compile-native遇到的一些問題

環境:

Ubuntu Server12.04

Hadoop1.2.1


問題1:缺少autoreconf

hadoop@grc:~/hadoop-1.2.1$ ant compile-native 
Buildfile: /home/hadoop/hadoop-1.2.1/build.xml

compile-native:

create-native-configure:

BUILD FAILED
/home/hadoop/hadoop-1.2.1/build.xml:627: The following error occurred while executing this line:
/home/hadoop/hadoop-1.2.1/build.xml:634: Execute failed: java.io.IOException: Cannot run program "autoreconf" (in directory "/home/hadoop/hadoop-1.2.1/src/native"): error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
	at java.lang.Runtime.exec(Runtime.java:617)
	at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:41)
	at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
	at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
	at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628)
	at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)
	at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:435)
	at org.apache.tools.ant.Target.performTasks(Target.java:456)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
	at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:440)
	at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:435)
	at org.apache.tools.ant.Target.performTasks(Target.java:456)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
	at org.apache.tools.ant.Main.runBuild(Main.java:851)
	at org.apache.tools.ant.Main.startAnt(Main.java:235)
	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
	at java.lang.ProcessImpl.start(ProcessImpl.java:130)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
	... 36 more

Total time: 0 seconds

解決方法:安裝下就解決了

hadoop@grc:~/hadoop-1.2.1$ sudo apt-get install autoconf libtool


問題2:編譯過程中卡在ivy-retrieve-common這段代碼上很長時間

願意是因爲主要是這個target 依賴的jar比較多,且在第一次編譯的時候都需要聯網下載。
build.xml 代碼塊:

<target name="ivy-resolve-common" depends="ivy-init">
    <ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="common"  log="${loglevel}"/>
  </target>
viy.xml 依賴列舉部分代碼塊:
<!--Private configurations. -->


    <conf name="common" visibility="private" extends="runtime,mandatory,httpclient,ftp,jetty"
                      description="common artifacts"/>
 <conf name="mandatory" description="contains the critical  dependencies"
      extends="commons-logging,log4j"/>
    <!--Configuration: commons-logging -->


    <!--it is essential that only the master JAR of commons logging
    is pulled in, as its dependencies are usually a mess, including things
    like out of date servlet APIs, bits of Avalon, etc.
    -->
    <dependency org="commons-logging"
      name="commons-logging"
      rev="${commons-logging.version}"
      conf="commons-logging->master"/>
總共最終在~/.viy/cache 下 緩存了24M的文件。慢是正常的,不要出現連接超時就是不錯的。

問題3:

[exec] configure: error: Zlib headers were not found... native-hadoop library needs zlib to build. Please install the requisite zlib development package.
     [exec] checking zlib.h usability... no
     [exec] checking zlib.h presence... no
     [exec] checking for zlib.h... no

BUILD FAILED
/home/hadoop/hadoop-1.2.1/build.xml:627: The following error occurred while executing this line:
/home/hadoop/hadoop-1.2.1/build.xml:694: exec returned: 1

Total time: 20 minutes 23 seconds

解決方法:安裝zlib
1、從官網下載zlib包。官方網站:http://www.zlib.net
2、解壓 tar -zxvf zlib-1.2.8.tar.gz (目前最新的版本是1.2.8)
3、$cd zlib-1.2.8
4、$ ./configure 
5、$make
6、$sudo make install
安裝完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章