我正在尝试在Centos上安装JDK,但是我收到了一个错误:
[root@www opt]# rpm -ivh /opt/jdk-7u51-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
error: unpacking of archive failed on file /usr/java/jdk1.7.0_51/db/lib/derbyLocale_zh_CN.jar;533ab42a: cpio: read
哪里有问题? 感谢
答案 0 :(得分:1)
请按照这些值检查下载文件的md5sum:http://www.oracle.com/technetwork/java/javase/downloads/java-se-binaries-checksum-1956892.html?
如果md5sum没有检查,则必须是一个损坏的下载。
答案 1 :(得分:1)
简短回答:尝试下载并重新安装。
更长的回答: 即使你得到这个,jdk正在安装。有点。这似乎是包装中的错误,但它不是致命的。这是我机器的输出。在示例中,我捕获了发布文件,以便您可以看到我正在使用的CentOS并在我正在使用的rpm上执行了md5sum。您会注意到它与Oracle site link(由Kristof上面提供)中的md5sum不匹配。
接下来,我在jdk / usr / java /的目标目录上做了一个ls,所以你可以看到它是空的。然后运行rpm安装并执行另一个ls以显示某些文件存在。
当然,这违背了使用rpm的目的,因为安装信息不会进入rpm数据库。如果我查询数据库它没有出现,并且它缺少通常安装指向“最新”和“默认”的链接
所以我猜测可能有一个可能转速不好的镜像,然后去了Oracle网站并再次下载了该文件。我给它一个不同的名字,以便我可以比较这两个文件。这一次成功了。
在下面的屏幕截图中,您可以看到这两个文件。最新的下载是我称之为jdk-7u51-linux-x86_64.rpm的下载。您可以看到md5sum显示文件不同,但在新文件中,md5与Oracle站点匹配。我删除了由失败的安装创建的目录,然后运行rpm -ivh命令并成功完成。 / usr / java目录中的ls显示所有正确的东西,查询rpm数据库显示它已安装。希望这有帮助!
答案 2 :(得分:0)
您可以使用简单的脚本来完成此操作,该脚本可以找到here
它用于Centos rpm,但是例如,您可以编辑脚本并将rpm更改为tar.gz 您还可以在下面的变量中更改版本或环境
BASE_URL="technetwork/java/javase/downloads"
BASE_URL_OUTPUT="$(curl -s -L0 http://www.oracle.com/${BASE_URL}/)"
JAVA_ENVIRONMENT="JDK"
JAVA_BASE_VERSION=8
DOWNLOAD_SITE="$(echo $BASE_URL_OUTPUT | grep -m 1 -io "${JAVA_ENVIRONMENT}${JAVA_BASE_VERSION}-downloads-[0-9]*.html" -- | tail -1)"
echo "DOWNLOAD_SITE="$DOWNLOAD_SITE
DOWNLOAD_LINK_OUTPUT="$(curl -s -L -j -H "Cookie: oraclelicense=accept-securebackup-cookie" http://www.oracle.com/${BASE_URL}/${DOWNLOAD_SITE} | grep -io "filepath.*${JAVA_ENVIRONMENT}-[${JAVA_BASE_VERSION}].*linux[-_]x64[._].*\(rpm\)" -- | cut -d '"' -f 3 | tail -1)"
echo "DOWNLOAD_LINK_OUTPUT="$DOWNLOAD_LINK_OUTPUT
curl -L -o java_rpm_packet.rpm -b "oraclelicense=a" $DOWNLOAD_LINK_OUTPUT
并使用
安装yum localinstall -y java_rpm_packet.rpm