共计 1112 个字符,预计需要花费 3 分钟才能阅读完成。
导读 | Linux 的几种软件安装方式:源码编译、压缩包、RPM 包,最简单的当然是 RPM 安装方式,不需配置环境,不需安装相关依赖(依赖自动安装),一直好奇为什么这种方式不需要配置环境。 |
通过 RPM 方式安装时,是严格遵照 Linux 对环境变量的路径的要求,比如:
/usr/bin 可执行的命令安装目录 | |
/usr/lib 程序所使用的库函数保存位置 | |
/usr/share/doc 基本的软件使用手册保存位置 | |
/usr/share/man 帮助文件保存位置 |
举例来说,我使用 RPM 安装的 jdk1.8,安装完成后,没做任何配置,即可全局使用 java 命令,本以为安装过程自动在~/.bash_profile 或者 /etc/profile 中做了环境配置,但是查看后并没有,通过 $PATH 也查看不到 jdk 的路径。
但是在 /usr/bin 中看到了如下:
也就是说,将 jdk 安装目录下的 bin 下的 java、javac 等命令“复制”到了这里,当然这不是简单的复制,但道理就是那个道理。所以,也就是说,当我们在任意的位置执行 java 相关命令时,系统会到 /usr/bin 中来执行。
所以就可以理解为:/usr/bin 是针对 RPM 安装的软件的 profile 文件,RPM 安装过程会自动将一些可执行文件添加到 /usr/bin 里,从而“配置了环境”,而不需我们配置路径到 profile 里。
查看 /usr/lib 后也可以发现其中有 jdk 安装目录下的 lib 中的相关包,查看 /usr/share/man 后也可以发下其中有 jdk 安装目录下的 man 中的相关文档。
所以,说到这里,应该可以理解为什么 RPM 不需配置环境了。
所以,在执行 Java 某一个命令时,若其按照 RPM 方式安装,就到 /usr/bin 下寻找该命令,找到便执行;若其是按照普通方式安装,就到 profile 文件里配置的路径下寻找该命令,找到便执行。
Tips:并不是说随便将一个可执行文件复制到 /usr/bin 中就可以全局执行(亲测不行)。如果是通过源码编译安装的 JDK,则需要配置环境变量。
JDK 环境变量的作用:
JAVA_HOME = 你的 JDK 安装位置 | |
CLASSPATH = .;%JAVA_HOME%\lib | |
PATH = %JAVA_HOME%\bin |
第一个 JAVA_HOME 主要是给后面两个环境变量使用的。
第二个 CLASSPATH 指定的是默认的类库的位置,如上设置,为当前目录和 JAVA_HOME 的 lib 目录
第三个 PATH 是把 java 的 bin 加入到系统路径中,这样在命令行或其他程序全局调用 java,javac, javaw 等命令了。
