linux一键安装java_linux一键安装java脚本

linux一键安装java脚本

本文介绍的脚本一键安装java,我们有时候自己安装java,不是不会安装,就是有时候容易忘记命令,忘记jdk的安装包在哪里,这时候,您可以记住本站,一键安装脚本会为你节省很多很多时间。

时间是用在女朋友身上的是本站一向对程序员朋友的忠告

一键安装java脚本

wget http://66-ai.com/download/script-litte-prince/app/install-java.sh -O /root/install-java.sh && sh install-java.sh

上面的代码是自动安装,如果想看看install-java.sh 脚本中是什么,可以看下面的脚本:

#!/bin/bash

set -e

java_dist="/root/jdk-8u261-linux-x64.tar.gz"

default_java_dir="/usr/lib/jvm"

java_dir="$default_java_dir"

SUDO_USER=root

function usage() {

echo ""

echo "这个脚本会自动下载jdk 1.8. "

echo "Usage: "

echo "install-java.sh -f [-p ]"

echo ""

echo "-f: The jdk tar.gz file. 默认安装的是/root/jdk-8u261-linux-x64.tar.gz"

echo "-p: java默认安装在/usr/lib/jvm目录中,你可以通过-p命令切换目录"

echo "-h: 显示帮助."

echo ""

}

function confirm() {

# call with a prompt string or use a default

read -r -p "${1:-Are you sure?} [y/N] " response

case $response in

[yY][eE][sS] | [yY])

true

;;

*)

false

;;

esac

}

# Make sure the script is running as root.

if [ "$UID" -ne "0" ]; then

echo "You must be root to run $0. Try following"

echo "sudo $0"

exit 9

fi

while getopts "f:p:h" opts; do

case $opts in

f)

java_dist=${OPTARG}

;;

p)

java_dir=${OPTARG}

;;

h)

usage

exit 0

;;

\?)

usage

exit 1

;;

esac

done

if ! [ -x "$(command -v axel)" ]; then

wget http://66-ai.com/download/script-litte-prince/jdk-8u261-linux-x64.tar.gz -O /root/jdk-8u261-linux-x64.tar.gz

else

axel -n 10 -a http://66-ai.com/download/script-litte-prince/jdk-8u261-linux-x64.tar.gz -o /root/jdk-8u261-linux-x64.tar.gz

fi

if [[ ! -f $java_dist ]]; then

echo "Please specify the Java distribution file."

echo "Use -h for help."

exit 1

fi

# Validate Java Distribution

java_dist_filename=$(basename $java_dist)

if [[ ${java_dist_filename: -7} != ".tar.gz" ]]; then

echo "Java distribution must be a valid tar.gz file."

exit 1

fi

# Create the default directory if user has not specified any other path

if [[ $java_dir == $default_java_dir ]]; then

mkdir -p $java_dir

fi

#Validate java directory

if [[ ! -d $java_dir ]]; then

echo "Please specify a valid Java installation directory."

exit 1

fi

echo "Installing: $java_dist_filename"

# Check Java executable

java_exec="$(tar -tzf $java_dist | grep ^[^/]*/bin/java$ || echo "")"

if [[ -z $java_exec ]]; then

echo "Could not find \"java\" executable in the distribution. Please specify a valid Java distribution."

exit 1

fi

# JDK Directory with version

jdk_dir="$(echo $java_exec | cut -f1 -d"/")"

extracted_dirname=$java_dir"/"$jdk_dir

# Extract Java Distribution

if [[ ! -d $extracted_dirname ]]; then

echo "Extracting $java_dist to $java_dir"

tar -xof $java_dist -C $java_dir

echo "JDK is extracted to $extracted_dirname"

else

echo "WARN: JDK was not extracted to $java_dir. There is an existing directory with the name \"$jdk_dir\"."

if ! (confirm "Do you want to continue?"); then

exit 1

fi

fi

if [[ ! -f "${extracted_dirname}/bin/java" ]]; then

echo "ERROR: The path $extracted_dirname is not a valid Java installation."

exit 1

fi

# Oracle JDK: 7 to 8

java_78_dir_regex="^jdk1\.([0-9]*).*$"

# Oracle JDK / OpenJDK / AdoptOpenJDK: 9 and upwards

java_9up_dir_regex="^jdk-([0-9]*).*$"

# JDK Major Version

jdk_major_version=""

if [[ $jdk_dir =~ $java_78_dir_regex ]]; then

jdk_major_version=$(echo $jdk_dir | sed -nE "s/$java_78_dir_regex/\1/p")

