人気のある WebUpd8 Team PPA は更新されていません。
8u45などの古いバージョンがまだあります。
OracleサイトからJDKを手動でダウンロードし、置き換えました。
Oracle Java最新バージョンを自動的に確認し、更新されている場合はダウンロードする方法はありますか?
主な問題はダウンロードすることです。 Oracle-Java8-installer
スクリプトを見て、ダウンロードする奇妙なリンクを見つけました。
Tarballは、ライセンスに同意しないとOracleサイトから直接ダウンロードできません。インストーラーもチェックしました。しかし、コマンドラインからライセンスを受け入れる方法がわかりません。
このスクリプトは、cronに追加できます。
PPAが更新されない場合、またはこのような遅延がある場合に備えて。
@ A.Bに基づいたスクリプトを次に示します。回答。
このスクリプトは、Oracle Java 8 64ビットをインストールします。実行するたびに、バージョンをチェックし、Javaを利用可能な最新のものに更新します。
cron.daily
またはcron.weekly
に配置して、更新を確認できます。
#!/bin/sh
J_INSTALL_DIR=/usr/lib/jvm/Java-8-Oracle
URL=$(curl -s http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html | \
awk "/downloads\['/ && ! /demos/ && /\['files'\]/ && /linux-x64/ && /\.tar\.gz/" | \
grep -o 'http.*\.tar\.gz')
AVAILABLE=$(echo $URL | grep -o -P 'jdk-8u.{0,2}' | cut -d "u" -f 2)
CURRENT=$("$J_INSTALL_DIR"/bin/Java -version 2>&1 | awk '/version/ {print $3}' | cut -d_ -f 2 | tr -d '"')
if [ -z $CURRENT ] || [ $AVAILABLE -gt $CURRENT ]; then
cd /var/cache/Oracle-jdk8-installer
rm -f jdk-8u"$CURRENT"-linux-x64.tar.gz
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" $URL
tar -xzf jdk-8u"$AVAILABLE"-linux-x64.tar.gz
rm -rf $J_INSTALL_DIR
mv jdk1.8.0_"$AVAILABLE"/ $J_INSTALL_DIR
LATEST=$(LANG=C update-alternatives --display Java | grep ^/ | sed -e 's/.* //g' | sort -n | tail -1)
if [ -z $LATEST ]; then
LATEST=1
else
J_PATH=$(LANG=C update-alternatives --display Java | grep "priority "$LATEST"" | awk '{print $1}')
[ $J_PATH = "$J_INSTALL_DIR"/jre/bin/Java ] || LATEST=$((LATEST+1))
fi
#link JRE files
for f in $J_INSTALL_DIR/jre/bin/*; do
name=`basename $f`;
if [ ! -f "/usr/bin/$name" -o -L "/usr/bin/$name" ]; then #some files, like jvisualvm might not be links
if [ -f "$J_INSTALL_DIR/man/man1/$name.1.gz" ]; then
update-alternatives --install /usr/bin/$name $name $J_INSTALL_DIR/jre/bin/$name $LATEST --slave /usr/share/man/man1/$name.1.gz $name.1.gz $J_INSTALL_DIR/man/man1/$name.1.gz
fi
else
update-alternatives --install /usr/bin/$name $name $J_INSTALL_DIR/jre/bin/$name $LATEST
fi
done
echo "Oracle Java 8 installed"
fi
if [ $AVAILABLE -eq $CURRENT ]; then
echo "Java is up to date"
fi
今すぐテストするには、スクリプトでCURRENT=45
を設定します。
ただし、fontconfigのように、いくつかの小さな改善を行うことができます。
スクリプトは github からもダウンロードできます。
プルリクエストや苦情は大歓迎です。
このスクリプトは、 WebUpd8 PPA と連動します。したがって、最初にPPAによってJavaをインストールしてください。
PPAに新しいバージョンがある場合、これはパッケージマネージャーを介してインストールされます。それまでの間、スクリプトは新しいバージョンをインストールできます。OracleWebサイトには新しいバージョンがあります。
wget
からバージョンをダウンロードします。例:
wget --no-cookies --header \
"Cookie: oraclelicense=accept-securebackup-cookie" \
$URL
(linux-x64
およびtar.gz
)でURLを取得します
URL=$(curl -s http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html | \
awk "/downloads\['/ && ! /demos/ && /\['files'\]/ && /linux-x64/ && /\.tar\.gz/" | \
grep -o 'http.*\.tar\.gz')
オールインワン
forOracle Java 8 URL経由http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" \
$(curl -s http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html | \
awk "/downloads\['/ && ! /demos/ && /\['files'\]/ && /linux-x64/ && /\.tar\.gz/" | \
grep -o 'http.*\.tar\.gz'\
)
説明
/downloads\['/
– downloads
エリアが必要です
/\['files'\]/
– files
エリアが必要です
/linux-x64/
–ターゲットアーキテクチャ
あなたが適応できること。
/\.tar\.gz/
–ファイル形式
あなたが適応できること。
その場合は、tar.gz
のgrep -o 'http.*\.tar\.gz'
を忘れないでください
! /demos/
–デモなし
#!/bin/bash
major_version="8"
target="/usr/lib/jvm/Java-8-Oracle"
Arch="linux-x64"
# This URL is for the major version 8.
download_page="http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html"
download_url=$(curl -s "$download_page" | \
awk "/downloads\['/ && ! /demos/ && /\['files'\]/ && /$Arch/ && /\.tar\.gz/" | \
grep -o 'http.*\.tar\.gz')
server=$(awk -Fjdk-"$major_version"u '{split($2,a,/-/); print a[1]}' <<< "$download_url")
local=$("$target"/bin/Java -version 2>&1 | awk -F_ '/Java version/ {gsub(/"/,""); print $2}')
[ "$local" == "" ] && local=0
filename=$(awk -F'\/' '{print $NF}' <<< "$download_url")
[ "$server" -gt "$local" ] && wget -q -P "/tmp" --no-cookies --show-progress --header \
"Cookie: oraclelicense=accept-securebackup-cookie" \
"$download_url"
if [ -f "$filename" ]; then
mkdir -p "$target"
tar -xf "$filename" --strip 1 -C "$target"
fi
exit 0
次のコマンドを使用して、すべてのアーキテクチャとファイル形式をリストします。
curl -s http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html | \
awk "/downloads\['/ && ! /demos/ && /\['files'\]\['jdk/"
サンプル出力
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-linux-i586.rpm'] = { "title":"Linux x86", "size":"146.9 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-linux-i586.rpm"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-linux-i586.tar.gz'] = { "title":"Linux x86", "size":"166.95 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-linux-i586.tar.gz"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-linux-x64.rpm'] = { "title":"Linux x64", "size":"145.19 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-linux-x64.rpm"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-linux-x64.tar.gz'] = { "title":"Linux x64", "size":"165.25 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-linux-x64.tar.gz"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-macosx-x64.dmg'] = { "title":"Mac OS X x64", "size":"222.09 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-macosx-x64.dmg"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-solaris-sparcv9.tar.Z'] = { "title":"Solaris SPARC 64-bit (SVR4 package)", "size":"139.36 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-solaris-sparcv9.tar.Z"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-solaris-sparcv9.tar.gz'] = { "title":"Solaris SPARC 64-bit", "size":"98.8 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-solaris-sparcv9.tar.gz"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-solaris-x64.tar.Z'] = { "title":"Solaris x64 (SVR4 package)", "size":"139.79 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-solaris-x64.tar.Z"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-solaris-x64.tar.gz'] = { "title":"Solaris x64", "size":"96.45 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-solaris-x64.tar.gz"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-windows-i586.exe'] = { "title":"Windows x86", "size":"176.02 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-windows-i586.exe"};
downloads['jdk-8u51-oth-JPR']['files']['jdk-8u51-windows-x64.exe'] = { "title":"Windows x64", "size":"180.51 MB","filepath":"http://download.Oracle.com/otn-pub/Java/jdk/8u51-b16/jdk-8u51-windows-x64.exe"};
これにより、現在実行中のカーネルアーキテクチャの最新のOracle Javaバージョンが自動的にダウンロードされますが、現在のところインストール部分がありません(注:私がチェックした例では実際のJavaバージョンを偽装するためのカスタムテキストファイルに対する現在のJavaバージョン)
JavaUpdater.sh
#!/bin/bash
echo 'Checking for a new Java Version...'
kern_Arch=$(uname -r | sed 's/.*-\(.*\)/\1/')
if [ "$kern_Arch" = AMD64 ]; then
Java_ver=' x64'
fi
current_version=$(Java -version 2>&1 >/dev/null | sed -n '1s/.*"\([^"]*\)"/\1/p')
latest_version_url=$(curl https://www.Java.com/en/download/manual.jsp 2>/dev/null | grep -Po -m 1 "href=\"\K[^\"]*(?=.*Linux${Java_ver} en JRE)"
)
latest_version=$(curl $latest_version_url 2>/dev/null | sed -n 's/.*File=jre-\([0-9]\)u\([0-9]\{2\}\).*/1.\1.0_\2/p')
if [ "$current_version" = "$latest_version" ]; then
echo 'No new Java version available. Aborting.'
exit 1
fi
read -n 1 -p "A new Java version is available (${latest_version})! Would you like to download it (y)? " download
echo
if [ "$download" = y ]; then
filename="$(curl "$latest_version_url" 2> /dev/null | sed -n 's/.*File=\([^&]*\).*/\1/p')"
wget -q -O "$filename" --show-progress "$latest_version_url"
echo 'Download completed.'
exit 0
fi
exit 1
jre-8u51-linux-x64.tar.gz
という名前のダウンロード可能な最新の64ビットバージョンは、Java 8 Update 51として解釈されます(Javaバージョンに関しては、1.8.0_51
);user@debian ~/tmp/JavaDownloader
% tree
.
├── current_version.txt
└── JavaUpdater.sh
0 directories, 2 files
user@debian ~/tmp/JavaDownloader
% cat current_version.txt
Java version "1.8.0_50"
Java(TM) SE Runtime Environment (build 1.8.0_50-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.50-b03, mixed mode)
user@debian ~/tmp/JavaDownloader
% bash JavaUpdater.sh
Checking for a new Java Version...
A new Java version is available (1.8.0_51)! Would you like to download it (y)? y
jre-8u51-linux-x64. 100%[=====================>] 60.90M 1.21MB/s in 51s
Download completed.
user@debian ~/tmp/JavaDownloader
% tree
.
├── current_version.txt
├── JavaUpdater.sh
└── jre-8u51-linux-x64.tar.gz
0 directories, 3 files
user@debian ~/tmp/JavaDownloader
% tree
.
├── current_version.txt
├── JavaUpdater.sh
└── jre-8u51-linux-x64.tar.gz
0 directories, 3 files
user@debian ~/tmp/JavaDownloader
% cat current_version.txt
Java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
user@debian ~/tmp/JavaDownloader
% bash JavaUpdater.sh
Checking for a new Java Version...
No new Java version available. Aborting.
user@debian ~/tmp/JavaDownloader
% tree
.
├── current_version.txt
├── JavaUpdater.sh
└── jre-8u51-linux-x64.tar.gz
0 directories, 3 files