之前遇到了好多问题,都一一解决了,问题排除过程中会对linux有新的认识。这里谈两点,不是多高深的知识,不过对新手挺有帮助。
(1) Java安装问题以及Eclipse CDT问题
我个人喜欢用最新版,所以http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-7-jdk-7u21-downloads-1956231.html的J2EE是跑不了的,选择的是,
Linux x64 - Multi-Language | 170.27 MB | ![]() |
其中包含最新的jdk7和j2ee的sdk,文件是标准shell文件,但是 ./*.sh运行不了,sudo下也不行。
网上没有给出有用的解决方案,后来发现了原因,该*.sh文件是需要jdk环境才能运行的,因为.sh里面有jdk API调用。这点就很值得吐槽了,他奶奶的明明封好的包包含jdk,但是没有jdk又不能运行,真他娘的牛逼!
老老实实下载jdk,或者只下载jre也可。标准tar安装,解压好,配置环境变量。最好使用./etc/profile不要用自定义的环境变量/etc/environment(方便不同用户使用),环境变量配置的时候跟win下差不多,最好设置JAVA_HOME参数接收jdk路径,方便将来不同版本的java改写使用容易。不细写了。
java -version
javac -version
都可以看到版本号的话,jdk安装成功。
然后cd to 解包j2ee的*.sh路径,我当时之前chmod +755 *.sh设置了权限,后来sudo ./java_ee_sdk-7-jdk7-linux-x64-ml.sh无法执行。最后直接./java_ee_sdk-7-jdk7-linux-x64-ml.sh就可以了。
j2ee也安装成功。
Eclipse也是标准tar.gz包,安装容易。解压后的eclipse路径最好加入环境变量,可以用终端命令启动。
CDT是*.zip的,解压后再解包,把/feature/和/plugins/的所有文件cp到eclipse相应的文件夹下面。
建议为eclipse配置google的V8引擎,可以调试很多新技术的东东。
另外,除了学习apeche解决方案,使用tomcat配置数据库服务器等,推荐学习mongodb(64x大数据处理可行),还有习惯使用IntelIJ IDEA。Eclipse平台还是有诸多缺陷的。
(2) 内核版本问题以及VMware Tools找不到内核头文件问题
手贱想安装最新的VMware Tools,结果卸载了旧版,新版安装遇到了内核头文件问题。
Searching for a valid kernel header path...
The path "" is not valid.
Would you like to change it? [yes]
What is the location of the directory of C header files that match your running
kernel? /lib/modules/3.8.0-27-generic/build/include
The path "/lib/modules/3.8.0-27-generic/build/include" is not valid.
原因是ubuntu 13.04原来的内核是3.8.0-19-generic,后来内核被我升级过几次,所以现在出现内核头问题不奇怪。
paladin@ubuntu:/lib/modules$ ls
3.8.0-19-generic 3.8.0-26-generic 3.8.0-27-generic
首先想到的是想到的是安装内核头信息,升级内核可能未安装内核头信息。
paladin@ubuntu:/usr/src$ uname -a
Linux ubuntu 3.8.0-27-generic #40-Ubuntu SMP Tue Jul 9 00:17:05 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
paladin@ubuntu:/usr/src$ uname -r
3.8.0-27-generic
因此,
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get linux-header-$(uname -r)
sudo ./vmware-uninstall-tools.pl //提示:vmware-uninstall-tools.pl是在./bin路径下
sudo ./vmware-install.pl
结果还是有问题,然后
paladin@ubuntu:/usr/src$ ls
linux-headers-3.8.0-19 linux-headers-3.8.0-26-generic
linux-headers-3.8.0-19-generic linux-headers-3.8.0-27
linux-headers-3.8.0-26 linux-headers-3.8.0-27-generic
头信息是有的,但是没有链接到,于是
cd /lib/modules/$(uname -r)/build/include/linux
sudo ln -s ../generated/utsrelease.h
sudo ln -s ../generated/autoconf.h
sudo ln -s ../generated/uapi/linux/version.h
sudo ./vmware-install.pl
结果还是不行,然后,cd /lib/modules/$(uname -r)/build/include/linux的时候发现build是一个link symbol,链接到/usr/src/linux-headers-$(uname -r)/,因此想到不能修改/lib/modules/$(uname -r)/build/include/linux的头文件,应该修改源路径下的。soso,
cd /usr/src/linux-headers-$(uname -r)/include/linux
sudo ln -s ../generated/utsrelease.h ./utsrelease.h
sudo ln -s ../generated/autoconf.h ./autoconf.h
sudo ln -s ../generated/uapi/linux/version.h ./version.h
最后sudo ./vmware-install.pl发现可以识别了。很好。
特别注意,不要用下面的方式去覆盖,
cp -p ../generated/utsrelease.h utsrelease.h
cp -p ../generated/autoconf.h autoconf.h
因为使用cp方式会增加移植难度。下次再去更新linux内核,又要重新cp,使用ln方式则方便管理易于修改。
网上大部分人使用cd /lib/modules/$(uname -r)/build/include/linux下修改解决了问题,所以一开始按照这种方法郁闷了半天。不过好在解决问题的过程中对文件系统有了一点新的了解。