else

jdk_major_version=$(echo $jdk_dir | sed -nE "s/$java_9up_dir_regex/\1/p")

fi

# Install Demos

if [[ $jdk_dir =~ $java_78_dir_regex ]]; then

# Demos are only available for Java 7 and 8

demos_dist=$(dirname $java_dist)"/"$(echo $java_dist_filename | sed 's/\.tar\.gz/-demos\0/')

fi

if [[ -f $demos_dist && ! -d $extracted_dirname/demo ]]; then

# No demo directory

if (confirm "Extract demos?"); then

echo "Extracting $demos_dist to $java_dir"

tar -xf $demos_dist -C $java_dir

fi

fi

# Install Unlimited JCE Policy (only for Oracle JDK 7 & 8)

# Java 9 and above: default JCE policy files already allow for \"unlimited\" cryptographic strengths.

unlimited_jce_policy_dist=""

if [[ $jdk_dir =~ ^jdk1\.7.* ]]; then

unlimited_jce_policy_dist="$(dirname $java_dist)/UnlimitedJCEPolicyJDK7.zip"

elif [[ $jdk_dir =~ ^jdk1\.8.* ]]; then

unlimited_jce_policy_dist="$(dirname $java_dist)/jce_policy-8.zip"

fi

if [[ -f $unlimited_jce_policy_dist ]]; then

#Check whether unzip command exsits

if ! command -v unzip >/dev/null 2>&1; then

echo "Please install unzip (apt -y install unzip)."

exit 1

fi

if (confirm "Install Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files?"); then

echo "Extracting policy jars in $unlimited_jce_policy_dist to $extracted_dirname/jre/lib/security"

unzip -j -o $unlimited_jce_policy_dist *.jar -d $extracted_dirname/jre/lib/security

fi

fi

# Run update-alternatives commands

if (confirm "Run update-alternatives commands?"); then

echo "Running update-alternatives..."

cmd="update-alternatives --install /usr/bin/java java $extracted_dirname/bin/java 10000"

declare -a commands=($(ls -1 ${extracted_dirname}/bin | grep -v ^java$))

for command in "${commands[@]}"; do

command_path=$extracted_dirname/bin/$command

if [[ -x $command_path ]]; then

cmd="$cmd --slave /usr/bin/$command $command $command_path"

fi

done

lib_path=$extracted_dirname/jre/lib/amd64/libnpjp2.so

if [[ -d "/usr/lib/mozilla/plugins/" ]] && [[ -f $lib_path ]]; then

cmd="$cmd --slave /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so $lib_path"

fi

echo $cmd

# Execute command

$cmd

update-alternatives --set java $extracted_dirname/bin/java

fi

# Create system preferences directory

java_system_prefs_dir="/etc/.java/.systemPrefs"

if [[ ! -d $java_system_prefs_dir ]]; then

if (confirm "Create Java System Prefs Directory ($java_system_prefs_dir) and change ownership to $SUDO_USER:$SUDO_USER?"); then

echo "Creating $java_system_prefs_dir"

mkdir -p $java_system_prefs_dir

chown -R $SUDO_USER:$SUDO_USER $java_system_prefs_dir

fi

fi

USER_HOME="$(getent passwd $SUDO_USER | cut -d: -f6)"

if [[ -d "$USER_HOME" ]] && (confirm "Do you want to set JAVA_HOME environment variable in $USER_HOME/.bashrc?"); then

if grep -q "export JAVA_HOME=.*" $USER_HOME/.bashrc; then

sed -i "s|export JAVA_HOME=.*|export JAVA_HOME=$extracted_dirname|" $USER_HOME/.bashrc

else

echo "export JAVA_HOME=$extracted_dirname" >>$USER_HOME/.bashrc

fi

fi

applications_dir="$USER_HOME/.local/share/applications"

create_jmc_shortcut() {

shortcut_file="$applications_dir/jmc_$jdk_major_version.desktop"

cat <<_eof_>$shortcut_file

[Desktop Entry]

Name=Java $jdk_major_version: JMC

Comment=Oracle Java Mission Control for Java $jdk_major_version

Type=Application

Exec=$extracted_dirname/bin/jmc

Icon=$extracted_dirname/lib/missioncontrol/icon.xpm

Terminal=false

_EOF_

chmod +x $shortcut_file

}

if [[ -d $applications_dir ]] && [[ -f $extracted_dirname/bin/jmc ]]; then

if (confirm "Do you want to create a desktop shortcut to JMC?"); then

create_jmc_shortcut

fi

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值