Linux离线/在线部署JDK两种方式

本文提供了两种在CentOS上安装JDK的方法:一种是通过离线上传并配置jdk-7u51-linux-x64.tar.gz文件的方式;另一种是利用yum在线安装java-1.7.0-openjdk-devel.x86_64。每种方法都详细介绍了安装步骤及环境变量配置过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一:离线安装
1,yum -y install glibc.i686 #安装jdk依赖glibc(c函式库)
2,mkdir /usr/local/src/java #习惯性的创建自己指定软件目录

3,rz 上传已下好的jdk-7u51-linux-x64.tar.gz到上面创建的java目录下。(如果虚拟机不支持rz命令,需先安装rz命令包)

4,tar -xvf jdk-7u51-linux-x64.tar.gz #解压压缩包

5,配置环境变量
1)vi /etc/profile
2)在尾行添加

#set java environment
JAVA_HOME=/usr/local/src/java/jdk1.7.0_51
JAVA_BIN=/usr/local/src/java/jdk1.7.0_51/bin
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

3)source /etc/profile 使更改的配置立即生效
4)java -version 查看JDK版本信息。如显示1.7.0证明成功

方式二:用yum安装JDK(联网安装)
1,yum search java|grep jdk #查看yum库中有哪些jdk版本

这里写图片描述

2,yum install java-1.7.0-openjdk-devel.x86_64 #选取版本进行安装,默认安装目录是在 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64

3, vi /etc/profile #设置环境变量

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

4,source /etc/profile 使更改的配置立即生效
java -version 查看JDK版本信息。

完毕。

