001 CentOS 7.9 安装及配置jdk-8u411-linux-x64.tar.gz

news/2024/9/23 10:37:25/

文章目录

    • 1. 下载JDK安装包
    • 2. 创建安装目录
    • 3. 上传并解压JDK安装包
    • 4. 配置环境变量
    • 5. 验证安装
    • -bash: pathmunge: command not found
    • 配置文件区别
    • $PATH

https://dbeaver.io/

1. 下载JDK安装包

首先,需要从Oracle官方网站或其他可信赖的来源下载jdk-8u411-linux-x64.tar.gz安装包。

2. 创建安装目录

在终端中执行以下命令,创建一个用于存放JDK的目录(如果尚未创建):

sudo mkdir /usr/tools

可以选择其他目录作为安装位置,这里以/usr/tools为例。

3. 上传并解压JDK安装包

将下载的jdk-8u411-linux-x64.tar.gz文件上传到刚刚创建的目录中,然后使用以下命令解压:

sudo tar -zxvf /path/to/jdk-8u411-linux-x64.tar.gz -C /usr/tools/

将/path/to/替换为实际存放jdk-8u411-linux-x64.tar.gz文件的路径。

4. 配置环境变量

接下来,需要配置JDK的环境变量。使用文本编辑器(如vim)打开/etc/profile文件:

sudo vim /etc/profile

在文件的末尾添加以下内容:

export JAVA_HOME=/usr/tools/jdk1.8.0_411  
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
export PATH=$JAVA_HOME/bin:$PATH

请注意,jdk1.8.0_411应替换为解压后的JDK文件夹的实际名称。

保存并关闭文件后,执行以下命令使环境变量生效:

source /etc/profile

# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.pathmunge () {case ":${PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac
}if [ -x /usr/bin/id ]; thenif [ -z "$EUID" ]; then# ksh workaroundEUID=`/usr/bin/id -u`UID=`/usr/bin/id -ru`fiUSER="`/usr/bin/id -un`"LOGNAME=$USERMAIL="/var/spool/mail/$USER"
fi# Path manipulation
if [ "$EUID" = "0" ]; thenpathmunge /usr/sbinpathmunge /usr/local/sbin
elsepathmunge /usr/local/sbin afterpathmunge /usr/sbin after
fiHOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; thenexport HISTCONTROL=ignoreboth
elseexport HISTCONTROL=ignoredups
fiexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002
elseumask 022
fifor i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; doif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then . "$i"else. "$i" >/dev/nullfifi
doneunset i
unset -f pathmunge# JDK 8 Environment Variables  
#export JAVA_HOME=/usr/tools/jdk1.8.0_411  
#export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
#pathmunge $JAVA_HOME/bin#pathmunge () {  
#    case ":${PATH}:" in  
#        *:"$1"*:)  
#            ;;  
#        *)  
#            if [ "$2" = "after" ] ; then  
#                PATH=$PATH:$1  
#            else  
#                PATH=$1:$PATH  
#            fi  
#    esac  
#}export JAVA_HOME=/usr/tools/jdk1.8.0_411  
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
export PATH=$JAVA_HOME/bin:$PATH

5. 验证安装

最后,可以通过运行以下命令来验证JDK是否正确安装:

java -version

如果一切正常,将看到输出的Java版本信息,例如:java version “1.8.0_411”。

注意事项:
确保有足够的权限执行上述操作,可能需要使用sudo命令来获取管理员权限。
如果系统中已经安装了其他版本的Java,请确保更新环境变量以指向新安装的JDK。

-bash: pathmunge: command not found

在 CentOS 7 系统中,如果在执行 source /etc/profile 时遇到了 -bash: pathmunge: command not found 的错误,这意味着 /etc/profile 文件中引用了一个名为 pathmunge 的函数,但是这个函数在当前的 shell 环境中没有被定义。

pathmunge 通常是一个用于修改 PATH 环境变量的 shell 函数,在 CentOS 和其他基于 Red Hat 的系统中,这个函数有时会被定义在 /etc/profile 或与 /etc/profile.d/ 目录下的某个脚本文件中。当系统启动时,这些脚本会被执行,从而定义这个函数。

