可替换系统(alternatives system)的应用浅议

 
[root@BlueSky tv2.0]# java
Usage: gij [OPTION] ... CLASS [ARGS] ...
          to invoke CLASS.main, or
       gij 
-jar [OPTION] ... JARFILE [ARGS] ...
          to execute a jar file
Try `gij 
--help' for more information.

于是:
[root@BlueSky tv2.0]# which java
/usr/bin/java
[root@BlueSky software]# ls 
/usr/bin/java -l
lrwxrwxrwx 
1 root root 22 01-15 21:23 /usr/bin/java -> /etc/alternatives/java
[root@BlueSky software]# ll 
/etc/alternatives/java
lrwxrwxrwx 
1 root root 35 05-10 13:48 /etc/alternatives/java -> /usr/lib/jvm/jre-1.4.2-gcj/bin/java
这说明java是受fc下同一软件的版本控制工具alternatives控制的,下面就是用这个工具将系统自带的GNU的java换成Sun的java版本;
查看alternatives的帮助;
[root@BlueSky software]# alternatives --help
替换选择(alternatives)的版本 
1.3.30 - 版权 (C) 1997-2000 Red Hat, Inc.
在 GNU 公共许可的条款下,本软件可以被自由发行。

用法:alternatives 
--install <link> <name> <path> <priority>
                    [
--initscript <service>]
                    [
--slave <link> <name> <path>]*
       alternatives 
--remove <name> <path>
       alternatives 
--auto <name>
       alternatives 
--config <name>
       alternatives 
--display <name>
       alternatives 
--set <name> <path>

公用选项:
--verbose --test --help --usage --version
                
--altdir <directory> --admindir <directory>
并通过实验得到,install是安装同一软件的不同版本,remove则是移出某个版本,config则是选择当前系统使用那个版本,而display则是显示当前使用的版本,auto则是更改当前的状态为自动判断,也就是可以恢复GNU版本java的一个参数;
下面先安装jre1.5.0_09,此版本可以到sun的公司网站上下得;
[root@BlueSky software]# rpm -ivh jre-1_5_0_09-linux-i586.rpm 
Preparing...                ########################################### [
100%]
   
1:jre                    ########################################### [100%]
检查是否安装成功:
[root@BlueSky software]# /usr/java/jre1.5.0_09/bin/java
Usage: java [
-options] class [args...]
           (to execute a 
class)
   or  java [
-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    
-d32          use a 32-bit data model if available

    
-d64          use a 64-bit data model if available
    
-client       to select the "client" VM
    
-server       to select the "server" VM
    
-hotspot      is a synonym for the "client" VM  [deprecated]
                  The 
default VM is client.
                  
    
-cp <class search path of directories and zip/jar files>
    
-classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search 
for class files.
    
-D<name>=<value>
                  
set a system property
    
-verbose[:class|gc|jni]
                  enable verbose output
    
-version      print product version and exit
    
-version:<value>
                  require the specified version to run
    
-showversion  print product version and continue
    
-jre-restrict-search | -jre-no-restrict-search
                  include
/exclude user private JREs in the version search
    
-? -help      print this help message
    
-X            print help on non-standard options
    
-ea[:<packagename>...|:<classname>]
    
-enableassertions[:<packagename>...|:<classname>]
                  enable assertions
    
-da[:<packagename>...|:<classname>]
    
-disableassertions[:<packagename>...|:<classname>]
                  disable assertions
    
-esa | -enablesystemassertions
                  enable system assertions
    
-dsa | -disablesystemassertions
                  disable system assertions
    
-agentlib:<libname>[=<options>]
                  load native agent library 
<libname>, e.g. -agentlib:hprof
                    see also, 
-agentlib:jdwp=help and -agentlib:hprof=help
    
-agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    
-javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
出现这些字样,表明jre安装成功了;
接着,使用alternatives工具增加这个版本;
[root@BlueSky software]# alternatives --install /usr/bin/java java /usr/java/jre1.5.0_09/bin/java 300
配置:
[root@BlueSky software]# alternatives --config java

共有 
2 个程序提供“java”。

  选择    命令
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
   
2           /usr/java/jre1.5.0_09/bin/java

按 Enter 来保存当前选择[
+],或键入选择号码:2
[root@BlueSky software]# java
Usage: java [
-options] class [args...]
           (to execute a 
class)
   or  java [
-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    
-d32          use a 32-bit data model if available

    
-d64          use a 64-bit data model if available
    
-client       to select the "client" VM
    
-server       to select the "server" VM
    
-hotspot      is a synonym for the "client" VM  [deprecated]
                  The 
default VM is client.
                  
    
-cp <class search path of directories and zip/jar files>
    
-classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search 
for class files.
    
-D<name>=<value>
                  
set a system property
    
-verbose[:class|gc|jni]
                  enable verbose output
    
-version      print product version and exit
    
-version:<value>
                  require the specified version to run
    
-showversion  print product version and continue
    
-jre-restrict-search | -jre-no-restrict-search
                  include
/exclude user private JREs in the version search
    
-? -help      print this help message
    
-X            print help on non-standard options
    
-ea[:<packagename>...|:<classname>]
    
-enableassertions[:<packagename>...|:<classname>]
                  enable assertions
    
-da[:<packagename>...|:<classname>]
    
-disableassertions[:<packagename>...|:<classname>]
                  disable assertions
    
-esa | -enablesystemassertions
                  enable system assertions
    
-dsa | -disablesystemassertions
                  disable system assertions
    
-agentlib:<libname>[=<options>]
                  load native agent library 
<libname>, e.g. -agentlib:hprof
                    see also, 
-agentlib:jdwp=help and -agentlib:hprof=help
    
-agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    
-javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
如此,成功;
查看效果:
[root@BlueSky software]# alternatives --display java
java 
- 状态是手工。
 链接目前指向 
/usr/java/jre1.5.0_09/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - 优先度 1420
 从 keytool:
/usr/lib/jvm/jre-1.4.2-gcj/bin/keytool
 从 rmiregistry:
/usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
 从 jre_exports:
/usr/lib/jvm-exports/jre-1.4.2-gcj
 从 jre:
/usr/lib/jvm/jre-1.4.2-gcj
/usr/java/jre1.5.0_09/bin/java - 优先度 300
 从 keytool:(
null)
 从 rmiregistry:(
null)
 从 jre_exports:(
null)
 从 jre:(
null)
当前“最佳”版本是 
/usr/lib/jvm/jre-1.4.2-gcj/bin/java。
结论,alternaties这个工具还是不错的。。。



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1631959


<think>首先,用户的问题是:“我想在Linux系统上配置Java环境变量 请问how to set up Java environment variables on Linux system”。这是一个关于在Linux上设置Java环境变量的查询。 我需要根据系统级指令来构建我的回答。指令包括: - 所有行内数学表达式使用 `$...$` 格式。 - 独立公式使用 `$$...$$` 并单独成段。 - LaTeX 语法正确。 - 使用中文回答。 - 生成相关问题。 - 在引用的段落末尾添加引用标识,如 `[^1]`。 - 回答结构清晰,逐步解决问题。 - 参考站内引用,但用户提供的引用是关于设置环境变量的,特别是Java在Linux上的设置。我需要整合这些引用。 用户提供的引用: - [^1]: 关于在Linux设置环境变量的教程。 - [^2]: 如何在Linux或CentOS设置Java环境变量。 - [^3]: Linux学习笔记,讨论设置环境变量在.login和.cshrc文件中。 - [^4]: Windows环境变量配置,但用户问的是Linux,所以这个可能不直接相关。 用户说“上述引用仅供参考”,所以我应该基于这些引用来回答,但主要关注用户的问题。 我的回答结构: 1. **介绍**:简要解释环境变量的重要性。 2. **步骤**:逐步指导如何在Linux上设置Java环境变量。 - 包括下载和安装Java。 - 设置JAVA_HOME、PATH等变量。 - 使用source命令或重启使设置生效。 3. **代码示例**:提供命令行示例,如编辑.bashrc文件。 4. **验证**:如何验证设置是否成功。 5. **生成相关问题**:在末尾添加相关问题。 使用中文回答。 在适当的地方添加引用标识。例如,如果我从引用[^2]中提取信息,就在末尾加 `[^2]`。 现在,步骤: - 步骤1:检查是否已安装Java。 - 步骤2:下载并安装Java(如果需要)。 - 步骤3:找到Java安装路径。 - 步骤4:编辑环境变量文件,如~/.bashrc 或 ~/.bash_profile。 - 步骤5:设置JAVA_HOME和PATH。 - 步骤6:应用更改。 - 步骤7:验证设置。 引用整合: - 引用[^1]:环境变量的定义和重要性。 - 引用[^2]:具体设置Java环境变量的步骤。 - 引用[^3]:关于在.login和.cshrc中设置变量的指南(可能用于不同shell)。 - 引用[^4]:Windows相关,但可能提到导入导出,但用户问Linux,所以忽略或简要提及。 在回答中,自然地添加引用。 最后,生成相关问题: 1. 如何永久设置环境变量? 2. 不同shell(如bash、zsh)设置环境变量的差异? 3. Java环境变量设置后常见问题? 确保回答真实可靠:基于标准Linux实践。 代码块:在解释步骤时,使用代码块来显示命令。 例如: ```bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin ``` 然后添加到.bashrc。 现在,构建回答大纲: - **标题**:在Linux系统上配置Java环境变量 - **介绍**:解释环境变量的作用,并引用[^1]。 - **步骤**: 1. 安装Java(如果需要)。 2. 查找Java安装路径。 3. 编辑配置文件(如~/.bashrc)。 4. 添加环境变量。 5. 应用更改。 6. 验证。 - **代码示例**。 - **相关问题**。 结束。</think>### 在Linux系统上配置Java环境变量 在Linux系统中,环境变量用于定义系统运行时属性,如Java的安装路径,这对于运行Java应用程序至关重要[^1]。配置Java环境变量主要包括设置 `JAVA_HOME` 和更新 `PATH` 变量。以下是逐步指南,确保操作安全可靠。操作前,请确保您有管理员权限(或使用 `sudo`),并备份相关文件(如 `~/.bashrc`)。 #### 步骤1: 检查并安装Java 首先,确认系统是否已安装Java。如果未安装,请先安装OpenJDK(推荐版本:Java 11或17)。 ```bash # 检查Java版本 java -version # 如果未安装,安装OpenJDK(以Ubuntu为例) sudo apt update sudo apt install openjdk-11-jdk ``` 如果输出显示Java版本信息,则跳过安装;否则,安装完成后继续[^2]。 #### 步骤2: 查找Java安装路径 Java安装后,需要确定其路径。通常,路径在 `/usr/lib/jvm/` 目录下。 ```bash # 查找Java路径(示例路径可能因系统而异) sudo update-alternatives --config java # 输出类似:/usr/lib/jvm/java-11-openjdk-amd64/bin/java ``` 记录路径(如 `/usr/lib/jvm/java-11-openjdk-amd64`),这将用于设置 `JAVA_HOME`[^2]。 #### 步骤3: 编辑环境变量配置文件 环境变量通常在用户配置文件(如 `~/.bashrc`、`~/.bash_profile` 或 `~/.profile`)中设置。根据您的shell类型(默认bash),编辑对应文件。 - 对于bash shell(最常见),使用文本编辑器(如nano): ```bash nano ~/.bashrc ``` - 在文件末尾添加以下行(替换路径为您的实际Java路径): ```bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin ``` 这里,`$JAVA_HOME` 指向Java根目录,`$PATH` 更新以包含Java可执行文件路径[^3]。 #### 步骤4: 应用更改并验证 保存文件后,应用更改(无需重启系统): ```bash # 重新加载配置文件 source ~/.bashrc # 验证设置 echo $JAVA_HOME # 应输出路径 java -version # 应显示Java版本 javac -version # 验证编译器(如果安装JDK) ``` 如果输出正确,则环境变量设置成功。否则,检查路径拼写或重新加载文件[^2]。 #### 注意事项 - **永久生效**:上述设置在用户登录时自动加载。如果使用其他shell(如zsh或csh),请编辑对应文件(如 `~/.zshrc` 或 `~/.login`)[^3]。 - **系统级设置**:如需全局设置(所有用户),编辑 `/etc/environment` 文件(但需谨慎,避免系统冲突)[^1]。 - **问题排查**:如果 `java` 命令未找到,检查 `PATH` 变量是否包含 `$JAVA_HOME/bin`,或使用 `which java` 命令定位。 通过以上步骤,Java环境变量即可配置完成。这确保了Java应用程序(如Maven或Spring Boot)能正常运行[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值