<think>我们正在解决用户的问题:在Linux系统下离线部署Kettle时遇到依赖缺失的错误,需要找到解决方案。根据引用[3],用户提到在华为鲲鹏920处理器的机器上,如果没有互联网连接,无法直接通过yum下载依赖。用户的问题类似,也是离线环境缺少依赖。解决方案思路:1.在有互联网连接的相同或相似Linux系统上,使用yum下载所有Kettle所需的依赖包(包括其依赖的依赖)。2.将这些依赖包转移到离线机器上,然后使用yum或rpm进行安装。具体步骤:步骤1:在有网络的机器上准备相同的操作系统环境(最好与离线机器相同版本,如CentOS7.x)步骤2:使用yum命令下载Kettle及其所有依赖。Kettle本身需要Java环境,所以首先确保Java已经安装离线安装Java也可以用类似方法)。假设我们已经安装了Java,现在下载Kettle和它的依赖。我们可以使用以下命令:首先,添加必要的yum仓库(如果有的话),但Kettle通常不是通过yum安装,所以我们主要解决Kettle运行时需要的库(如数据库驱动等)。实际上,Kettle是一个Java程序,它的依赖主要是Java的jar包。但是,在运行Kettle时,可能会调用一些本地库或命令(如压缩解压、加密等),这些可能需要系统库。因此,我们分两部分解决:A.Java依赖:Kettle需要Java,所以确保离线机器上安装了相同版本的Java(可以通过下载JDK的rpm或tar.gz包离线安装)。B.系统库依赖:Kettle可能依赖一些系统库,例如libwebkitgtk(用于SpoonUI)等。这些可以通过yum下载。针对系统库依赖,我们可以:1.在有网络的机器上,使用yum下载Kettle运行所必需的系统包。我们可以通过尝试运行Kettle(在无网络的机器上)来查看缺少哪些库,然后逐个下载。但这样效率低。2.更全面的方法:使用yum的`downloadonly`插件(需要安装)来下载所有依赖。首先,在有网络的机器上安装downloadonly插件(如果系统是CentOS7):yuminstallyum-plugin-downloadonly然后,我们假设Kettle需要以下包(具体可能需要根据错误信息调整,但一般Kettle的图形界面需要图形库,还有数据库连接可能需要数据库客户端库)。我们可以先下载一些常见的依赖包:yuminstall--downloadonly--downloaddir=<下载目录>gtk2libXtstlibXrendercups-libsalsa-lib另外,Kettle本身不通过yum安装,所以我们需要通过其他方式下载Kettle的安装包(如Pentaho官网下载),然后同样复制到离线机器。但是,用户的问题是在部署时遇到依赖缺失错误,所以更可能是系统库的缺失。因此,我们重点放在系统库的依赖上。步骤3:将下载的rpm包(整个目录)复制到离线机器上。步骤4:在离线机器上,使用yum本地安装这些包:yumlocalinstall/path/to/rpm/*.rpm或者使用rpm命令安装(但可能无法解决依赖顺序,推荐使用yumlocalinstall):rpm-ivh/path/to/rpm/*.rpm#如果依赖复杂,可能会报错注意:如果离线机器上已经有部分包,可能会跳过。另外,用户提到在华为鲲鹏920处理器(ARM架构)上,所以需要确保下载的包是ARM架构的(即aarch64)。因此,有网络的机器也必须是相同架构的操作系统。如果用户无法找到相同架构的机器,可以考虑使用Docker容器来模拟相同的环境进行下载?但这样可能比较复杂。引用[2]提到了Docker,但用户的环境是离线,且是ARM架构,所以可能不适用。另一种方法:使用`yumdeplist<package>`来查看某个包的依赖,然后手动下载所有依赖的rpm包。但是,Kettle并不是一个yum包,所以我们需要猜测它可能依赖的包。根据经验,Kettle(特别是Spoon图形界面)通常依赖以下包:gtk2,libXtst,libXrender,cups-libs,alsa-lib,libcanberra-gtk2,webkitgtk(或webkitgtk3)另外,如果使用数据库连接,可能需要数据库客户端的库,例如PostgreSQL需要libpq.so,MySQL需要libmysqlclient.so等。这些库可以通过下载对应的rpm包来安装。所以,我们可以这样做:1.离线机器上运行Kettle,记录缺失的库(错误信息会提示缺少哪个.so文件)。2.根据缺失的库,在有网络的机器上(相同架构)使用yum查找哪个包提供该库,然后下载该包及其依赖。例如,如果报错缺少libwebkitgtk-1.0.so.0,则:yumprovides*/libwebkitgtk-1.0.so.0然后找到包名(如webkitgtk),然后使用yum下载该包及其依赖:yuminstall--downloadonly--downloaddir=/tmp/webkitgtkwebkitgtk然后复制到离线机器安装。步骤5:对于Java依赖,确保离线机器上安装了相同版本的JDK(建议使用1.8),并将Kettle的zip包解压运行。总结:离线安装依赖的关键在于:在有网络的相同环境(操作系统和架构)下下载所需依赖包,然后复制到离线环境安装。考虑到用户的环境是华为鲲鹏920(ARM架构),需要确保下载的包是aarch64架构的。相关问题:1.如何在没有网络的Linux系统上安装Java?2.如何确定Kettle运行需要哪些系统依赖?3.在ARM架构的Linux系统上部署Kettle有什么特别注意事项?</think>### Linux 离线部署 Kettle 缺少依赖解决方案 在 Linux 离线环境中部署 Kettle 时遇到依赖缺失问题,核心解决思路是**在有网络的环境中预下载所需依赖包**,然后转移到离线环境安装。以下是详细步骤: #### 1. **确定缺失依赖** 在离线环境尝试运行 Kettle(如执行 `./spoon.sh`),记录终端报错的缺失库文件。典型依赖包括: - Java 环境(JDK 8+) - GTK 图形库:`gtk2`、`libXtst`、`libXrender` - 基础库:`cups-libs`、`alsa-lib`、`webkitgtk` - 数据库驱动:如 MySQL 的 `libmysqlclient` 或 PostgreSQL 的 `libpq` #### 2. **在联网机器下载依赖** 使用相同架构(如 ARM 鲲鹏需 aarch64)和 OS 版本(如 CentOS 7)的联网机器操作: ```bash # 创建下载目录 mkdir -p /tmp/kettle_deps # 使用 yum 下载依赖包(示例) yum install --downloadonly --downloaddir=/tmp/kettle_deps \ gtk2 libXtst libXrender cups-libs alsa-lib webkitgtk # 下载 JDK(需手动获取对应版本) wget -P /tmp/kettle_deps https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-aarch64-14_jan_2020.tar.gz ``` #### 3. **转移并安装依赖** 将 `/tmp/kettle_deps` 目录复制到离线环境: ```bash # 安装 RPM 依赖包 rpm -ivh /path/to/kettle_deps/*.rpm --force --nodeps # 安装 JDK tar -xzf openjdk-8u41-b04-linux-aarch64-14_jan_2020.tar.gz -C /opt export JAVA_HOME=/opt/java-se-8u41-ri ``` #### 4. **手动补充缺失库(可选)** 若仍有缺失库: - 使用 `ldd spoon.sh` 检查动态链接库 - 通过 [RPMFind](https://rpmfind.net) 搜索库对应的 RPM 包 - 下载后重复步骤 3 安装 #### 5. **验证 Kettle 运行** ```bash # 解压 Kettle unzip pdi-ce-9.4.0.0-343.zip # 启动 Spoon cd data-integration ./spoon.sh ``` > **关键注意**:华为鲲鹏 ARM 架构需确保所有依赖为 `aarch64` 版本[^3]。若依赖冲突,尝试 `yum localinstall` 代替 `rpm -ivh`。 --- ### 相关问题 1. 如何在离线环境中为 Kettle 配置 MySQL 数据库驱动? 2. Kettle 在 ARM 架构 Linux 上运行时有哪些特殊优化? 3. 如何验证 Kettle 的所有系统依赖已完整安装? 4. 离线环境中如何管理 Kettle 的插件和扩展依赖?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值