为了解决这个问题,你可以尝试以下几个步骤:

检查 /etc/profile 或 /etc/profile.d/ 下的脚本:
查看这些文件中是否有 pathmunge 函数的定义。如果没有,你可能需要手动添加这个函数,或者从其他正常的 CentOS 7 系统中复制这个函数定义到你的系统中。
手动定义 pathmunge 函数:
如果找不到 pathmunge 函数的定义,你可以在 /etc/profile 文件的末尾或者你自己的 ~/.bashrc 或 ~/.bash_profile 文件中添加以下定义:

pathmunge () {  case ":${PATH}:" in  *:"$1"*:)  ;;  *)  if [ "$2" = "after" ] ; then  PATH=$PATH:$1  else  PATH=$1:$PATH  fi  esac  
}

这个 pathmunge 函数的作用是向 PATH 环境变量中添加一个新的路径。如果指定的路径已经存在于 PATH 中,则不会进行任何操作。否则,它会根据第二个参数(after 或其他任何值)来决定是将新路径添加到 PATH 的末尾还是开头。
重新加载配置:
在添加了 pathmunge 函数的定义之后,你需要重新加载配置以使更改生效。你可以通过执行 source /etc/profile 或重新登录你的用户账户来完成这个操作。

配置文件区别

在Linux和Unix系统中,~/.bash_profile、~/.bashrc和/etc/profile是用于配置用户环境的文件,但它们在使用和加载时机上有所区别。~/.bash_profile:
当用户登录时,bash shell会首先读取~/.bash_profile文件。
它主要用于设置环境变量、运行命令或脚本,在用户登录时进行一次性的初始化设置。
通常,~/.bash_profile会在结束时调用~/.bashrc,以确保在用户登录时也执行~/.bashrc中的设置。
这个文件是针对每个用户的,位于用户的主目录下。
~/.bashrc:
当用户打开一个新的shell(非登录shell),或者在一个已经登录的shell中开启一个新的bash实例时,~/.bashrc会被读取。
它包含用户每次打开新的bash shell时都需要运行的命令。
通常用于设置别名、函数、环境变量等,这些设置对于非登录shell也是必要的。
这个文件也是针对每个用户的,位于用户的主目录下。
/etc/profile:
这是一个全局配置文件,对所有用户都有效。
当用户登录时,系统会首先读取/etc/profile文件,然后再读取用户的~/.bash_profile或~/.profile。
通常用于设置所有用户都需要的环境变量、系统级配置等。
/etc/profile还可以包含对其他全局或特定用户配置文件的引用,如/etc/profile.d/目录下的脚本。
简而言之,~/.bash_profile和~/.bashrc是针对每个用户的个性化设置,而/etc/profile是系统级别的全局设置。这三个文件都可以用来设置环境变量和运行初始化命令,但它们的加载时机和范围有所不同。在实际使用中,根据需要进行适当的配置,以确保用户环境和系统设置符合需求。

$PATH

