Le populaire WebUpd8 Team PPA n'est pas mis à jour.
Il a toujours des versions obsolètes comme 8u45.
J'ai téléchargé manuellement JDK à partir du site Oracle et l'ai remplacé.
Existe-t-il un moyen de vérifier automatiquement la version la plus récente d’Oracle Java et de la télécharger, si elle a été mise à jour?
Je vois que le problème principal est de le télécharger. J'ai regardé dans les scripts Oracle-Java8-installer
et trouvé des liens étranges à partir desquels ils le téléchargent.
Le tarball ne peut pas être téléchargé directement à partir du site Oracle sans accepter de licence. L'installateur a également vérifié cela. Mais je ne comprends pas vraiment comment accepter la licence en ligne de commande.
Ce script pourrait être ajouté à cron.
Juste au cas où le PPA n'est jamais mis à jour, ou s'il y a des retards comme celui-ci.
Voici le script basé sur @ A.B. répondre.
Ce script installe Oracle Java 8 64 bits. À chaque exécution, il vérifie la version et met à jour Java vers la dernière version disponible.
Il peut être placé sur cron.daily
ou cron.weekly
, pour vérifier les mises à jour.
#!/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
Pour le tester maintenant, vous pouvez définir CURRENT=45
dans le script.
Mais quelques améliorations mineures peuvent être apportées, comme fontconfig.
Le script peut être téléchargé à partir de github aussi.
Les demandes de tirage et les plaintes sont les bienvenues.
Le script fonctionne en conjonction avec WebUpd8 PPA . Par conséquent, installez d'abord Java par le PPA.
S'il existe une nouvelle version dans le PPA, celle-ci est installée via le gestionnaire de packages. En attendant, le script peut installer une version plus récente. Il existe une nouvelle version sur le site Web Oracle.
Téléchargez une version via wget
, par exemple:
wget --no-cookies --header \
"Cookie: oraclelicense=accept-securebackup-cookie" \
$URL
Obtenir l'URL avec (pour linux-x64
et tar.gz
)
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')
Tout en un
pour Oracle Java 8 via l'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'\
)
Explication
/downloads\['/
- Nous avons besoin de la zone downloads
/\['files'\]/
- Nous avons besoin de la zone files
/linux-x64/
- L'architecture cible
que vous pourriez adapter.
/\.tar\.gz/
- Le format du fichier
que vous pourriez adapter.
Si vous faites cela, n'oubliez pas le tar.gz
dans grep -o 'http.*\.tar\.gz'
! /demos/
- Pas de démos
#!/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
Répertoriez toutes les architectures et formats de fichiers avec cette commande:
curl -s http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html | \
awk "/downloads\['/ && ! /demos/ && /\['files'\]\['jdk/"
Exemple de sortie
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"};
Cela téléchargera automatiquement la dernière version d'Oracle Java pour l'architecture du noyau en cours d'exécution, mais la partie d'installation manque (pour le moment) ( note: dans les exemples que j'ai vérifiés la version actuelle de Java par rapport à un fichier texte personnalisé afin d'usurper la version actuelle de 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
, sera interprétée comme Java 8 Update 51 (en termes de Java versions, 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