Use of JPackage for gLite 3.1 Release
Introduction
There is standing target that
JPackage
rpms should be used where ever possible to supply java code within the gLite 3.1 release.
In particular the following software combination should be used.
- Java JDK 1.5.0_??.
- JPackage repositories 1.7 free
, 1.7 non-free
, 5.0 free
and 5.0 non-free
.
- For the exact version of Java to use it should match the
1.5
version recommended by JPackage in 1.7 SRPMS-non-free
. If, for example, this contains java-1.5.0-sun-1.5.0.12-5jpp
then it is jdk 1.5.0_12
that you want to install as described below.
Use of these repositories implies the following versions of relevant software are used.
- tomcat - tomcat5-5.5.23-7jpp.noarch.rpm
- axis - axis-1.4-2jpp.noarch.rpm
However as JPackage is updated so these packages will follow their updates of course.
Jpackage Setup
The configuration of jpackage is
documented
by jpackage but below
is summary that includes EGEE/gLite particulars.
Configuration of YUM or APT for JPackage.
- A yum configuration file should be created, say
/etc/yum.repos.d/jpackage5.0.repo
.
- A apt configuration file should be created, say
/etc/apt/sources.list
.
[jpackage5-generic]
name=JPackage 5, generic
baseurl=http://mirrors.dotsrc.org/jpackage/5.0/generic/free/
enabled=1
protect=1
gpgkey=http://www.jpackage.org/jpackage.asc
gpgcheck=1
[jpackage5-generic-nonfree]
name=JPackage 5, generic non-free
baseurl=http://mirrors.dotsrc.org/jpackage/5.0/generic/non-free/
enabled=1
protect=1
gpgkey=http://www.jpackage.org/jpackage.asc
gpgcheck=1
rpm http://mirrors.dotsrc.org jpackage/5.0/generic free non-free
If at CERN you may wish to use
linuxsoft.cern.ch
instead of
mirrors.dotsrc.org
.
Installation of GPG Key.
Install the gpg key ideally.
rpm --import http://www.jpackage.org/jpackage.asc
Install JPackage Utils
The
jpackage-utils
package is supplied within the OS release of RHEL, SL, SLC or Debian and should be installed.
yum install jpackage-utils
Installation of SUN's JDK 1.5.0.
There are three options for completing this, 2 of them very similar.
- Option 1a Take SUN's Linux self-extracting file
jdk-1_5_0_12-linux-i586.bin
and JPackage's .nosrc packages to build a JPackage's version of the RPM. Note from SUN you want to download the Linux self-extracting file and not the Linux RPM in self-extracting file.
- Option 1b If you are inside CERN on an SL*C*4 box then the packages are already available.
- If acceptable to you one of these is the recommended solution as it avoids the problems with SUN's RPM.
- Option 2 Take SUN's RPM
jdk-1_5_0_12-linux-i586.rpm.bin
- This may be consistent with what you already have but there are problems due to some imprecise properties that this RPM provides in its spec file which creates problems when using with jpackage.
Unless following the CERN only recipe download
jdk-1_5_0_12-linux-i586
for method
1a
or
jdk-1_5_0_12-linux-i586.rpm.bin
for method
2
from
SUN's web pages
. Once on this page Sun calls this version
JDK 5.0 Update 12. At
times jpackage is a release behind SUN and in which case an old version of the SUN's JDL is available.
http://java.sun.com/products/archive/
.
Option 1a: Installing JPackage's RPM of JDK.
This is described on JPackage's
nosrc
page.
The process is as follows and can be run as a non-root user.
$ mkdir -p ~/redhat/BUILD ~/redhat/SOURCES ~/redhat/SPECS ~/redhat/RPMS/i586 ~/redhat/SRPMS
$ cat <<EOF > ~/.rpmmacros
%_topdir $HOME/redhat
%packager Firstname Lastname <firstname.lastname@example.org>
EOF
$ rpm -Uvh http://mirrors.dotsrc.org/jpackage/1.7/generic/non-free/SRPMS/java-1.5.0-sun-1.5.0.12-1jpp.nosrc.rpm
$ mv jdk-1_5_0_12-linux-i586.bin ~/redhat/SOURCES/.
$ rpmbuild -ba ~/redhat/SPECS/java-1.5.0-sun.spec
# yum localinstall ~/redhat/RPMS/i586/java-1.5.0-sun-1.5.0.12-1jpp.i586.rpm
# yum localinstall ~/redhat/RPMS/i586/java-1.5.0-sun-devel-1.5.0.12-1jpp.i586.rpm
You can just put these packages in a local yum or apt repository and then install them in the
normal way. This is what CERN does effectively to offer solution 1b.
Option 1b: Installing JPackage's RPM of JDK if inside CERN.
Note that if using slC4 and inside CERN's network you can just issue.
# yum --enablerepo slc4-cernonly install java-1.5.0-sun java-1.5.0-sun-devel
Option 2: Installing SUN's RPM of JDK
Using the SUN's JDK package creates a headache though it can be used if care is taken. In particular
tomcat5
requires the package
xml-commons-jaxp-1.3-apis
however this package is configured
to
Obsolete within RPM the property
xml-commons-apis
which is provided by SUN's JDK. The
consequence is that installing
xml-commons-apis
removes SUN's JDK from your system! More
details are
here
,
there
,
else where
and
over there
.
# yum install xml-commons-jaxp-1.3-apis
If you had SUN's JDK installed it will have just been removed!
# yum localinstall jdk-1_5_0_12-linux-i586.rpm
# yum install java-1.5.0-sun-compat
Note that when ever
xml-commons-jaxp-1.3-apis
is upgraded you risk removing SUN's JDK. Please consider using
the JPackage RPM of JDK.
Continue to Install Packages,
It should now work to install furthur JPackage packages or gLite meta-packages. e.g one of the following.
# yum install glite-CE
# yaim -i -s <location of site-info.def> -m <meta-package name>
Note that if you plan to install a service requiring tomcat e.g. MON box they be aware of the tomcat user issue below.
Install tomcat
One thing to be aware of is that tomcat package adds a
tomcat user with the following in its spec file.
%preinstall
/usr/sbin/groupadd -g 91 -r tomcat 2> /dev/null || :
/usr/sbin/useradd -c "Apache Tomcat" -u 91 -g tomcat \
-s /bin/sh -r -d /usr/share/tomcat5 tomcat 2> /dev/null || :
So this adds in a username/groupname tomcat/tomcat with uid/gid 91/91. If you already have a user called tomcat then you have
nothing to do and everything will be okay, it does not matter what the uid/gid of this existing tomcat user is. However if you already
have a username or group with uid or gid 91 but a different username, e.g. tomcat4 then you have a problem that needs correcting before
you install the tomcat.
You can do one of the following.
- Add a tomcat user with a different uid/gid. Run the commands above but with a number differing from 91.
- Delete the existing user (tomcat4) and group (tomcat4).
userdel tomcat4 && groupdel tomcat4
. The RPM will then add the tomcat user.
- Modify the existing user tomcat4 to tomcat.
usermod -l tomcat tomcat && groupmod -n tomcat tomcat4
# yum install tomcat5
# yum install glite-MON
If you see an error message when tomcat5 is installed or started:
/usr/bin/build-jar-repository: error: Could not find xml-commons-apis Java extension for this JVM
/usr/bin/build-jar-repository: error: Some specified jars were not found for this jvm
Then you have opted to use SUN's JDK and have installed
xml-commons-apis
and SUN's JDK
in the wrong order. Install
xml-commons-apis
and then reinstall SUN's JDK. Avoid this completely using JPackage's JDK package.
Last page update:
AndreasUnterkircher - 2009-01-22