在配置环境变量时,$PATH的位置(在前或在后)决定了新添加的路径在搜索顺序中的位置。这通常影响的是当多个路径中存在相同名称的可执行文件时,哪个会被首先找到并执行。在您给出的配置中:bash
export PATH=$JAVA_HOME/bin:$PATH
这里将$JAVA_HOME/bin添加到了$PATH的前面。这意味着当你尝试运行一个命令时,shell会首先在$JAVA_HOME/bin目录中查找该命令。如果在这里找不到,shell才会继续沿着原来的$PATH查找。而在添加Redis的bin目录时:bash
export PATH=$PATH:/usr/local/redis/bin
/usr/local/redis/bin被添加到了$PATH的末尾。这意味着当shell沿着$PATH搜索可执行文件时,它会最后才查看/usr/local/redis/bin。为什么这样设置?这通常取决于你的具体需求和环境中可能存在的命令冲突。以下是一些可能的考虑:优先级:如果你希望$JAVA_HOME/bin中的命令优先于其他路径中的同名命令被执行,你就会把它放在$PATH的前面。这在你有多个版本的Java安装,并且想要确保使用特定版本时特别有用。
避免冲突:将新路径添加到$PATH的末尾可以减少与现有命令的冲突。例如,如果/usr/local/redis/bin中有一个名为java的可执行文件,而你将其添加到$PATH的前面,那么当你尝试运行java命令时,shell可能会错误地执行Redis目录中的java,而不是你期望的JDK中的java。
安全性和可预测性:在某些情况下,你可能不希望新添加的路径中的命令覆盖现有路径中的命令,以避免意外的行为或安全问题。将其添加到末尾可以提供更大的可预测性和安全性。
总之,$PATH中路径的顺序是一个重要的配置选择,它决定了shell如何查找和执行命令。在你的例子中,将Java路径放在前面可能是为了确保使用特定版本的Java,而将Redis路径放在后面可能是为了避免与现有命令的冲突。

http://www.ppmy.cn/news/1466106.html

相关文章

MFC工控项目实例之二添加iPlotx控件

承接专栏《MFC工控项目实例之一主菜单制作》 在WIN10下使用Visual C 6.0 (完整绿色版)添加iPlotx控件的方法。 1、在资源主对话框界面点击鼠标右键如图选择插入Active控件点击进入。 2、选择iPlotx Contrlolh点击确定。 3、在对话框界面插入iPlotx控件。…

[QT] MAC使用Qt Creator运行程序如何仅运行一个进程?

大家刚开始使用QtCreator会发现每次run程序,都会出现一个程序进程,使得调试操作增加。如下,每次run都会出现一个demo14的进程。 如何每次run后,就关闭上一次的进程,而重新拉起新进程呢? 看这里 这是默认…

【机器学习300问】104、残差网络是怎么起作用的?

残差网络(Residual Network,简称ResNet)诞生是为了解决深度神经网络的训练困难性问题。深度神经网络在图像分类等任务上取得了重大突破,但随着网络层数的增加,训练变得更加困难。 一、神经网络深度过深会出现…

光耦的工作原理

一、光电耦合器简介 光电耦合器主要是一种围绕光作为媒介的光电转换元器件,能够实现光到电、电到光之间的自由转换。我们又可以称之为光电隔离器,之所以这么称呼,主要是因为光电耦合器能够很好的对电路中的电信号起到隔离的作用。有效的保护…

RK3568笔记二十九:RTMP推流

若该文为原创文章,转载请注明原文出处。 基于RK3568的RTMP推流测试,此代码是基于勇哥的github代码修改的,源码地址MontaukLaw/3568_rknn_rtmp: rk3568的推理推流 (github.com) 感兴趣的可以clone下来测试。 也可以下载修改后的代码测试。Y…

深入理解Java的设计模式

设计模式(Design Patterns)是软件开发中的宝贵经验总结,提供了解决常见设计问题的模板和最佳实践。在Java开发中,设计模式尤为重要,因为它们能够提高代码的可维护性、可扩展性和可重用性。本篇博客将详细介绍几种常见的…

如何高效管理团队任务?强大的在线管理团队多任务的神器-YesDev

任务是最小的工作项,工时是可以对研发产能进行量化。 一员工工时 工作组工时登记配置 针对于工作组,你可以开启/关闭工时登记。关闭工作组的工时登记后,整个工作组将取消工时登记,重新开启后恢复。 在同一个工作组内&#xff0c…

R语言 | 安装ggpubr R包时编译语句中出现 WARNING: ignoring environment value of R_HOME 而报错

在安装 ggpubr 时,出现报错。 1. 环境介绍 系统:CentOS7.9 $ R --version R version 4.3.2 (2023-10-31) – “Eye Holes” $ gcc --version gcc (GCC) 12.3.0 2. 缺少cmake $ sudo yum install cmake3> system("/usr/bin/cmake3 --versio…