Linux下JDK到底应该安装在哪儿?


1 Linux 目录结构

即使这是个菜鸟级的问题,也经常难住老鸟。我就见过很资深的程序员把JDK不合适地安装到/home目录下。虽然不一定有最正确的安装位置,但一定有不适当的安装位置。为了确定我们到底应该把JDK安装在哪里,首先要了解一下Unix/Linux的目录结构。

[plain] view plain copy print?
  1. /bin用来贮存用户命令。/usr/bin也被用来贮存用户命令。
  2. /sbin许多系统命令(例如shutdown)的贮存位置。/usr/sbin中也包括了许多系统命令。
  3. /root根用户(超级用户)的主目录。
  4. /mnt该目录中通常包括系统引导后被挂载的文件系统的挂载点。比如,默认的光盘挂载点是/mnt/cdrom/。可以为U盘建一个挂载点:mkdir/mnt/usb。
  5. /boot包括内核和其它系统启动期间使用的文件,最大不超过200M。通常我为/boot建一个primary分区是1G。
  6. /lost+found被fsck用来放置零散文件(没有名称的文件)。
  7. /lib包含许多被/bin和/sbin中的程序使用的库文件。目录/usr/lib中含有更多用于用户程序的库文件。/lib目录下放置的是/bin和/sbin目录下程序所需的库文件。简单说,/lib是内核级的;/usr/lib是系统级的;/usr/local/lib是用户级的。仅仅被/usr目录下的程序所使用的共享库不必放到/lib目录下。只有/bin和/sbin下的程序所需要的库有必要放到/lib目录下。
  8. /dev贮存设备文件。
  9. /etc包含许多配置文件和目录。
  10. /var用于贮存variable(或不断改变的)文件,例如日志文件和打印机假脱机文件,虚拟机镜像文件等。
  11. /usr包括与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。
  12. /proc一个虚拟的文件系统(不是实际贮存在磁盘上的),它包括被某些程序使用的系统信息。
  13. /initrd用来在计算机启动时挂载initrd.img映像文件的目录以及载入所需设备模块的目录。不要删除/initrd目录。如果你删除了该目录后再重新引导RedHatLinux时,你将无法引导你的计算机。
  14. /tmp用户和程序的临时目录。/tmp给予所有系统用户读写权。
  15. /home用户主目录的默认位置。
  16. /opt可选文件和程序的贮存目录。该目录主要被第三方开发者用来简易地安装和卸装他们的软件包。

在传统的unix系统中,/usr 通常只包含系统发行时自带的程序,而/usr/local 则是本地系统管理员用来自由添加程序的目录。这里有一条严厉而牢固的规则:除非在里面创建目录,unix发行版不得使用 /usr/local 。

对于Linux发行版,如 RedHat, Debian 等等,一个可能的规定是:/usr 目录只能由发行版的软件包管理工具负责管理,而对 /usr/local 却没有这样做。正是因为采用这种方式,软件包管理工具的数据库才能知道在 /usr 目录内的每一个文件。下面演示 Ubuntu 系统下如何安装JDK和配置环境变量。

2 安装JDK6

2.1 安装到 /usr/local/java

因此JDK可能比较合适的位置是 /usr/local/lib 下。我一般安装到 /usr/local/Java 下,这样避免搞乱 /usr/local/lib 目录。下面演示如何安装 JDK6。我使用的是 jdk-6u38-linux-x64.bin。进入它所在的目录,执行下列命令:

[plain] view plain copy print?
  1. $sudochmod755jdk-6u38-linux-x64.bin
  2. $sudo./jdk-6u38-linux-x64.bin
  3. $sudomkdir/usr/local/java
  4. $sudomv./jdk1.6.0_38/usr/local/java

3配置环境JAVA变量

有3种方式配置JAVA环境变量。

3.1 /etc/profile

如果你的计算机仅仅作为开发使用时推荐使用这种方法. 所有用户的shell都有权使用这些环境变量。修改 /etc/profile 文件,执行下面的语句:

[plain] view plain copy print?
  1. $sudo-s
  2. #echo'exportJAVA_HOME=/usr/local/java/jdk1.6.0_38'>>/etc/profile
  3. #echo'exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>/etc/profile
  4. #echo'exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar'>>/etc/profile

切换到任何一个用户,执行下面这个命令,环境变量的更改立即生效:

# source /etc/profile

检查JAVA环境变量更改是否生效:

$ java -version

3.2 ~/.profile

这个是最安全的方法,控制JAVA到当前用户。如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的 .profile, 如下:

[plain] view plain copy print?
  1. $cd~/
  2. $echo'exportJAVA_HOME=/usr/local/java/jdk1.6.0_38'>>./.profile
  3. $echo'exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>./.profile
  4. $echo'exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar'>>./.profile
  5. $source./.profile
  6. $java-version
  7. or
  8. $java

3.3 /etc/profile.d/java.sh

这种方式为所有用户增加JAVA环境变量,并且一启动就生效。强烈不建议这个方式,除非在你个人开发的计算机上。

[plain] view plain copy print?
    1. $sudo-s
    2. #echo'#addjavaenvironmentstoallusers'>/etc/profile.d/java.sh
    3. #chmod755/etc/profile.d/java.sh
    4. #echo'exportJAVA_HOME=/usr/local/java/jdk1.6.0_38'>>/etc/profile.d/java.sh
    5. #echo'exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH'>>/etc/profile.d/java.sh
    6. #echo'exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar'>>/etc/profile.d/java.sh
    7. #shutdown-rnow
优质内容筛选与推荐>>
1、Asp.net MVC中关于@Html标签Label、Editor使用
2、jquery使用淘宝接口跨域查询手机号码归属地实例
3、matlab中findstr,strfind,strcmp,strncmp区别与联系
4、到底什么是哈希Hash?
5、windows10上使用一个tomcat部署2个项目


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn