Debian安装JDK的RPM包

2023-05-16

环境:Linux内核版本4.4.59+、jdk1.8安装、Debian9系统

注意:
1、本文介绍的是在Debian中使用jdk的rpm包进行安装

JDK完全卸载(需要在root模式下进行操作)

切换到root模式下,或者使用sudo 执行命令
1、移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ)

sudo apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
sudo apt-get -y autoremove

进行更新

sudo apt-get update

2、清除配置信息:

sudo dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

3、清除java配置及缓存:

sudo bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf

4、清除jvm文件夹里面的文件

 sudo rm -rf /usr/lib/jvm/*

JDK安装

点击进入Oracle JDK下载官网
1、下载JDK,Debian/Ubuntu系统直接下载后缀名为deb文件的更加方便(若没有deb的后缀名文件下载tar.gz压缩包也一样)。如果都没有也可以下载rpm包,不过需要转换成deb包之后才能在Debian/Ubuntu中使用。在这里插入图片描述
2、 后缀名为deb的文件下载完成之后可参考第4步,直接使用dpkg命令执行,tar.gz的压缩包下载完成之后需要进行解压缩安装
注意:若不能复制或是创建目录,则需要切换到root用户或者使用sudo命令执行;
3、我使用的是之前下载好的rpm包,直接使用rpm -ivh报错:

coder@codercom-code-server1:~/temp$ sudo rpm -ivh jdk-8u221-linux-x64.rpm 
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
warning: jdk-8u221-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
error: Failed dependencies:
	/bin/basename is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/cat is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/cp is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/gawk is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/grep is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/ln is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/ls is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/mkdir is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/mv is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/pwd is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/rm is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/sed is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/sort is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/touch is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/cut is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/dirname is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/expr is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/find is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/tail is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/tr is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/usr/bin/wc is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
	/bin/sh is needed by jdk1.8-2000:1.8.0_221-fcs.x86_64
coder@codercom-code-server1:~/temp$ 

原因是Debian不支持rpm命令了, 其软件以deb包或者源文件的形式出现。于是需要把rpm转化成deb。
安装alien:

sudo apt-get update
sudo apt-get install alien

rpm转换成deb:

alien -d jdk-8u221-linux-x64.rpm

下面是转换过程和转换完成后的文件列表,转换过程中alien会创建一个文件夹用来存放解压后的rpm包数据,然后再重新打成deb包,新建的文件夹在deb包完成后会自动删除:rpm转deb过程中会创建一个文件夹
包转换完成
4、deb转换完成后执行安装命令(或直接下载deb包,然后使用以下命令进行安装,文件名请自行替换):

coder@codercom-code-server1:~/temp$ sudo dpkg -i jdk1.8_1.8.0221-1_amd64.deb 
Selecting previously unselected package jdk1.8.
(Reading database ... 32734 files and directories currently installed.)
Preparing to unpack jdk1.8_1.8.0221-1_amd64.deb ...
Unpacking jdk1.8 (1.8.0221-1) ...
Setting up jdk1.8 (1.8.0221-1) ...
coder@codercom-code-server1:~/temp$ 

5、安装完成后配置环境变量:
使用以下命令查到java安装路径

coder@codercom-code-server1:/usr/share$ whereis java
java: /usr/bin/java /usr/share/java /usr/java/jdk1.8.0_221-amd64/bin/java
coder@codercom-code-server1:/usr/java/jdk1.8.0_221-amd64$ sudo vi /etc/profile

在vi中执行以下命令:

:$ ##跳转到文本的最后一行
o ##直接插入行

然后将下面的jdk路径替换后,直接使用CTRL+ins键粘贴:

#set oracle jdk environment
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64  ##注意jdk目录要换成自己实际的jdk目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后:

:wq  ##保存退出

加载新添加的配置:

coder@codercom-code-server1:/usr/java/jdk1.8.0_221-amd64$ . /etc/profile

6、但是使用java -version查询报错:

coder@codercom-code-server1:/usr/java/jdk1.8.0_221-amd64$ java -version
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

查资料得知该报错是因为tools和rt解压失败导致。
切换到java安装路径,并使用jdk自带的unpack200进行解压:

cd /usr/java/jdk1.8.0_221-amd64/lib
sudo ../bin/unpack200 tools.pack tools.jar
cd /usr/java/jdk1.8.0_221-amd64/jre/lib
sudo ../../bin/unpack200 rt.pack rt.jar

然后再使用java -version查询就正常了:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Debian安装JDK的RPM包 的相关文章

  • Azure cloud-init:无法安装包

    我有一个简单的 cloud init 文件 cloud config package upgrade true packages symlinks wget rsync git 但我的 Azure 失败 最后提供日志 这是我第一次在 Azu
  • Hadoop Map-Reduce 操作在写入输出时失败

    我终于能够在 Hadoop 上启动 Map Reduce 作业 在单个 debian 机器上运行 但是 MapReduce作业总是失败并出现以下错误 hadoopmachine debian hadoop 1 0 1 bin hadoop
  • Debian sid下RStudio安装失败:libgstreamer依赖问题

    我使用 Debian sid amd64 每周滚动更新一次 我最近从他们的官方网站下载了 RStudio 的桌面版本 0 99 902 并发布 当然 以 root 身份 dpkg i rstudio 0 99 902 amd64 deb 无
  • 如何从开源 Hadoop 或公开可用的 HDP 源代码构建由 ambari 安装的 deb/rpm 存储库

    我正在尝试安装开源 hadoop 或从源代码构建 HDP 以由 ambari 安装 我可以看到 可以使用 apache repos 中提供的文档为每个组件构建 java 包 但是我如何使用这些包来构建由 hortonworks 提供的 rp
  • 尝试在 openSUSE 上安装 pip 时出错

    我正在尝试部署pip在我的生产服务器上 但有一个不合逻辑的错误 它尝试安装已安装的组件但没有成功 gt sudo zypper in python pip Loading repository data Reading installed
  • 由于 libssl 依赖,`apt-get install librdkafka1` 在 Debian 9.x 上失败

    Basic apt get install librdkafka1在 Debian 8 x 上工作 但在 Debian 9 x 上失败 这看起来像是关于 libssl 的依赖版本问题 Debian 8 x 有 libssl1 0 0 Deb
  • 如何从未签名的存储库安装 debian 软件包

    尝试从未签名的存储库将 Debian 软件包安装到 Debian 9 apt get allow unauthenticated update Get 1 http files freeswitch org repo deb freeswi
  • 从 Linux 命令行发送电子邮件到 Gmail

    这个问题似乎有很多答案 但似乎都不起作用 我想从本地主机发送电子邮件到 Gmail 帐户 据我所知 以下命令没有执行任何操作 mail s Hello email protected cdn cgi l email protection 按
  • Java 和 PostgreSQL 之间的“坏记录 MAC”SSL 错误

    我们遇到了 Java 应用程序和 PostgreSQL 8 3 服务器之间随机断开连接的问题 并出现 坏记录 MAC SSL 错误 我们两边都运行 Debian Lenny 在客户端 我们看到 main WRITE TLSv1 Applic
  • 构建预配置的 debian 包

    我正在尝试构建一个 debian 软件包 它会自动配置我的所有计算机以使用相同的配置文件和设置 例如 我尝试设置诸如 alter etc default hostapd conf 之类的内容 我目前正在通过使用 dh install 将文件
  • 如何在 Debian 上升级 glibc?

    我听说我可以使用apt get install libc6 但我需要向 etc apt sources list 添加一些内容才能接收最新的 glibc 版本 我应该怎么办 我能够安装libc6 2 17 in Debian Wheezy通
  • 如何在 Ubuntu 中注册文件关联

    我正在创建 Ubuntu 安装程序 我需要注册自己的文件扩展名 但我找不到任何有关如何执行此操作的示例 人们可以为我提供一些关于如何执行此操作的脚本片段吗 注意 我正在使用安装干扰器 http www installjammer com 帮
  • 直接通过 SSH 进入 docker 容器

    我有一些 docker 容器 现在我想通过 ssh 访问其中一个 这是工作我通过 ssh 连接到 docker 容器 但现在我遇到的问题是我不知道哪个用户可以访问这个容器 我已经对主机上的两个用户 网络和根 进行了尝试 但它们不起作用 知道
  • Debian 在没有桌面的情况下启动 Qt GUI 应用程序

    我在 SBC 上运行 Debian 2 6 我计划在嵌入式设置中使用它 我需要做的是配置它 以便 linux 启动并运行我的 Qt GUI 应用程序 我是否需要窗口管理器来执行此操作 或者我可以使用 X11 来执行此操作吗 另外 因为它将用
  • /usr/local/lib 中未找到共享库

    我不明白 我通常安装第三方软件 usr 本地因此库被安装到 usr local lib 中并且链接到这些库从来没有出现问题 但现在它突然不再起作用 gcc lkaytils o test test c usr bin ld gold rea
  • 错误:“defaultfloat”不是“std”的成员

    std defaultfloat尽管在 GCC 中似乎没有定义在标准中 http www cplusplus com reference ios defaultfloat 我认为是 27 5 6 4 我将其隔离为这个简单的程序 test c
  • GitLab 在 Debian 上安装失败

    我正在尝试在 Debian 8 5 0 上安装 GitLab 我遵循安装指南 https about gitlab com downloads debian8但最后一步失败了 我在文档中找不到任何信息 gitlab ctl 重新配置完成 R
  • Debian - /usr/bin/env: 'php\r': 没有这样的文件或目录

    所以当我跑步时 直接讨论问题 yii似乎我从 Debian stretch 中收到了从 Docker 运行的错误 然而当我跑步时 usr bin env php v我得到了正确的输出 没有问题 似乎新行被翻译为字符串时出现问题 我不知道如何
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • 构建 rpm 而不编译源文件

    我正在尝试使用单个文件的示例 rpm 包 在我的源文件夹中 我有 python test rpm tar gz 其中仅包含一个 python 脚本文件 但是 该文件不是有效的 python 脚本 我想做的就是将其打包并将其部署到特定文件夹中

随机推荐

  • Codeforces 897C(递归)

    点击打开链接 扎心题 xff0c 当时想法完全正确 xff0c 姿势不对 xff08 思维不够细腻 xff09 没过 题意 xff1a 给出四个字符串x y f0 z xff0c 并且给出递推公式 xff1a fi 61 x 43 fi 1
  • 天气预报API汇总

    目录 文章目录 一 天气预报平台 1 中国气象平台 2 心知天气 3 实况天气 4 YY天气 5 聚合天气 6 和风天气 7 彩云天气 8 咕咕天气 9 彩云天气 总结 一 天气预报平台 1 中国气象平台 优点 xff1a 中国气象局对外提
  • ResizeObserve 在 Echarts 的使用

    前言 前端图表经常要进行 resize 操作 xff0c 一般我们会想到监听 window resize event xff0c 但是这个事件只能监听 window 窗口大小的改变 xff0c 没有办法监听到某个div大小的改变 目前解决方
  • 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

    运行java命令出现 Error Invalid or corrupt jarfile XXX jar 基本可以断定 xff0c 是jar不完整导致的 不完整 xff01 xff01 xff01 记住关键字 检查1 xff1a 检查是不是传
  • 页面间传值的方式

    从一个页面转向另一个页面的请求方式有两种 xff0c Post和Get 如果从原理上来探究他们的区别 xff0c 涉及到Http传输协议的细节 xff0c 这样深究下去 xff0c 就成华为人干的事了 xff0c 有空可以请教一下华为高人
  • 你现在无法访问 xxx.xxxx.com,因为网站使用的是 HSTS。网络错误和攻击通常是暂时的,因此该页面以后可能会恢复正常

    你现在无法访问 xxx xxxx com xff0c 因为网站使用的是 HSTS 网络错误和攻击通常是暂时的 xff0c 因此该页面以后可能会恢复正常 自己本地通过openSSL和nginx 搭建https证书 xff0c 过段时间通过域名
  • VMware通过vmdk安装Kali linux

    1 根据官网指引下载VMware专用kali linux版本 2 打开虚拟机 xff0c 文件 gt 扫描虚拟机 3 文件路径选择kali压缩包解压出来的文件夹的路径 4 点击下一步 xff0c 点击完成即可 5 这个就是我们刚刚创建的ka
  • 为什么中断子程序中不能使用延时和过长的程序?

    A回答 xff1a 通常在中断子程序中是不调用延时子程序的 xff0c 这样会增加中断处理时间 xff0c 如果有其它低级中断了 xff0c 就会延误响应中断了 所以 xff0c 中断子程序中不要写调用延时子程序 xff0c 中断子程序也不
  • iOS多线程详解:实践篇

    iOS多线程实践中 xff0c 常用的就是子线程执行耗时操作 xff0c 然后回到主线程刷新UI 在iOS中每个进程启动后都会建立一个主线程 xff08 UI线程 xff09 xff0c 这个线程是其他线程的父线程 由于在iOS中除了主线程
  • 【Qt】显示文件/文件夹下所有文件的路径

    一 条件与目的 给一个正确的文件夹绝对路径 xff0c QString字符串形式 要求打印出其中所有子目录以及其下的全部文件路径 二 废多看崩 名称 xff1a 遍历显示函数 参量 xff1a path 绝对路径 方法类 xff1a QDi
  • CMD执行命令行时卡住的问题

    公司编译工程项目时用了一些bat文件以命令行的方式来自动完成编译过程 xff0c 但是发现一个问题 xff0c 执行bat的时候Windows下弹出命令行窗口 xff0c 总是会时不时出现 假死 的情况 xff0c 然后命令执行就停在那里了
  • GET、POST、PUT、DELETE请求方式的区别以及用途

    1 GET GET请求是用来获取数据的 xff0c 不对服务器的数据做任何的修改 xff0c 新增 xff0c 删除等操作 GET请求就像数据库的SELECT操作一样 xff0c 只是用来查询一下数据 xff0c 不会修改 增加数据 xff
  • 通俗易懂-对于快慢指针找到链表环入口的理解

    图1是一个链表环 xff0c 此链表有8个结点 xff0c 分别为A H 假设起点为G xff0c 快指针fast和慢指针slow都从G出发 xff0c 慢指针一次遍历一个结点 xff0c 快指针一次遍历两个结点 xff0c 无论他们走多少
  • 通俗易懂-对于归并排序的细节理解python

    首先归并排序的原理就是将一个待排序的列表分成二等份 xff0c 四等份 xff0c 八等份 直到每一份只有一个元素的时候 xff0c 然后合并 xff0c 合并的时候进行排序 听起来有点绕 不多说 上代码 span class token
  • vnc连接失败可能的方案

    vnc连接失败可能的解决方案 上图表示还没有在windows power shell里边打开端口 xff0c 在windows power shell里边输入命令打开端口 xff0c 如下图所示 xff0c 密码和端口号换成服务器提供的即可
  • No module named 'matplotlib.pyplot'; 'matplotlib' is not a package

    关于No module named matplotlib pyplot matplotlib is not a package报错 在学习matlibplot的时候运行一个 py文件出现这样的报错 xff1a No module named
  • Error tokenizing data. C error: out of memory

    用pandas读入数据的时候发现数据读入时出错了 xff0c 数据量感觉也不是很大 十万多条数据 电脑内存是8个G 报错信息为 xff1a Error tokenizing data C error out of memory 想想不对啊
  • kubeadm方式部署的k8s修改证书年限

    说明 kubeadm方式部署的k8s默认证书的年限为1一年 xff0c 当集群更新时 xff0c 证书也会更新 xff0c 如果集群每年都会更新 xff0c 那么证书年限就不用修改 但是大部分情况下 xff0c 为了保证线上环境稳定 xff
  • C++智能指针以及循环引用的解决办法

    1 为什么要使用智能指针 我们知道C 43 43 的内存管理是让很多人头疼的事情 xff0c 当我们写一个new语句时 xff0c 一般就会立即把delete语句直接也写了 xff0c 但是我们不能避免程序还未执行到delete时就跳转了或
  • Debian安装JDK的RPM包

    环境 xff1a Linux内核版本4 4 59 43 jdk1 8安装 Debian9系统 注意 xff1a 1 本文介绍的是在Debian中使用jdk的rpm包进行安装 JDK完全卸载 xff08 需要在root模式下进行操作 xff0