Note: You should be logged on as slacuserid@fermilnx-v14 , e.g. chee@fermilnx-v14 when installing java patches and versions. Use the scp command to copy files across if you are not logged in to the host (scp how-to).
Basic overview
- down load the files from the java download site to /tmp. You will use gtar -C <path> or execute *.bin to put the files to the directory.
- check space availablity for each target directory by running /afs/.slac/package/java/common/install/checkQuota
- make sure you are in the shadow directory, e.g. /afs/.slac... and not /afs/slac (dot slac, not just slac)
- IF you get an executable (*.bin) then use the installJava script and you create the jdk-* subdirectory under each OS directory first, e.g. linux, solaris, etc.
- IF you get zipped tarballs (*.gz) use the installJava7 script which uses gtar -C to unpack and create/install the directories.
- change the patch variable in the install script (installJava or installJava7) to the latest patch number
- cd to the place where you downloaded all the files, e.g. /tmp on fermilnx-v14
- Make sure to change the patch number before running the script.
- Edit the install script and check that the new version names will unpack properly. Run the installJava* script.
- run the release script to deploy the new versions to the read-only disk.
- restart the test server and check that everything still works
- restart all the other servers. Use the server monitoring page to do this. If that doesn't work, logon to the machine and run the stop/start scripts.
- update the web page (see url address below)
- announce to mailing lists (see list names below)
- (optional) if you need to change the default version update javawrap script
Download sites:
Main site http://www.oracle.com/technetwork/index.html
The download url for Java version 6 (may change but currently) is
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html
download url for Java version 7
http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
Download to /tmp, the set of files that match the pattern:
Pattern | Example | AFS Directory |
---|---|---|
jdk-*-linux-i586.bin | jdk-6u26-linux-i586.bin | i386_linux |
jdk-*-linux-i586.tar.gz | jdk-7u1-linux-i586.tar.gz | i386_linux |
jdk-*-solaris-sparc.sh | jdk-6u26-solaris-sparc.sh | sun4x_55 |
jdk-*-solaris-sparc.tar.gz | jdk-7u1-solaris-sparc.tar.gz | sun4x_55 |
jdk-*-linux-x64.bin | jdk-6u26-linux-x64.bin | amd64_linux |
jdk-*-linux-x64.tar.gz | jdk-7u1-linux-x64.tar.gz | amd64_linux |
jdk-*-solaris-sparcv9.sh | jdk-6u26-solaris-sparcv9.sh | sun4x_55/lib/sparc |
jdk-*-solaris-sparc.tar.gz | jdk-7u1-solaris-sparc.tar.gz | sun4x_55 |
Make sure there is sufficient space in the target directories by running
/afs/.slac.stanford.edu/package/java/common/install/checkQuota
if not, clean up by deleting old releases in:
- /afs/.slac.stanford.edu/package/java/i386_linux2
- /afs/.slac.stanford.edu/package/java/amd64_linux
- /afs/.slac.stanford.edu/package/java/sun4x_55
Old releases should not have links to them and their release number should be several levels lower than a current release.
If you still need more space put in an afs request
Use the mkdir command to create the new directory, if needed; for example for patch 26:
cd /afs/.slac.stanford.edu/package/java/i386_linux2
mkdir jdk1.6.0_26
Target Directories - Readonly and Shadow Version
visible path = /afs/slac/package/java/directory_name
shadow path = /afs/.slac/package/java/directory_name (note the dot in the path; the ls command will not show this dir)
directory_name | afs volume of visible path | afs volume of shadow path |
---|---|---|
i386_linux | pkg.java.i386_linux2.read | pkg.java.i386_linux2 |
amd64_linux | pkg.java.amd64_linux.read | pkg.java.amd64_linux |
*sun4x_55 | pkg.java.sun4x_55.readonl | pkg.java.sun4x_55 |
*If a download release contains two files one ends up in the target directory under bin
Install the new versions
Change the patch number by editing the script installJava located in
/afs/.slac.stanford.edu/package/java/common/install/installJava
cd to /tmp where you should have downloaded all the files and execute installJava(7) from there. If using tarballs then cd to /tmp on fermilnx-v14.
Deploy the new versions
The script /afs/slac.stanford.edu/package/java/build/release is a bourne shell script that assembles the names of the volumes in the java directory that will be updated and then makes calls to the vos_release command which in turn calls vos commands to update a release. The same script is in the shadow directory but it refers to the visible path when building the package list. If you make changes after the installation you must rerun the script to pick up the changes. For example, if you change the symlink for a java version.
The tomcat script (usually in the ~glast/tomcat/scripts directory) is where the "current" version of java is specified. Tony or Max updates this script.
Once you deploy the new version you must restart the servers so they can pick up the changes. The best way is to restart the test server and see if everything is ok there. If nothing breaks then restart the other servers. The Fermi experiment has an application called Server Monitoring which gives a list of all servers and a way to start or stop the server. Use the show details link to see what version of java is on the server. Glastlnx08 is the test server so restart it first.
For other experiments that do not have this application, you must log on to each server and restart it manually.
Changing Java Versions
Update the script /afs/.slac.stanford.edu/package/java/common/bin/javawrap and set JAVAVER=<version>, e.g. JAVAVER=1.7.0
Updating the Web Page
Update the web page in the shadow directory (the visible directory is read-only).The path is /afs/.slac.stanford.edu/package/java/common/doc. Use the path plus index.html in the browser location window to view your changes. Once the code is released the web page will also be updated with the copy in the shadow directory.
If you need to make changes to the web page only then rerun the release script using common as the argument:
/afs/slac.stanford.edu/package/java/build/release common
The common directory, containing the web page index.html will be updated. View the changes on line using the url
http://www.slac.stanford.edu/comp/java/index.html
Announce via Mailing Lists
Email Address | Type | Authorization Needed | Comment |
---|---|---|---|
slac-java@slac.stanford.edu | listserv | no |
|
lcd-dev@slac.stanford.edu | listserv | need membership | ask Norm Graf to post if you are not a member of this list |
comp-change | listserv | yes | unix-admin can post so email your message to them and ask them to post it. |
Fermi datalist | campus list | yes | need to be Fermi collaborator. Post via the web url: |
Policy File
For new java versions you may also need to install a new policy file. These files
should go into a jce directory.
Policy File | Location | Download |
---|---|---|
jce-1-5 | /afs/.slac.stanford.edu/package/java/common/jce-1.5 | ? |
jce-1-6 | /afs/.slac.stanford.edu/package/java/common/jce-1.6 | http://www.oracle.com/technetwork/java/javase/downloads/index.html |
jce-1-7 | /afs/.slac.stanford.edu/package/java/common/jce-1.7 | http://www.oracle.com/technetwork/java/javase/downloads/index.html |
@sys Links, Links and PACKAGE.LINKS
The package.links file contain the list of values for @sys. Links go to a wrapper in common directory, which
magically re-direct to the appropriate binary. So, if you've created a softlink, say i386_rhel60 -> i386_linux2, then you might need to update the PACKAGE.LINKS file so that @sys will know about i386_rhel60. Every few hours a cronjob runs to pick up any new @sys names.
- cd /afs.slac.stanford.edu/package/java (the shadow directory)
- edit PACKAGE.LINKS (add the softlink to the @sys list, e.g. i386_rhel60)
- cd /afs/.slac.stanford.edu/package/build
- invoke /usr/local/bin/vos_release pkg.java
Comments
Currently Java 6 (a.k.a 1.6.0) and Java 7 (a.k.a 1.7.0) and Java 8 (aka 1.8.0) are installed centrally in
/afs/slac.stanford.edu/package/java and linked from /usr/local/bin. The installed versions are:
Java 1.6.0 -> 1.6.0_41
Java 1.7 -> 1.7.0_55
Java 1.8 -> 1.8.0_20
When invoking Java via
/usr/local/bin/java
it defaults to using Java 6, although this can be controlled by setting
setenv JAVAVER 1.7
On Feb. 25, 2013 the default version will change from Java 6 to Java 7
When making softlinks, in the old days of java 1.6* the convention was to softlink from java 1.6.0 -> <current prod version> but later in java 7 the zero was dropped to java 1.7 -> <current version> so to maintain the same naming convention point java 1.7 -> java 1.7.0 -> <current prod version> just to keep the naming convention the same as it was in java 1.6.
Date | Java Directory | Astore directory | Comments |
---|---|---|---|
12 Nov 2014 | /afs/.slac.stanford.edu/package/java/amd64_linux | /nfs/astore/g/glstore/amd64_linux_javadir.tar.gz | Back up directory so I can delete versions from the package area |
/afs/.slac.stanford.edu/package/java/i386_linux2 | /nfs/astore/g/glstore/i_386_linux2_javadir12nov2014.tar.gz | Back up directory so I can delete versions from the package area | |
/afs/.slac.stanford.edu/package/java/sun4x_55 | /nfs/astore/g/glstore/sun4x_55_javadir12nov2014.tar.gz | Back up directory so I can delete versions from the package area |