当前位置: 首页 > news >正文

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

文章目录

    • 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路径放在后面可能是为了避免与现有命令的冲突。

相关文章:

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

文章目录 1. 下载JDK安装包2. 创建安装目录3. 上传并解压JDK安装包4. 配置环境变量5. 验证安装-bash: pathmunge: command not found配置文件区别$PATH https://dbeaver.io/ 1. 下载JDK安装包 首先,需要从Oracle官方网站或其他可信赖的来源下载jdk-8u411-linux-x64…...

Revit二次开发-WPF ProgressBar 执行程序中显示进度条

Revit开发执行命令时如果时间长,界面会顶住,导致用户误以为程序未响应,解决方法:增加WPF ProgressBar 进度条执行程序中显示进度条,提示命令还是进行中, 实现流程: 新建一个WPF,Window启动时加载一个事件Loaded=“Window_Loaded”,用于显示进度条在WPF后台,新建一个异…...

React:构建Web应用的未来

引言 在不断发展的Web开发领域,React已经成为一股主导力量,重塑了我们构建用户界面和交互式应用的方式。React由Facebook(现Meta)开发,由于其创新的基于组件的架构、高效的虚拟DOM渲染和声明式编程风格而广受欢迎。在…...

【Elasticsearch】Centos7安装Elasticsearch、kibana、IK分词

目录 本文安装包下载地址注意安装elasticsearch1.上传文件2.解压elasticsearch-6.3.1.tar.gz3.开启远程连接权限4.修改其他配置[root用户操作]5.重启虚拟机6.启动es7.外部访问 安装kibana-61.解压2.配置3.启动kibana4.访问5.在开发工具中做数据的增删改查操作 安装IK分词1.wind…...

IDEA中各种Maven相关问题(文件飘红、下载依赖和启动报错)

错误情况 包名、类名显示红色、红色波浪线,大量依赖提示不存在(程序包xxx不存在) 工程无法启动 一、前提条件 1、使用英文原版IDEA 汉化版的可能有各种奇怪的问题。建议用IDEA英文版,卸载重装。 2、下载maven,配置环…...

Android 13 VSYNC重学习

Android 13 VSYNC重学习 引言 学无止境,一个字干就完事! 源码参考基于Android 13 aosp! 一. Android VSync模块开胃菜 在开始正式的分析之前,我们先简单对Android的Vsync模块简单介绍下,如下图所示,其中: HW_VSync是…...

std::move和左值右值

引用:windows程序员面试指南 std::move std::move 是 C 标准库中的一个函数模板,用于将一个左值(左值引用)转化为右值引用,从而实现移动语义。 移动语义是一种可以将资源(如内存)从一个对象转…...

QT学习备份

2023年1月2日09:00:32 1.信号/槽编辑器 发送者:控件 信号:是控件发出的信号 接受者:包含控件的容器 槽:程序上用slot标识的方法 2.Q_OBJECT宏 只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用…...

【wiki知识库】03.前后端的初步交互(展现所有的电子书)

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂前端配置文件补充 三、🌏前端Vue的改造 四、💡总结 一、🔥今日目标 在上一篇文章当中,我已带大家把后端的一些基本工…...

AOP——学习

AOP(面向切面编程)是Spring框架的重要特性之一,用于分离关注点并处理横切关注点,如日志记录、安全性和事务管理。在面试中,AOP相关的问题通常会涉及基本概念、应用场景、实际使用、以及与其他编程范式的比较。以下是一…...

Linux静态库、共享动态库介绍、制作及使用

参考学习:Linux下的各种文件 、动态库基本原理和使用方法,-fPIC选项的来龙去脉 、Linux静态库和动态库分析 文章写作参考:Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com) 一.Linux共享库、静态库、动态库详解 使用G…...

【Paddle】稀疏计算的使用指南 稀疏ResNet的学习心得 (2) + Paddle3D应用实例稀疏 ResNet代码解读 (1.6w字超详细)

【Paddle】稀疏计算的使用指南 & 稀疏ResNet的学习心得 Paddle3D应用实例稀疏 ResNet代码解读 写在最前面一、稀疏格式简介1. COO(Coordinate Format)2. CSR(Compressed Sparse Row Format) 二、Paddle稀疏张量支持1. 创建 C…...

Linux系统维护

1. 批量安装部署 2. 初始化配置 3. 禁用Selinux 永久更改 SELinux 配置: 编辑 SELinux 配置文件:使用文本编辑器打开 /etc/selinux/config 文件: 在配置文件中,找到 SELINUX… 的行。将其值更改为以下选项之一: e…...

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)

0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力,它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而,昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…...

蓝牙设备中的UUID

文章目录 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被称作为DeviceID。 Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址,相对固定。iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 …...

网络之再谈体系结构

大家都知道的是网络的体系结构,现代软件常用的体系结构无非是TCP/IP协议栈,OSI因为实现复杂并且效率没有TCP/IP协议栈好,所以不用OSI,但是,最近在复习网络知识的时候,发现了一些奇怪的地方,那就…...

在flutter initState 方法,触发 setState导致循环执行

在Flutter中,如果你在initState中调用了一个方法,并且这个方法可能导致状态更新,这可能会引起无限循环,因为每次状态更新都会再次调用initState。 为了避免这种情况,你应该检查调用的方法是否会导致状态更新&#xff…...

JavaScript字符串方法

charAt() 方法:返回指定索引处的字符。 示例: let str "Hello World"; console.log(str.charAt(0)); // Output: "H" console.log(str.charAt(6)); // Output: "W"charCodeAt() 方法:返回指定索引处字符的 Un…...

YD/T 2698-2014 《电信网和互联网安全防护基线配置要求及检测要求 网络设备》标准介绍

编写背景 随着互联网技术的飞速发展,网络设备的安全问题日益凸显。为了加强电信网和互联网的安全防护,保障网络环境的稳定和用户信息的安全,YD/T 2698-2014标准应运而生。此标准旨在为网络设备提供一套基线配置要求,以及相应的安…...

QCC30XX如何查找本地地址码

查找本地地址段/********************************************************************** Copyright (c) 2016 - 2017 Qualcomm Technologies International, Ltd. FILE NAME sink_private_data.c DESCRIPTION This module works as a container for all private and common…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...